
    -hk5                        S r SSKrSSK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rSq\R                  " SS5      R!                  5       S;   a  Sr\R"                  (       a  SqO'\R                  " SS5      R!                  5       S;   a  SqS S jrS 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S%S jrS rS r S S jr S&S jrg)'zSHelpers related to deprecation of functions, methods, classes, other
functionality.    N   )compat)_hash_limit_string)_warnings_warn)	decorator)inject_docstring_text)inject_param_text   )excFSQLALCHEMY_WARN_20false)trueyes1TSQLALCHEMY_SILENCE_UBER_WARNINGc                     [        U[        R                  5      (       a"  [        (       d  [        (       d  [        X#5        g U" XS9nXl        [        XSS-   S9  g )Ncoder   
stacklevel)
issubclassr   Base20DeprecationWarningr   SILENCE_UBER_WARNING_emit_uber_warningdeprecated_sincer   )msgversiontype_r   r   warns         qC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/util/deprecations.py_warn_with_versionr!   )   sH    5#6677""##u1 D#4N3    c                 @   [         (       a  g Sq [        R                  n[        US5      =(       a9    UR	                  5       =(       a"    [
        R                  R                  S5      S:g  nSnU(       a  USSSS	S
S.-  nOUSSSSSS.-  nU " U5      n[        XQS-   S9  g )NTisattyTERMdumba  %(red)sDeprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. %(green)sTo prevent incompatible upgrades prior to updating applications, ensure requirements files are pinned to "sqlalchemy<2.0". %(cyan)sSet environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings.  Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this message.%(nocolor)sz[31mz[36mz[32mz[35mz[0m)redcyangreenmagentanocolor r   r   )	r   sysstderrhasattrr$   osenvirongetr   )r   r   file_	use_colorr   r   s         r    r   r   9   s     JJE 	x  	-LLN	-JJNN6"f, 	P  ! 
 
 
 
 :D4N3r"   c                 6    [        X[        R                  X#S9  g Nr   )r!   r   SADeprecationWarning)r   r   r   r   s       r    warn_deprecatedr8   l   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   r7   )r   argsr   r   r   s        r    warn_deprecated_limitedr<   r   s*    
  b$/c..
r"   c                 j    [        U [        R                  R                  [        R                  UUS9  g r6   )r!   r   RemovedIn20Warningr   )r   r   r   s      r    warn_deprecated_20r?   ~   s+    //r"   c                 F   ^ ^^^ ST < ST=(       d    S< 3mUUUU 4S jnU$ )N.. deprecated::  r,   c           
      T   > [        U T[        R                  T[        TS9-  TT5      $ )Nfunc)_decorate_cls_with_warningr   r7   dict)clsconstructorheadermessager   s    r    decorate deprecated_cls.<locals>.decorate   s2    )$$d,,
 	
r"    )r   rK   rI   rL   rJ   s   ``` @r    deprecated_clsrO      s$    (/'-R-AF
 
 Or"   c                    ^^^ SU < SU(       d  SOS< S3mU(       a  TSU-   -  mU(       a  [         R                  mO[         R                  mUUU4S jnU$ )Nz.. deprecated:: 1.4 The zC class is considered legacy as of the 1.x series of SQLAlchemy and will be removedbecomes a legacy construct in 2.0.rB   c                 8   > [        U TTTTR                  T5      $ N)rF   r   )rH   rI   rK   warning_clss    r    rL   #deprecated_20_cls.<locals>.decorate   s(    )((
 	
r"   )r   LegacyAPIWarningr>   )clsnamealternativerI   becomes_legacyrL   rK   rV   s     `  @@r    deprecated_20_clsr\      s[     ! -.		
  3$$**,,
 Or"   c                    ^ ^^^^ T S:X  a  Tc  [         R                  mSm U(       a  ST < ST=(       d    S< 3mOSmTc  SmTc  [         R                  mT[         R                  La  TST -  -  mUUUU U4S	 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.

2.0N1.4rA   rB   r,   z$Call to deprecated function %(func)sz (deprecated since: %s)c           	      H   > [        U TT[        U R                  S9-  TTTS9$ )NrD   )enable_warnings)_decorate_with_warningrG   __name__)fnra   rJ   rK   r   warnings    r    rL   deprecated.<locals>.decorate   s0    %d,,+
 	
r"   )r   r>   r7   )r   rK   add_deprecation_to_docstringre   ra   rL   rJ   s   `` `` @r    
deprecatedrh      s    6 %?,,G#]]

 8**c,,,,w66
 
 Or"   c                 <    [         SU [        R                  S.UD6$ )NrK   re   r^   )rh   r   MovedIn20Warning)rK   kws     r    moved_20rn      s*    (<(<@B r"   c                    [         R                  " SU 5      nU(       a  SSSS.UR                  S5         nOSnSU < S	U< S
U(       d  SO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U(       a  [
        R                  nO[
        R                  n[        SXhS.UD6$ )Nz^:(attr|func|meth):	attributefunctionmethod)attrrE   methr   	constructzThe rB   z= is considered legacy as of the 1.x series of SQLAlchemy and rQ   rR   rS   z:attr:warn_on_attribute_accessFra   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.rj   rk   )	rematchgrouppopr2   r   rX   r>   rh   )	api_namerZ   r[   rm   type_regr   rK   attribute_okrV   s	            r    deprecated_20r~      s    xx-x8H$j(KNN1
 
 ! -.	
  8vv8%@66+,5 ) ,445 3$$**,,HWHRHHr"   c                     ^ ^^^ 0 m0 m0 mT R                  5        HD  u  nu  p#UTU'   [        U5      TU'   US:X  a  [        R                  O[        R                  TU'   MF     UU UU4S jnU$ )zDecorates 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."
        )

    )

r^   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Sm	[        T5      m
UR                  m[        UU	U
UUUU4S 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 )NrN   c                 N  > 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;   a4  [        U5      R                  T5      (       a  [        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)rd   r;   kwargsmcheck_any_kwcheck_defaultscheck_kwdefaultsmessagesversion_warningsversionss       r    warned3deprecated_params.<locals>.decorate.<locals>.warnedW  s    #QK'FI,AQK+	Xa[0H&  (+#$		 $ x'CK,B,B- - #\*\*$\2 	 ;&  (+#$	  t&v&&r"   r,   rA   r^   r_   rB   )r   inspect_getfullargspecr   rG   zipr;   lenr   intersectionr   varkwr   __doc__r	   items)rd   specr   docparamr   rK   	decoratedr   r   r   r   r   specsr   r   s           @@@@r    rL   #deprecated_params.<locals>.decorateE  sO   ,,R0==$IIs499~DMM0BBEFMM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   ,+E0)r   _sanitize_restructured_textr   r>   r7   )r   r   r   rK   rL   r   r   r   s   `    @@@r    deprecated_paramsr   (  s      HH%*[[]!!!5g> % "")) 	 &3@ @D Or"   c                 h    S 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
   )rE   rt   z()ry   )r   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   )r   s    r    <lambda>-_sanitize_restructured_text.<locals>.<lambda>  s    !''!*1Dr"   z\:(\w+)\:`~?(?:_\w+)?\.?(.+?)`)rw   sub)textr   s     r    r   r     s/     66%'DdKD663T@@r"   c                 .   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[        U 5      [        L af  [        U R                  5      nXgS'   UR                  SS 5        UR                  SS 5        [        U R                  U R                  U5      n Ub  Xq   nOX`l         Ub  [        X5      nUb  [        U U[        WX#US 5      5        U $ )Nr,   rD   @ (Background on SQLAlchemy 2.0 at: :ref:`migration_20_toplevel`)r   r   __dict____weakref__)r   rG   r   r   r   r   typer   rz   rc   	__bases__getattrsetattrrb   )	rH   rI   wtyperK   r   docstring_headerr   clsdictconstructor_fns	            r    rF   rF     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&!(!:"&"EGT Jr"   c                 l  ^^^^ [        T5      m[        T[        R                  5      (       a  SnOSn[        UUUU4S 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   r,   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_warningFr   r   )rz   r!   )rd   r;   r   skip_warningra   rK   r   r   s       r    r   &_decorate_with_warning.<locals>.warned  sC    ** 
fjj/
 w1E4"6""r"   NrD   r   c                     > [        T TTSS9$ r   )r!   )rK   r   r   s   r    r   (_decorate_with_warning.<locals>.<lambda>  s    !3%A"r"   )
r   r   r   r   r   r   rG   rc   r   _sa_warn)
rE   r   rK   r   r   ra   doc_onlyr   r   r   s
    ``` `    r    rb   rb     s    
 *'2G%5566, 	
 # # ,,d
"
3t||
9rC#Ddmm44$#C1=tII r"   rU   )r   N)__init__)Nr   F)NTNT)NF)NT) r   r0   rw   r-   r,   r   langhelpersr   r   r   r   r	   r   r   r   getenvlowerpy2kr!   r   r8   r<   r?   rO   r\   rh   rn   r~   r   r   rF   rb   rN   r"   r    <module>r      s   
 	 
  + ' " . *    99!7+1137KK	;;YY0':@@B G 
  4 04f	" GL J !%:z&IR_DA AE&T KO%r"   