
    [h.                       d Z ddlmZ ddl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 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de          Z edd          Z	 dMdNd'Z	 dOdPd)Z	 	 dOdQd,Z	 dRdSd1Z	 	 	 	 dTdUd9ZdVd=Z 	 dMdWd@Z!dXdCZ"dYdEZ#	 dMdZdJZ$	 	 d[d\dLZ%dS )]zSHelpers 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]msgstrversiontype_Type[exc.SADeprecationWarning]
stacklevelintcodeOptional[str]returnNonec                V     || |          }||_         t          ||dz              d S )Nr"   r   r    )deprecated_sincer   )r   r   r   r    r"   warns         k/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py_warn_with_versionr,   *   s=     54   D#D4JN333333       c                B    t          | |t          j        ||           d S )Nr'   )r,   r   SADeprecationWarning)r   r   r    r"   s       r+   warn_deprecatedr1   7   s3     Wc.
     r-   argsSequence[Any]c                h    |rt          | d|          } t          | |t          j        ||           dS )zhIssue a deprecation warning with a parameterized string,
    limiting the number of registrations.

    
   r'   N)r   r,   r   r0   )r   r2   r   r    r"   s        r+   warn_deprecated_limitedr6   ?   sL      0 b$//Wc.
     r-   __init__messageconstructorCallable[[Type[_T]], Type[_T]]c                4     d dpdd fd}|S )	N.. deprecated::   clsType[_T]r$   c           	     b    t          | t          j        t                    z            S )Nfunc)_decorate_cls_with_warningr   r0   dict)r?   r9   headerr8   r   s    r+   decoratez deprecated_cls.<locals>.decorateV   s:    )$d,,,,
 
 	
r-   )r?   r@   r$   r@    )r   r8   r9   rG   rF   s   ``` @r+   deprecated_clsrI   Q   sR      )0'-R-AF
 
 
 
 
 
 
 
 
 Or-   Tadd_deprecation_to_docstringboolwarning(Optional[Type[exc.SADeprecationWarning]]enable_warningsCallable[[_F], _F]c                v     |rd dpdnddt           j        d z  z  d fd
}|S )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.

    r<   r=   r>   Nz$Call to deprecated function %(func)sz (deprecated since: %s)fnr   r$   c                j    J J t          | t          | j                  z            S )NrB   )rN   )_decorate_with_warningrE   __name__)rQ   rN   rF   r8   r   rL   s    r+   rG   zdeprecated.<locals>.decorate   sV    """"""%d,,,,+
 
 
 	
r-   rQ   r   r$   r   )r   r0   )r   r8   rJ   rL   rN   rG   rF   s   `` `` @r+   
deprecatedrV   c   s    . $  GG]]

 8*(722G

 

 

 

 

 

 

 

 

 

 Or-   kwr   0Callable[[Callable[..., _T]], Callable[..., _T]]c                6    t          	 d| t          j        d|S )N2.0r8   rL   rZ   )rV   r   MovedIn20Warning)r8   rW   s     r+   moved_20r^      s3     (< @B  r-   api_namealternativec                V   t          j        d|           }|r dddd|                    d                   }nd}d| d	|d
dd}d| v r<|                    dd          }|s$|                    d          du sJ d| z              |r|d	|z   z  }t
          j        }t          d||d|S )Nz^:(attr|func|meth):	attributefunctionmethod)attrrC   methr   	constructzThe r=   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_accessFrN   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.rZ   r[   r\   )rematchgrouppopgetr   LegacyAPIWarningrV   )r_   r`   rW   type_regr   r8   attribute_okwarning_clss           r+   became_legacy_20rr      s    x-x88H $j(KKNN1
 
 HHEE(((	
  8vv8%@@ 	66+,,555) ,44 655  %3$$&KHWkHHRHHHr-   specsTuple[str, str]c                      i i i                                   D ].\  }\  }}||<   t          |          |<   t          j        |<   /d fd}|S )aK  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): ...

    rQ   r   r$   c           	     (   t          j        |           }|j        t          t	          |j        t          |j                  t          |j                  z
  d          |j                            t                                        	          t          	          	                              nd|j
        L|j
        t                                        	          t          	          	                              ndt          	          |j        t          d	fd            }| j        d ur| j        pd	}|r,t          |d
 
                                D                       } ||           }||_        |S )NrH   rQ   r   r2   r   kwargsr$   c                   D ]Q}|         ||         |         7||         |         k    r%t          |         
|         	|         d           Rv rKt          |                                        r)J t                   
         	         d           D ]+}||v r%t          |         
|         	|         d           , | |i |S Nr.   r(   )r,   set
difference)rQ   r2   rw   mcheck_any_kwcheck_defaultscheck_kwdefaultsmessagesversion_warningsversionss       r+   warnedz3deprecated_params.<locals>.decorate.<locals>.warned   s?   # 	 	QK'F1I,AQK+q	Xa[0H0H&  (+#$	    x''CKK,B,B- -' $///"\*\*$\2 	      ;;&  (+#$	    2t&v&&&r-   r>   c                @    i | ]\  }\  }}|d |dk    rdn|d|pdS )r<   rZ   z1.4r=   r>   rH   ).0paramr   r8   s       r+   
<dictcomp>z7deprecated_params.<locals>.decorate.<locals>.<dictcomp>  sZ        21 E '5 0 0uug==2P  r-   rQ   r   r2   r   rw   r   r$   r   )r   inspect_getfullargspecr   rE   zipr2   lenrz   intersectionr{   kwonlydefaultsvarkwr   __doc__r   items)rQ   specr   doc	decoratedr}   r~   r   r   r   rs   r   r   s        @@@@r+   rG   z#deprecated_params.<locals>.decorate   s   ,R00 =$Is49~~DM0B0BBEEFM  H !]]77AAN8}}//99HH ,*H ]]77AAN8}}//99HHN8}}Hz 
	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 
	'B j$39r 	#  6;[[]]   C F2JJ		r-   rU   )r   _sanitize_restructured_textr   r0   )rs   r   r   r8   rG   r   r   r   s   `    @@@r+   deprecated_paramsr      s       "H!HBD%*[[]] ; ;!!!5g>>"%":G G G G G G G G GR Or-   textc                d    d	d}t          j        dd |           } t          j        d||           S )
Nr|   
Match[str]r$   r   c                J    |                      dd          \  }}|dv r|dz  }|S )Nr   r   )rC   rf   z()rk   )r|   r   names      r+   replz)_sanitize_restructured_text.<locals>.repl-  s1    ggammt$$$DLDr-   z:ref:`(.+) <.*>`c                2    d|                      d          z  S )Nz"%s"r   r   )r|   s    r+   <lambda>z-_sanitize_restructured_text.<locals>.<lambda>3  s    !''!**1D r-   z\:(\w+)\:`~?(?:_\w+)?\.?(.+?)`)r|   r   r$   r   )ri   sub)r   r   s     r+   r   r   ,  sE        6%'D'DdKKD63T4@@@r-   r?   r@   wtypedocstring_headerc                J   | j         d ur| j         pd}|||t          |          z  }t          |t          j                  r|dz  }t          ||d          }d }t          |           t          u rkt          | j                  }||d<   |                    dd            |                    dd            t          | j	        | j
        |          } |||         }n|| _         |t          | |          }|*|J |J t          | |t          ||||d                      | S )Nr>   rB   @ (Background on SQLAlchemy 2.0 at: :ref:`migration_20_toplevel`)r   r   __dict____weakref__)r   rE   
issubclassr   Base20DeprecationWarningr   typer   rl   rT   	__bases__getattrsetattrrS   )	r?   r9   r   r8   r   r   r   constructor_fnclsdicts	            r+   rD   rD   7  sg    +T
!
1ck
7RC#"+ 6 6 66eS9:: 	0 $C)91==993<((G!$GIKK
D)))KKt,,,s|S]G<<C&!(!5 CK&!(k!:!:"!---$$$&"E7GT    Jr-   rC   c                V   t                    t          t          j                  rd}nd}t          dfd	            }| j        d
ur| j        pd}|.|t          | j                  z  }||z  }t          ||d          } ||           }	||	_        fd|	_	        |	S )z=Wrap a function with a warnings.warn and augmented docstring.r   r>   rQ   r   r2   r   rw   r$   c                p     p|                     dd          }|st          d            | |i |S )N_sa_skip_warningFr.   r(   )rl   r,   )rQ   r2   rw   skip_warningrN   r8   r   r   s       r+   r   z&_decorate_with_warning.<locals>.warned{  s\    ** 
fjj/
 /
  	Fw1EEEEr4"6"""r-   NrB   r   c                 *    t           d          S ry   )r,   )r8   r   r   s   r+   r   z(_decorate_with_warning.<locals>.<lambda>  s     !3%A" " " r-   r   )
r   r   r   r   r   r   rE   rT   r   _sa_warn)
rC   r   r8   r   r   rN   doc_onlyr   r   r   s
    ``` `    r+   rS   rS   g  s	    *'22G%566 , 	
 # # # # # # # # Y# ,d
"
3t|
9rC#Ddm4444H$#C)91==tII     I r-   )N)r   r   r   r   r   r   r    r!   r"   r#   r$   r%   )r.   N)
r   r   r   r   r    r!   r"   r#   r$   r%   )r   r   r2   r3   r   r   r    r!   r"   r#   r$   r%   )r7   )r   r   r8   r   r9   r#   r$   r:   )NTNT)r   r   r8   r#   rJ   rK   rL   rM   rN   rK   r$   rO   )r8   r   rW   r   r$   rX   )r_   r   r`   r#   rW   r   r$   rO   )rs   rt   r$   rO   )r   r   r$   r   )r?   r@   r9   r#   r   r   r8   r   r   r   r   r#   r$   r@   )NT)rC   r   r   r   r8   r   r   r   r   r#   rN   rK   r$   r   )&r   
__future__r   ri   typingr   r   r   r   r   r	   r
   r   r   r   r   r>   r   langhelpersr   r   r   r   r   r   r   r   r,   r1   r6   rI   rV   r^   rr   r   r   rD   rS   rH   r-   r+   <module>r      s    # " " " " " 				                                                                         + + + + + + ' ' ' ' ' ' " " " " " " . . . . . . * * * * * *      WT WT-... 
4 
4 
4 
4 
4 HL         & >H    ( ")-8< 3 3 3 3 3l    15#I #I #I #I #ILb b b bJA A A A" '+- - - - -j '+ * * * * * * *r-   