o
    BZh                     @  sZ   d dl mZ d dlZd dlZd dlZd dlZdddddZdddZe	 Z
dddZdS )    )annotationsN)sourcemsgstrcategoryt.Any
stacklevelintr   returnNonec                C  s   t j| |||d dS )zLike warnings.warn(), but category and stacklevel are required.

    You pretty much never want the default stacklevel of 1, so this helps
    encourage setting it explicitly.)r   r   r   N)warningswarn)r   r   r   r    r   O/var/www/html/lang_env/lib/python3.10/site-packages/traitlets/utils/warnings.pyr   	   s   r   methodclsmethod_namec              
   C  s   |j  d| d| }t|D ]}||jv r|} nq|jddd }||f}t|s/dS zt| p6d}t| d p?d}	W n  t	t
fya }
 zt|d|
  tdd	 W Y d}
~
dS d}
~
ww t|t||	 dS )
zShow deprecation warning about a magic method definition.

    Uses warn_explicit to bind warning to method definition instead of triggering code,
    which isn't relevant.
    .z! is deprecated in traitlets 4.1:    r   Nz	<unknown>z
(inspection failed) %s   )r   )__name__inspectgetmro__dict__
__module__splitshould_warngetsourcefilegetsourcelinesOSError	TypeErrorr   DeprecationWarningr   warn_explicit)r   r   r   r   Zwarn_msgparentpackage_namekeyfnamelinenoer   r   r   deprecated_method   s,   

r)   r%   boolc                 C  s6   t jd}|r|dkrdS | tvrt|  dS dS )zZAdd our own checks for too many deprecation warnings.

    Limit to once per package.
    ZTRAITLETS_ALL_DEPRECATIONS0TF)osenvironget_deprecations_shownadd)r%   Zenv_flagr   r   r   r   3   s   
r   )
r   r   r   r   r   r	   r   r   r
   r   )
r   r   r   r   r   r   r   r   r
   r   )r%   r   r
   r*   )
__future__r   r   r,   typingtr   r   r)   setr/   r   r   r   r   r   <module>   s    
