o
    0׾g                     @   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_id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"   W/var/www/html/backend_erp/backend_erp_env/lib/python3.10/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   spawnr   )functionargskwargs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timeoutacquiredr"   r"   r#   r-   Z   s&   	
	
zLockType.acquireN)Tr)   )__name__
__module____qualname__
__thread__r
   _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)
only_namesignore_missing_namesr	   r   )r"   N)(__doc__
__future__r   __implements____imports__r   r5   
__target__appendhasattrr
   gevent._compatr   gevent._utilr   
gevent.hubr   r   r   gevent._hub_localr   gevent.greenletr   gevent.lockr   gevent.localr   r	   gevent.exceptionsr   r   r   r   r   r   r   r8   removeglobals__all__r"   r"   r"   r#   <module>   sL    








;

