B
    H/\                 @   sF  d Z ddlmZ ddlZdddddd	d
gZdgZejd dkrHddlZn ddl	ZdZ
eddddddg7 ZejZddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZ ddlmZ ddlmZ d#ddZd$dd	ZG dd deZeZdd Ze edre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_importNallocate_lock	get_identexitLockType
stack_sizestart_new_thread_localerror   _threadRLockTIMEOUT_MAXallocateexit_threadinterrupt_main	start_new)PY3)PYPY)copy_globals)
getcurrentGreenletExit)Greenlet)BoundedSemaphore)localc             C   s   | d krt  } t| S )N)r   id)Zgr r   ,lib/python3.7/site-packages/gevent/thread.pyr   ,   s    r   c             C   s4   |d k	rt j| f||}nt j| f| }t|S )N)r   Zspawnr   )ZfunctionargskwargsZgreenletr   r   r   r   2   s    c               @   s2   e Zd ZejZerereZer.ej	Z
dddZdS )r   Tc             C   sX   |dkrd }|s |d k	r t d|d k	rJ|dk r8t d|| jkrJtdt| ||S )Nr    z/can't specify a timeout for a non-blocking callr   z'timeout value must be strictly positiveztimeout value is too large)
ValueError_TIMEOUT_MAXOverflowErrorr   acquire)selfZblockingZtimeoutr   r   r   r$   E   s    
zLockType.acquireN)Tr    )__name__
__module____qualname__
__thread__r
   Z_OVER_RELEASE_ERRORr   r   RuntimeErrorr   r"   r$   r   r   r   r   r   :   s   c               C   s   t d S )N)r   r   r   r   r   r   Y   s    c             C   s$   | d krt  S | t  kr t | S d S )N)_original_stack_size)sizer   r   r   r   `   s    
T)Z
only_namesZignore_missing_names)N)r   N)N)&__doc__Z
__future__r   sysZ__implements__Z__imports__version_infoZthreadr)   r   Z
__target__r
   Zgevent._compatr   r   Zgevent._utilr   Z
gevent.hubr   r   Zgevent.greenletr   Zgevent.lockr   Zgevent.localr   r	   r   r   r   r   r   hasattrr   r+   removeglobals__all__r   r   r   r   <module>
   sT   



