o
    e                     @   sd  d Z ddlmZ g dZdgZddlZdZeg d7 Zed e	ed	r*ed	 ej
Z
dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ e	edrsed d#ddZd$ddZG dd deZ e Z!dd Z"e	edrej#Z$d#ddZ#ne%d eee& ed d!Zee Z'e'%d" dS )%aK  
Implementation of the standard :mod:`thread` module that spawns greenlets.

.. note::

    This module is a helper for :mod:`gevent.monkey` and is not
    intended to be used directly. For spawning greenlets in your
    applications, prefer higher level constructs like
    :class:`gevent.Greenlet` class or :func:`gevent.spawn`.
    )absolute_import)allocate_lock	get_identexitLockType
stack_sizestart_new_thread_localerrorN_thread)TIMEOUT_MAXallocateexit_threadinterrupt_main	start_newget_native_idZdaemon_threads_allowed)PYPY)copy_globals)
getcurrentGreenletExit)sleep)get_hub_if_exists)Greenlet)BoundedSemaphore)local)LoopExitRLockc                 C   s   | d u rt  } t| S N)r   id)gr r!   =D:\Projects\ConvertPro\env\Lib\site-packages\gevent/thread.pyr   A   s   r   r!   c                 C   sB   |d urt j| g|R i |}t|S t j| g|R  }t|S r   )r   Zspawnr   )functionargskwargsZgreenletr!   r!   r"   r   G   s
   r   c                   @   s*   e Zd ZejZereZejZ	dddZ
dS )r   Tc                 C   s   |dkrd }|s|d urt d|d ur%|dk rt d|| jkr%tdz	t| ||}W n ty<   |r8 d}Y nw |sJ|sJt t urJt  |S )Nr&   z/can't specify a timeout for a non-blocking callr   z'timeout value must be strictly positiveztimeout value is too largeF)	
ValueError_TIMEOUT_MAXOverflowErrorr   acquirer   r   r   r   )selfblockingtimeoutZacquiredr!   r!   r"   r*   Z   s&   	
	
zLockType.acquireN)Tr&   )__name__
__module____qualname__
__thread__r
   Z_OVER_RELEASE_ERRORr   RuntimeErrorr   r(   r*   r!   r!   r!   r"   r   O   s    r   c                   C   s   t r   r   r!   r!   r!   r"   r      s   r   r   c                 C   s$   | d u rt  S | t  krt | S d S r   )_original_stack_size)sizer!   r!   r"   r      s
   
T)Z
only_namesZignore_missing_namesr	   r   )r!   N)(__doc__
__future__r   Z__implements__Z__imports__r   r1   Z
__target__appendhasattrr
   Zgevent._compatr   Zgevent._utilr   Z
gevent.hubr   r   r   Zgevent._hub_localr   Zgevent.greenletr   Zgevent.lockr   Zgevent.localr   r	   Zgevent.exceptionsr   r   r   r   r   r   r   r3   removeglobals__all__r!   r!   r!   r"   <module>   sL    








;

