
    ii                     F    d Z ddlZd
dZd Zd Z	 	 	 	 	 	 ddZd Zd	 ZdS )z2
Utilities used in patching.

Internal use only.

    Nc                 6    ddl m} || _         ||            d S )Nr   )notify_and_call_entry_points)gevent.eventsr   	_warnings)eventr   r   s      >/usr/local/lib/python3.11/dist-packages/gevent/monkey/_util.py_notify_patchr	      s2    ::::::EO  '''''    c                 @     ddl m}  |            fd            }|S )Nr   )wrapsc                  :    ddl m} 	  | i |S # |$ r Y dS w xY w)Nr   )
DoNotPatchF)r   r   )argskwargsr   funcs      r   ignoresz$_ignores_DoNotPatch.<locals>.ignores   sQ    ,,,,,,	4(((( 	 	 	55	s    )	functoolsr   )r   r   r   s   `  r   _ignores_DoNotPatchr      sG    
U4[[    [ Nr
   c                     t          t          d| z             |           }t          |d|           }t          |          }|||fS )z
    Test that the source and target modules for *name* are
    available and return them.

    :raise ImportError: If the source or target cannot be imported.
    :return: The tuple ``(gevent_module, target_module, target_module_name)``
    zgevent.
__target__)getattr
__import__)namegevent_moduletarget_module_nametarget_modules       r   _check_availabilityr       sN     Jy4'788$??M dCC122M-);;;r
   Tc           
      J   ddl m} t          |           \  }}	}
 ||	|||||||           t          |dd          }ddlm} |D ]Z}t          j                            |          }|7||	ur3|	                    |d             |||||ddd           ||
         ||<   [||	fS )	N   )patch_module)itemsr   _patch_kwargs_notify_will_subscribers_notify_did_subscribers_call_hooks__alternate_targets__ )savedF)r!   r   r#   r$   r%   )
apir    r   r   _stater(   sysmodulesgetpop)r   r!   r   r"   r#   r$   r%   r    r   r   r   alternate_namesr(   alternate_namealternate_modules                  r   _patch_moduler2   1   s    "!!!!!7J47P7P4M="4LU$M*B)@(	* * * * m-DbIIO) 	> 	>;??>::',<M,Q,QIInd+++L)=#,2716%*	, , , ,
 %**<$=E.!-''r
   c                 X    |t          | g           d S |                    |            d S N)_process_warningsappend)messager   s     r   _queue_warningr8   [   s:     7)$$$$$!!!!!r
   c                 T    dd l }ddlm} | D ]}|                    ||d           d S )Nr   r   )MonkeyPatchWarning   )
stacklevel)warnings_errorsr:   warn)r   r=   r:   warnings       r   r5   r5   e   sV    OOO++++++ A Ag1a@@@@A Ar
   r4   )NNNTTT)__doc__r+   r	   r   r   r2   r8   r5   r'   r
   r   <module>rB      s     


( ( ( (  < < <$   $+/*."'( '( '( '(T" " "A A A A Ar
   