
    ,h.                    h   S r SSKJr  SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SS	KJ
r
  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \" S\S9r\" SSS9r S'           S(S jjr S)         S*S jjr  S)           S+S jjr S,       S-S jjr    S.           S/S  jjr      S0S! jr  S'       S1S" jjr!S2S# jr"S3S$ jr# S'             S4S% jjr$  S5             S6S& jjr%g)7zSHelpers related to deprecation of functions, methods, classes, other
functionality.    )annotationsN)Any)Callable)Dict)Match)Optional)Sequence)Set)Tuple)Type)TypeVar)Union   )compat)_hash_limit_string)_warnings_warn)	decorator)inject_docstring_text)inject_param_text   )exc_T)bound_FzCallable[..., Any]c                4    U" XS9nXl         [        XSS-   S9  g )Ncoder   
stacklevel)deprecated_sincer   )msgversiontype_r   r   warns         T/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/util/deprecations.py_warn_with_versionr&   *   s       D#4N3    c                6    [        X[        R                  X#S9  g )Nr   )r&   r   SADeprecationWarning)r!   r"   r   r   s       r%   warn_deprecatedr*   7   s     c..
r'   c                ^    U(       a  [        U SU5      n [        X[        R                  X4S9  g)z`Issue a deprecation warning with a parameterized string,
limiting the number of registrations.


   r   N)r   r&   r   r)   )r!   argsr"   r   r   s        r%   warn_deprecated_limitedr.   ?   s*      b$/c..
r'   c                J   ^ ^^^ ST < ST=(       d    S< 3mSUUUU 4S jjnU$ )N.. deprecated::   c           
     T   > [        U T[        R                  T[        TS9-  TT5      $ )Nfunc)_decorate_cls_with_warningr   r)   dict)clsconstructorheadermessager"   s    r%   decorate deprecated_cls.<locals>.decorateV   s2    )$$d,,
 	
r'   )r8   Type[_T]returnr>    )r"   r;   r9   r<   r:   s   ``` @r%   deprecated_clsrA   Q   s&     )0'-R-AF
 
 Or'   c                   ^ ^^^^ U(       a  ST < ST=(       d    S< 3mOSmTc  SmTc  [         R                  mTST -  -  mSUUUU U4S jjnU$ )	a  Decorates a function and issues a deprecation warning on use.

:param version:
  Issue version in the warning.

:param message:
  If provided, issue message in the warning.  A sensible default
  is used if not provided.

:param add_deprecation_to_docstring:
  Default True.  If False, the wrapped function's __doc__ is left
  as-is.  If True, the 'message' is prepended to the docs if
  provided, or sensible default if message is omitted.

r0   r1   r2   Nz$Call to deprecated function %(func)sz (deprecated since: %s)c           	     \   > Tc   eTc   e[        U TT[        U R                  S9-  TTTS9$ )Nr4   )enable_warnings)_decorate_with_warningr7   __name__)fnrD   r:   r;   r"   warnings    r%   r<   deprecated.<locals>.decorate   sH    """"""%d,,+
 	
r'   rG   r   r?   r   )r   r)   )r"   r;   add_deprecation_to_docstringrH   rD   r<   r:   s   `` `` @r%   
deprecatedrL   c   s]    . $]]

 8**(722G

 

 Or'   c                <    [         SU [        R                  S.UD6$ )Nr;   rH   2.0)rL   r   MovedIn20Warning)r;   kws     r%   moved_20rS      s,     (<(<@B r'   c                d   [         R                  " SU 5      nU(       a  SSSS.UR                  S5         nOSnSU < S	U< S
S< S3nSU ;   a7  UR                  SS5      nU(       d  UR	                  S5      SL d
   SU -  5       eU(       a  US	U-   -  n[
        R                  n[        SXWS.UD6$ )Nz^:(attr|func|meth):	attributefunctionmethod)attrr5   methr   	constructzThe r1   z= is considered legacy as of the 1.x series of SQLAlchemy and zbecomes a legacy constructz in 2.0.z:attr:warn_on_attribute_accessFrD   zattribute %s will emit a warning on read access.  If you *really* want this, add warn_on_attribute_access=True.  Otherwise please add enable_warnings=False.rN   rO   )rematchgrouppopgetr   LegacyAPIWarningrL   )api_namealternativerR   type_regr#   r;   attribute_okwarning_clss           r%   became_legacy_20rg      s     xx-x8H$j(KNN1
 
 (	
  8vv8%@66+,5 ) ,445 3$$&&KHWHRHHr'   c                    ^ ^^^ 0 m0 m0 mT R                  5        H.  u  nu  p#UTU'   [        U5      TU'   [        R                  TU'   M0     SUU UU4S jjnU$ )a#  Decorates a function to warn on use of certain parameters.

e.g. ::

    @deprecated_params(
        weak_identity_map=(
            "0.7",
            "the :paramref:`.Session.weak_identity_map parameter "
            "is deprecated.",
        )
    )
    def some_function(**kwargs): ...

c                  >^^	^
^ [         R                  " U 5      nUR                  b  [        [	        UR
                  [        UR
                  5      [        UR                  5      -
  S  UR                  5      5      m[        T5      R                  T5      m	[        T5      R                  T5      m
O[UR                  bA  UR                  m[        T5      R                  T5      m	[        T5      R                  T5      m
OSm	[        T5      m
UR                  m[        SUU	U
UUUU4S jj5       nU R                  S L=(       a    U R                  =(       d    SnU(       aN  [        UTR                  5        VVVs0 s H$  u  nu  pVUSUS:X  a  SOU< SU=(       d    S< 3_M&     snnn5      nU" U 5      nX7l        U$ s  snnnf )	Nr@   c                X  > T H8  nTU   c  X#   c  TU   c  M  X#   TU   :w  d  M#  [        TU   T
U   T	U   SS9  M:     TT;   a9  [        U5      R                  T5      (       a  Tc   e[        TT   T
T   T	T   SS9  T H  nX2;   d  M
  [        TU   T
U   T	U   SS9  M!     U " U0 UD6$ N   r   )r&   set
difference)rG   r-   kwargsmcheck_any_kwcheck_defaultscheck_kwdefaultsmessagesversion_warningsversionss       r%   warned3deprecated_params.<locals>.decorate.<locals>.warned   s    #QK'FI,AQK+	Xa[0H&  (+#$		 $ x'CK,B,B- - $///"\*\*$\2 	 ;&  (+#$	  t&v&&r'   r2   r0   rP   z1.4r1   rG   r   r-   r   ro   r   r?   r   )r   inspect_getfullargspecrt   r7   zipr-   lenrm   intersectionrn   kwonlydefaultsvarkwr   __doc__r   items)rG   specrx   docparamr"   r;   	decoratedrq   rr   rs   rt   ru   specsrv   rw   s           @@@@r%   r<   #deprecated_params.<locals>.decorate   s   ,,R0 ==$IIs499~DMM0BBEFMMH !]77AN8}//9H  ,**H ]77AN8}//9HN8}Hzz 
	' 	' 
	'B jj$39r# 6;[[] 6C11  '5 0ug=2P P5BC 2J	s   <+G rJ   )r   _sanitize_restructured_textr   r)   )r   r   r"   r;   r<   ru   rv   rw   s   `    @@@r%   deprecated_paramsr      si       "H!HBD%*[[]!!!5g>"%":": &3
G GR Or'   c                l    SS jn[         R                  " SS U 5      n [         R                  " SX5      $ )Nc                D    U R                  SS5      u  pUS;   a  US-  nU$ )Nr   r   )r5   rY   z()r^   )rp   r#   names      r%   repl)_sanitize_restructured_text.<locals>.repl-  s*    ggam$$DLDr'   z:ref:`(.+) <.*>`c                *    SU R                  S5      -  $ )Nz"%s"r   r   )rp   s    r%   <lambda>-_sanitize_restructured_text.<locals>.<lambda>3  s    !''!*1Dr'   z\:(\w+)\:`~?(?:_\w+)?\.?(.+?)`)rp   z
Match[str]r?   str)r\   sub)textr   s     r%   r   r   ,  s/     66%'DdKD663T@@r'   c                D   U R                   S L=(       a    U R                   =(       d    SnUb  Ub  U[        US9-  n[        U[        R                  5      (       a  US-  n[        XeS5      nS n[        U 5      [        L af  [        U R                  5      nXhS'   UR                  SS 5        UR                  SS 5        [        U R                  U R                  U5      n Ub  X   nOX`l         Ub  [        X5      nUb"  Uc   eUc   e[        U U[        XrX4S 5      5        U $ )Nr2   r4   @ (Background on SQLAlchemy 2.0 at: :ref:`migration_20_toplevel`)r   r   __dict____weakref__)r   r7   
issubclassr   Base20DeprecationWarningr   typer   r_   rF   	__bases__getattrsetattrrE   )	r8   r9   wtyper;   r"   docstring_headerr   constructor_fnclsdicts	            r%   r6   r6   7  s.    ++T
!
1ckk
7RC#"+ 66eS99::0 $C1=93<<(G!$IKK
D)KKt,s||S]]G<C&!(!5 K&!(!:"!---$$$&"7T Jr'   c                p  ^^^^ [        T5      m[        T[        R                  5      (       a  SnOSn[        SUUUU4S jj5       nU R
                  SL=(       a    U R
                  =(       d    SnUb&  U[        U R                  S9-  nXF-  n[        XS5      nU" U 5      n	Xl        UUU4S jU	l	        U	$ )	z=Wrap a function with a warnings.warn and augmented docstring.r   r2   c                z   > T(       + =(       d    UR                  SS5      nU(       d  [        TTTSS9  U " U0 UD6$ )N_sa_skip_warningFrl   r   )r_   r&   )rG   r-   ro   skip_warningrD   r;   r"   r   s       r%   rx   &_decorate_with_warning.<locals>.warned{  sC    ** 
fjj/
 w1E4"6""r'   Nr4   r   c                    > [        T TTSS9$ rk   )r&   )r;   r"   r   s   r%   r   (_decorate_with_warning.<locals>.<lambda>  s    !3%A"r'   rz   )
r   r   r   r   r   r   r7   rF   r   _sa_warn)
r5   r   r;   r"   r   rD   doc_onlyrx   r   r   s
    ``` `    r%   rE   rE   g  s     *'2G%5566, 	
 # # # ,,d
"
3t||
9rC#Ddmm44$#C1=tII r'   )N)r!   r   r"   r   r#   Type[exc.SADeprecationWarning]r   intr   Optional[str]r?   None)rl   N)
r!   r   r"   r   r   r   r   r   r?   r   )r!   r   r-   zSequence[Any]r"   r   r   r   r   r   r?   r   )__init__)r"   r   r;   r   r9   r   r?   zCallable[[Type[_T]], Type[_T]])NTNT)r"   r   r;   r   rK   boolrH   z(Optional[Type[exc.SADeprecationWarning]]rD   r   r?   Callable[[_F], _F])r;   r   rR   r   r?   z0Callable[[Callable[..., _T]], Callable[..., _T]])rb   r   rc   r   rR   r   r?   r   )r   zTuple[str, str]r?   r   )r   r   r?   r   )r8   r>   r9   r   r   r   r;   r   r"   r   r   r   r?   r>   )NT)r5   r   r   r   r;   r   r"   r   r   r   rD   r   r?   r   )&r   
__future__r   r\   typingr   r   r   r   r   r	   r
   r   r   r   r   r2   r   langhelpersr   r   r   r   r   r   r   r   r&   r*   r.   rA   rL   rS   rg   r   r   r6   rE   r@   r'   r%   <module>r      s   # 	             + ' " . * T T-. 
4	
4
4 *
4 	
4
 
4 

4 HL	(+7D	 	
  	
  
& >H-:#( ")-8< 333 #'3 6	3
 3 3l5 15#I#I -#I<?#I#ILbJA" '+-	-- *- 	-
 - $- -j '+ *
*)* * 	*
 $* * *r'   