ó
    öÞ j $  ã                  ó¸  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	J
r
  SSKJrJr  SSKrSSKJr  SSKJrJrJrJr  SS	 jr\" 5       rSS
 jrSS jr\" S\S9rSS jr\R6                        SS j5       r " S S5      r\R<                  " 5       rSS jr S S jr!        S!S jr"\"r#SS jr$S"S jr%S#S jr&\R6                  S$S j5       r'SS jr(g)%z«
**Deprecated** primitives to keep context global but thread (and greenlet)
local.

See `thread-local`, but please use :doc:`contextvars` instead.

.. deprecated:: 22.1.0
é    )ÚannotationsN)Ú	GeneratorÚIterator)ÚAnyÚTypeVaré   )ÚBoundLoggerLazyProxy)ÚBindableLoggerÚContextÚ	EventDictÚWrappedLoggerc                 óD   •  SSK Jn   U $ ! [         a    SSKJn  Us $ f = f)z[
Return a dict-like threadlocal storage depending on whether we run with
greenlets or not.
r   )ÚGreenThreadLocalr   )Úlocal)Ú
_greenletsr   ÚImportErrorÚ	threadingr   )r   r   s     ÚO/var/www/html/gaurav/venv/lib/python3.13/site-packages/structlog/threadlocal.pyÚ_determine_threadlocalr       s+   € ð
Ý0ð Ðøô ó Ý#àŠðús   ‚
 Šžc                 ó<  • Sn [         R                  " [        5         [        R                  " 5       nUR
                  R
                  R                  S   n SSS5        U S:X  a  gSnU S:X  a  US-  n[        R                  " S[        US	9  g! , (       d  f       N== f)
z9
Raise a warning with best-effort stacklevel adjustment.
Ú Ú__name__Nzstructlog.threadlocalé   Ú
contextlibé   zR`structlog.threadlocal` is deprecated, please use `structlog.contextvars` instead.)Ú
stacklevel)
r   ÚsuppressÚ	ExceptionÚsysÚ	_getframeÚf_backÚ	f_globalsÚwarningsÚwarnÚDeprecationWarning)ÚcallsiteÚfr   s      r   Ú_deprecatedr(   2   sˆ   € ð €Hä	×	Ò	œYÕ	'Ü�MŠM‹OˆØ—8‘8—?‘?×,Ñ,Øñ
ˆ÷ 
(ð Ð*Ó*Øà€Jð �<ÓØ�a‰ˆ
ä‡M‚Mð	+äØó	÷# 
(Õ	'ús   �9BÂ
Bc                ó¦   • [        5         [        S[        [        R                  " 5       5      -   [
        40 5      n[        5       Ul        Xl        U$ )zÉ
Wrap a dict-like class and return the resulting class.

The wrapped class and used to keep global in the current thread.

Args:
    dict_class: Class used for keeping context.

.. deprecated:: 22.1.0
zWrappedDict-)	r(   ÚtypeÚstrÚuuidÚuuid4Ú_ThreadLocalDictWrapperÚThreadLocalÚ_tlÚ_dict_class)Ú
dict_classÚWrappeds     r   Ú	wrap_dictr4   Q   sD   € ô „MÜØœœTŸZšZ›\Ó*Ñ*Ô-DÐ,FÈó€Gô “-€G„KØ$Ôà€Nó    ÚTLLogger)Úboundc                óf  • [        5         [        U [        5      (       a  U R                  5       n  U R                  R
                  R                  R                  U R                  R                  5      nU R                  U R                  U R                  0 S9nXl        U$ ! [         a    U s $ f = f)a  
Extract the context from a thread local logger into an immutable logger.

Args:
    logger (structlog.typing.BindableLogger):
        A logger with *possibly* thread local state.

Returns:
    :class:`~structlog.BoundLogger` with an immutable context.

.. deprecated:: 22.1.0
)Ú
processorsÚcontext)r(   Ú
isinstancer	   ÚbindÚ_contextr0   Údict_Ú	__class__Ú_dictÚ_loggerÚ_processorsÚAttributeError)ÚloggerÚctxÚbls      r   Úas_immutablerG   i   sž   € ô „MÜ�&Ô.×/Ñ/Ø—‘“ˆðØ�o‰o×!Ñ!×'Ñ'×1Ñ1Ø�O‰O×!Ñ!ó
ˆð ×ÑØ�N‰NØ×)Ñ)Øð ð 
ˆð
 Œàˆ	øÜó ØŠðús   ±A/B! Â!B0Â/B0c              +  óœ  #   • [        5         [        U [        5      (       a  U R                  5       n [	        U 5      R
                  n U R                  " S0 UD6v •  U R
                  R                  5         U R
                  R                  U5        g! U R
                  R                  5         U R
                  R                  U5        f = f7f)zê
Bind *tmp_values* to *logger* & memorize current state. Rewind afterwards.

Only works with `structlog.threadlocal.wrap_dict`-based contexts.
Use :func:`~structlog.threadlocal.bound_threadlocal` for new code.

.. deprecated:: 22.1.0
N© )r(   r;   r	   r<   rG   r=   ÚclearÚupdate)rD   Ú
tmp_valuesÚsaveds      r   Útmp_bindrN   Š   s“   é € ô „MÜ�&Ô.×/Ñ/Ø—‘“ˆä˜Ó ×)Ñ)€Eð&Ø�kŠkÑ'˜JÑ'Ò'à�‰×ÑÔØ�‰×Ñ˜uÕ%øð 	�‰×ÑÔØ�‰×Ñ˜uÕ%üs   ‚ACÁB Á6CÂ7C	Ã	Cc                  óœ   • \ rS rSr% SrS\S'   S\S'   SS jr\SS j5       rSS	 jr	SS
 jr
SS jrSS jrSS jrSS jrSS jrSS jrSrg)r.   é¢   a1  
Wrap a dict-like class and keep the state *global* but *thread-local*.

Attempts to re-initialize only updates the wrapped dictionary.

Useful for short-lived threaded applications like requests in web app.

Use :func:`wrap` to instantiate and use
:func:`structlog.BoundLogger.new` to clear the context.
r   r0   ztype[dict[str, Any]]r1   c                óÀ   • U(       a;  [        US   U R                  5      (       a  U R                  R                  " S0 UD6  gU R                  R                  " U0 UD6  g)z1
We cheat.  A context dict gets never recreated.
r   NrI   )r;   r?   r@   rK   )ÚselfÚargsÚkws      r   Ú__init__Ú _ThreadLocalDictWrapper.__init__±   sI   € ö ”J˜t A™w¨¯©×7Ñ7ð �J‰J×ÒÑ# Ó#à�J‰J×Ò˜tÐ* rÓ*r5   c                ó
  •  U R                   R                  R                  $ ! [         aV    U R                   R	                  5       U R                   R                  l        U R                   R                  R                  s $ f = f)z2
Return or create and return the current context.
)r?   r0   r>   rC   r1   ©rR   s    r   r@   Ú_ThreadLocalDictWrapper._dict¼   sa   € ð
	,Ø—>‘>×%Ñ%×+Ñ+Ð+øÜó 	,Ø'+§~¡~×'AÑ'AÓ'CˆD�N‰N×ÑÔ$à—>‘>×%Ñ%×+Ñ+Ò+ð	,ús   ‚" ¢ABÂBc                óR   • SU R                   R                   SU R                  < S3$ )NÚ<Ú(z)>)r?   r   r@   rX   s    r   Ú__repr__Ú _ThreadLocalDictWrapper.__repr__È   s&   € Ø�4—>‘>×*Ñ*Ð+¨1¨T¯Z©Z©N¸"Ð=Ð=r5   c                ó4   • U R                   UR                   :H  $ ©N)r?   ©rR   Úothers     r   Ú__eq__Ú_ThreadLocalDictWrapper.__eq__Ë   s   € à�~‰~ §¡Ñ0Ð0r5   c                ó.   • U R                  U5      (       + $ r`   )rc   ra   s     r   Ú__ne__Ú_ThreadLocalDictWrapper.__ne__Ï   s   € Ø—;‘;˜uÓ%Ô%Ð%r5   c                ó6   • U R                   R                  5       $ r`   )r@   Ú__iter__rX   s    r   ri   Ú _ThreadLocalDictWrapper.__iter__Ô   s   € Ø�z‰z×"Ñ"Ó$Ð$r5   c                ó    • X R                   U'   g r`   )r@   )rR   ÚkeyÚvalues      r   Ú__setitem__Ú#_ThreadLocalDictWrapper.__setitem__×   s   € Ø�
‰
�3Šr5   c                ó:   • U R                   R                  U5        g r`   )r@   Ú__delitem__)rR   rl   s     r   rq   Ú#_ThreadLocalDictWrapper.__delitem__Ú   s   € Ø�
‰
×Ñ˜sÕ#r5   c                ó6   • U R                   R                  5       $ r`   )r@   Ú__len__rX   s    r   rt   Ú_ThreadLocalDictWrapper.__len__Ý   s   € Ø�z‰z×!Ñ!Ó#Ð#r5   c                ó.   • [        U R                  U5      $ r`   )Úgetattrr@   )rR   Únames     r   Ú__getattr__Ú#_ThreadLocalDictWrapper.__getattr__à   s   € Ü�t—z‘z 4Ó(Ð(r5   rI   N)rS   r   rT   r   ÚreturnÚNone©r{   r   )r{   r+   )rb   Úobjectr{   Úbool)r{   zIterator[str])rl   r+   rm   r   r{   r|   )rl   r+   r{   r|   )r{   Úint)rx   r+   r{   r   )r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__rU   Úpropertyr@   r]   rc   rf   ri   rn   rq   rt   ry   Ú__static_attributes__rI   r5   r   r.   r.   ¢   sU   ‡ ñ	ð 
ƒHØ%Ó%ô	+ð ó	,ó ð	,ô>ô1ô&ô
%ô ô$ô$÷)r5   r.   c                 óF   • [        5         [        5       R                  5       $ )ze
Return a copy of the current thread-local context.

.. versionadded:: 21.2.0
.. deprecated:: 22.1.0
)r(   Ú_get_contextÚcopyrI   r5   r   Úget_threadlocalr‹   ç   s   € ô „MÜ‹>×ÑÓ Ð r5   c                ó”   • [        5         [        5       R                  5       nUR                  [        R
                  " U 5      5        U$ )z‘
Return a copy of the current thread-local context merged with the context
from *bound_logger*.

.. versionadded:: 21.2.0
.. deprecated:: 22.1.0
)r(   r‰   rŠ   rK   Ú	structlogÚget_context)Úbound_loggerrE   s     r   Úget_merged_threadlocalr�   ò   s5   € ô „MÜ
‹.×
Ñ
Ó
€CØ‡J�JŒy×$Ò$ \Ó2Ô3à€Jr5   c                ól   • [        5         [        5       R                  5       nUR                  U5        U$ )aŒ  
A processor that merges in a global (thread-local) context.

Use this as your first processor in :func:`structlog.configure` to ensure
thread-local context is included in all log calls.

.. versionadded:: 19.2.0

.. versionchanged:: 20.1.0
   This function used to be called ``merge_threadlocal_context`` and that
   name is still kept around for backward compatibility.

.. deprecated:: 22.1.0
)r(   r‰   rŠ   rK   )rD   Úmethod_nameÚ
event_dictr:   s       r   Úmerge_threadlocalr”     s*   € ô" „MÜ‹n×!Ñ!Ó#€GØ‡N�N�:Ôà€Nr5   c                 ó.   • [        5         0 [        l        g)zª
Clear the thread-local context.

The typical use-case for this function is to invoke it early in
request-handling code.

.. versionadded:: 19.2.0
.. deprecated:: 22.1.0
N)r(   Ú_CONTEXTr:   rI   r5   r   Úclear_threadlocalr—     s   € ô „MØ„HÕr5   c                 óJ   • [        5         [        5       R                  U 5        g)zÖ
Put keys and values into the thread-local context.

Use this instead of :func:`~structlog.BoundLogger.bind` when you want some
context to be global (thread-local).

.. versionadded:: 19.2.0
.. deprecated:: 22.1.0
N)r(   r‰   rK   )rT   s    r   Úbind_threadlocalr™   +  s   € ô „MÜƒN×Ñ˜"Õr5   c                 ób   • [        5         [        5       nU  H  nUR                  US5        M     g)z|
Tries to remove bound *keys* from threadlocal logging context if present.

.. versionadded:: 20.1.0
.. deprecated:: 22.1.0
N)r(   r‰   Úpop)Úkeysr:   rl   s      r   Úunbind_threadlocalr�   9  s(   € ô „MÜ‹n€GÛˆØ�‰�C˜Öò r5   c               +  óP  #   • [        5         [        5       nUR                  5       U R                  5       -   Vs0 sH  o"X   _M	     nn[        S0 U D6   Sv •  [	        U R                  5       6   [        S0 UD6  gs  snf ! [	        U R                  5       6   [        S0 UD6  f = f7f)zÒ
Bind *kw* to the current thread-local context. Unbind or restore *kw*
afterwards. Do **not** affect other keys.

Can be used as a context manager or decorator.

.. versionadded:: 21.4.0
.. deprecated:: 22.1.0
NrI   )r(   r‹   rœ   r™   r�   )rT   r:   ÚkrM   s       r   Úbound_threadlocalr    F  s�   é € ô „MÜÓ€GØ$+§L¡L£N°R·W±W³YÒ$>Ó?Ñ$>˜q�‘
Š]Ñ$>€EÐ?äÑ�rÒð"Ûä˜BŸG™G›IÑ&ÜÑ!˜5Ó!ùò @øô 	˜BŸG™G›IÑ&ÜÑ!˜5Ó!üs(   ‚8B&ºA;ÁB&ÁB  Á'B&Â #B#Â#B&c                 óz   •  [         R                  $ ! [         a    0 [         l        [         R                  s $ f = fr`   )r–   r:   rC   rI   r5   r   r‰   r‰   ]  s6   € ð Ü×ÑÐøÜó  ØŒÔä×ÑÒð ús   ‚ ’%:¹:)r{   z	type[Any])r{   r|   )r2   útype[Context]r{   r¢   )rD   r6   r{   r6   )rD   r6   rL   r   r{   zGenerator[TLLogger, None, None]r}   )r�   r
   r{   r   )rD   r   r’   r+   r“   r   r{   r   )rT   r   r{   r|   )rœ   r+   r{   r|   )rT   r   r{   zGenerator[None, None, None]))r„   Ú
__future__r   r   r   r   r,   r#   Úcollections.abcr   r   Útypingr   r   r�   Ú_configr	   r
   r   r   r   r   r/   r(   r4   r6   rG   ÚcontextmanagerrN   r.   r   r–   r‹   r�   r”   Úmerge_threadlocal_contextr—   r™   r�   r    r‰   rI   r5   r   Ú<module>r©      s  ðñõ #ã Û 
Û Û Û ç /ß ã å )ß EÓ Eôñ %Ó&€ôô>ñ* �: ^Ñ4€ôðB ×Ñð&Øð&Ø$'ð&à$ó&ó ð&÷.?)ñ ?)ðD �?Š?Ó€ô!ôðØðØ(+ðØ9Bðàôð2 .Ð ôôô
ð ×Ñó"ó ð"õ, r5   