ó
    úÞ jxz  ã                  óþ  • % S SK Jr  S SKJr  S SKJr  S SKJ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 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  \(       a¤  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/J0r0  S S(K1J2r2  S S)K1J3r3  S S*K1J4r4  S S+K1J5r5  S S,K1J6r6  S S-K7J8r8  S S.K9J:r:  SS/KJ;r;  SS0K<J=r=  SS1K>J?r?  SS2K>J@r@  \%\&-  \(-  \'-  \)-  rA\R„                  " \C5      rD " S3 S4\E5      rF0 rGS5\HS6'    " S7 S8\FS99rI " S: S;\5      rJ        S=S< jrKg)>é    )Úannotations)ÚIterable)ÚMapping)ÚSequenceN)ÚAny)ÚCallable)Ú
NamedTuple)ÚTYPE_CHECKING)Úcast)ÚColumn)ÚMetaData)ÚPrimaryKeyConstraint©Úschema)ÚString)ÚTable)Útexté   )Ú_autogen)Úbase)Ú_constraint_sig)ÚComparisonResulté   )Úutil)Úsqla_compat)ÚLiteral)ÚTextIO)Ú
Connection)ÚDialect)ÚCursorResult)ÚReflectedCheckConstraint)ÚReflectedForeignKeyConstraint)ÚReflectedIndex)ÚReflectedPrimaryKeyConstraint)ÚReflectedUniqueConstraint)Ú	Inspector)ÚClauseElement)Ú
Executable)Úquoted_name)ÚCheckConstraint)Ú
Constraint)ÚForeignKeyConstraint)ÚIndex)ÚUniqueConstraint)ÚTableClause)Ú
TypeEngine)Ú_ServerDefaultArgument)ÚAutogenContext)ÚApplyBatchImpl)ÚBatchOperationsImplc                  ó*   • \ rS rSr      SS jrSrg)ÚImplMetaéG   c                óV   • [         R                  XX#5      nSU;   a  U [        US   '   U$ )NÚ__dialect__)ÚtypeÚ__init__Ú_impls)ÚclsÚ	classnameÚbasesÚdict_Únewtypes        ÚJ/var/www/html/gaurav/venv/lib/python3.13/site-packages/alembic/ddl/impl.pyr;   ÚImplMeta.__init__H   s0   € ô —-‘- °Ó=ˆØ˜EÓ!Ø+.ŒF�5˜Ñ'Ñ(Øˆó    © N)r>   Ústrr?   ztuple[type[DefaultImpl]]r@   údict[str, Any])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r;   Ú__static_attributes__rE   rD   rB   r6   r6   G   s#   † ð	àð	ð (ð	ð ÷		rD   r6   zdict[str, type[DefaultImpl]]r<   c                  ó:  • \ rS rSr% SrSrSrSrSS14rS\	S	'   S
r
S\	S'   SrS\	S'                 SDS jr\SES j5       rSFS jr          SGS jr    SHS jr      SIS jr\SJS j5       rSS\R,                  " 5       4         SKS jjr SL     SMS jjrSSSSSSSSSSSSS.                               SNS jjrSSSSS.             SOS jjrSSS.         SPS jjrSQS  jrSRS! jr SL       SSS" jjrSTS# jrSTS$ jr SUS% jr!SVS& jr"SVS' jr#SWS( jr$SUS) jr% SX       SYS* jjr&SZS+ jr'      S[S, jr(      S\S- jr)      S]S. jr*S/ r+          S^S0 jr,S1 r- S_       S`S2 jjr.SaS3 jr/      SbS4 jr0S5 r1ScS6 jr2ScS7 jr3ScS8 jr4      SdS9 jr5S: r6      SeS; jr7      SfS< jr8      SfS= jr9      SgS> jr:      ShS? jr;      SiS@ jr<SA r=      SjSB jr>SCr?g)kÚDefaultImpléW   az  Provide the entrypoint for major migration operations,
including database-specific behavioral variances.

While individual SQL/DDL constructs already provide
for database-specific implementations, variances here
allow for entirely different sequences of operations
to take place for a particular migration, such as
SQL Server's special 'IDENTITY INSERT' step for
bulk inserts.

ÚdefaultFÚ;ÚNUMERICÚDECIMALztuple[set[str], ...]Útype_synonymsrE   zSequence[str]Útype_arg_extract)ÚorderÚon_nullztuple[str, ...]Úidentity_attrs_ignorec                ó   • Xl         X l        X0l        UR                  SS5      U l        XPl        0 U l        X`l        Ub  X@l        U R                  (       a(  U R                  (       d  [        R                  " S5      eg g )NÚliteral_bindsFz3Can't use literal_binds setting without as_sql mode)ÚdialectÚ
connectionÚas_sqlÚgetrZ   Úoutput_bufferÚmemoÚcontext_optsÚtransactional_ddlr   ÚCommandError)Úselfr[   r\   r]   rb   r_   ra   s          rB   r;   ÚDefaultImpl.__init__p   sw   € ð ŒØ$ŒØŒØ)×-Ñ-¨o¸uÓEˆÔà*ÔØˆŒ	Ø(ÔØÑ(Ø%6Ô"à××Ø—;—;Ü×'Ò'ØIóð ð ð rD   c                ó(   • [         UR                     $ ©N)r<   Úname)r=   r[   s     rB   Úget_by_dialectÚDefaultImpl.get_by_dialectŠ   s   € ä�g—l‘lÑ#Ð#rD   c                ó’   • U R                   c   eU R                   R                  US-   5        U R                   R                  5         g )Nz

)r_   ÚwriteÚflush)rd   r   s     rB   Ústatic_outputÚDefaultImpl.static_outputŽ   s>   € Ø×!Ñ!Ñ-Ð-Ð-Ø×Ñ× Ñ  ¨¡Ô/Ø×Ñ× Ñ Õ"rD   c          
     ó˜   • [        U[        5       [        S[        S5      SS9US9nU(       a  UR	                  [        SU S3S95        U$ )aƒ  Generate a :class:`.Table` object which will be used as the
structure for the Alembic version table.

Third party dialects may override this hook to provide an alternate
structure for this :class:`.Table`; requirements are only that it
be named based on the ``version_table`` parameter and contains
at least a single string-holding column named ``version_num``.

.. versionadded:: 1.14

Úversion_numé    F)Únullabler   Ú_pkc)rh   )r   r   r   r   Úappend_constraintr   )rd   Úversion_tableÚversion_table_schemaÚversion_table_pkÚkwÚvts         rB   Úversion_table_implÚDefaultImpl.version_table_impl“   sW   € ô& ØÜ‹JÜ�=¤&¨£*°uÑ=Ø'ñ	
ˆö Ø× Ñ Ü$Ø!¨=¨/¸Ð(>ñôð ˆ	rD   c                ó   • g)z×Return True if the given :class:`.BatchOperationsImpl`
would need the table to be recreated and copied in order to
proceed.

Normally, only returns True on SQLite when operations other
than add_column are present.

FrE   )rd   Úbatch_ops     rB   Úrequires_recreate_in_batchÚ&DefaultImpl.requires_recreate_in_batchµ   s   € ð rD   c                ó   • g)zÈperform any operations needed on a table before a new
one is created to replace it in batch mode.

the PG dialect uses this to drop constraints on the table
before the new one uses those same names.

NrE   )rd   Ú
batch_implÚtables      rB   Úprep_table_for_batchÚ DefaultImpl.prep_table_for_batchÂ   ó   � rD   c                ó   • U R                   $ rg   )r\   ©rd   s    rB   ÚbindÚDefaultImpl.bindÍ   s   € à�‰ÐrD   Nc                óæ  • [        U[        5      (       a  [        U5      nU R                  (       aÙ  Uc  U(       a  [	        S5      eU R
                  (       a+  [        U[        R                  5      (       d  [        SS0S9nO0 n[        (       a  [        U[        5      (       d   eUR                  " S	SU R                  0UD6nU R                  [        U5      R                  SS5      R                  5       U R                   -   5        g U R"                  nUc   eU(       a  UR$                  " S	0 UD6nU(       a  Ub  [	        S5      eU(       a  UR'                  X5      $ UR'                  X5      $ )
Nz&SQL parameters not allowed with as_sqlrZ   T)Úcompile_kwargsr[   Ú	z    z2Can't send params and multiparams at the same timerE   )Ú
isinstancerF   r   r]   Ú	TypeErrorrZ   r   Ú
DDLElementÚdictr
   r'   Úcompiler[   rn   ÚreplaceÚstripÚcommand_terminatorr\   Úexecution_optionsÚexecute)rd   Ú	constructr–   ÚmultiparamsÚparamsÚ
compile_kwÚcompiledÚconns           rB   Ú_execÚDefaultImpl._execÑ   sF  € ô �i¤×%Ñ%Ü˜Y›ˆIØ�;�;ØÑ&®&ÜÐ HÓIÐIð ×!×!¬*Øœ6×,Ñ,÷+ñ +ô "°/À4Ð1HÑI‘
à�
çŠ}Ü! )¬]×;Ñ;Ð;Ð;Ø ×(Ò(ÑL°·±ÐLÀÑLˆHØ×ÑÜ�H“×%Ñ% d¨FÓ3×9Ñ9Ó;Ø×)Ñ)ñ*ôð à—?‘?ˆDØÑ#Ð#Ð#Þ Ø×-Ò-ÑBÐ0AÑB�æ˜+Ñ1ÜØHóð ö Ø—|‘| IÓ;Ð;à—|‘| IÓ6Ð6rD   c                ó&   • U R                  X5        g rg   )rž   )rd   Úsqlr–   s      rB   r—   ÚDefaultImpl.executeþ   s   € ð
 	�
‰
�3Õ*rD   )rs   Úserver_defaultrh   Útype_r   ÚautoincrementÚcommentÚexisting_commentÚexisting_typeÚexisting_server_defaultÚexisting_nullableÚexisting_autoincrementc               óÌ  • Uc  Ub  [         R                  " SSS9  Ub*  U R                  [        R                  " UUUUUUUU
S95        USLaŽ  0 n[
        R                  " XL5      (       a  [        R                  nO@[
        R                  " XL5      (       a  [        R                  nXS'   O[        R                  nU R                  U" UUU4UUUUU
S.UD65        Ub*  U R                  [        R                  " UUUUUUUU
S95        U	SLa*  U R                  [        R                  " UUU	UUUUU
S95        Ub*  U R                  [        R                  " UUUUUUUS95        g g )NzBautoincrement and existing_autoincrement only make sense for MySQLé   )Ú
stacklevel)r   r¨   r©   rª   r§   FÚimpl)r   r¨   r©   rª   )r   Úwarnrž   r   ÚColumnNullabler   Ú_server_default_is_computedÚComputedColumnDefaultÚ_server_default_is_identityÚIdentityColumnDefaultÚColumnDefaultÚ
ColumnTypeÚColumnCommentÚ
ColumnName)rd   Ú
table_nameÚcolumn_namers   r£   rh   r¤   r   r¥   r¦   r§   r¨   r©   rª   r«   ry   Úcls_s                    rB   Úalter_columnÚDefaultImpl.alter_column  s²  € ð& Ñ$Ð(>Ñ(JÜ�IŠIð,àòð
 ÑØ�J‰JÜ×#Ò#ØØØØ!Ø"/Ø,CØ&7Ø%5ñ	ôð  Ò&ØˆBô ×6Ò6Ø÷ñ ô ×1Ñ1‘Ü×8Ò8Ø÷ñ ô ×1Ñ1�Ø!�6’
ä×)Ñ)�Ø�J‰JÙØØØ"ð
ð "Ø"/Ø,CØ&7Ø%5ñ
ð ñ
ôð ÑØ�J‰JÜ—’ØØØØ!Ø"/Ø,CØ&7Ø%5ñ	ôð ˜%ÒØ�J‰JÜ×"Ò"ØØØØ!Ø"/Ø,CØ&7Ø%5ñ	ôð ÑØ�J‰JÜ—’ØØØØ!Ø"/Ø,CØ&7ñõ
ð rD   ©r   Úif_not_existsÚinline_referencesÚinline_primary_keyc               óT   • U R                  [        R                  " UUUUUUS95        g )Nr¿   )rž   r   Ú	AddColumn)rd   rº   Úcolumnr   rÀ   rÁ   rÂ   s          rB   Ú
add_columnÚDefaultImpl.add_columnv  s.   € ð 	�
‰
Ü�NŠNØØØØ+Ø"3Ø#5ñõ		
rD   ©r   Ú	if_existsc          	     óL   • U R                  [        R                  " XX4S95        g )NrÈ   )rž   r   Ú
DropColumn)rd   rº   rÅ   r   rÉ   ry   s         rB   Údrop_columnÚDefaultImpl.drop_column‹  s!   € ð 	�
‰
Ü�OŠOØ¨6ñõ	
rD   c                óæ   • UR                   b  UR                  U 5      (       aN  [        R                  (       a  UR                  SS5        U R	                  [
        R                  " U40 UD65        g g )NÚisolate_from_tableT)Ú_create_ruler   Úsqla_2_1Ú
setdefaultrž   r   ÚAddConstraint©rd   Úconstry   s      rB   Úadd_constraintÚDefaultImpl.add_constraintš  sX   € Ø×ÑÑ%¨×);Ñ);¸D×)AÑ)AÜ×#×#à—‘Ð2°DÔ9Ø�J‰J”v×+Ò+¨EÑ8°RÑ8Õ9ð	 *BrD   c                óP   • U R                  [        R                  " U40 UD65        g rg   )rž   r   ÚDropConstraintrÔ   s      rB   Údrop_constraintÚDefaultImpl.drop_constraint¡  s   € Ø�
‰
”6×(Ò(¨Ñ5°"Ñ5Õ6rD   c                óL   • U R                  [        R                  " XUS95        g )Nr   )rž   r   ÚRenameTable)rd   Úold_table_nameÚnew_table_namer   s       rB   Úrename_tableÚDefaultImpl.rename_table¤  s    € ð 	�
‰
Ü×Ò˜^ÀFÑKõ	
rD   c                óž  • UR                   R                  XR                  SU S9  U R                  [        R
                  " U40 UD65        UR                   R                  XR                  SU S9  UR                   H(  nU R                  [        R                  " U5      5        M*     U R                  R                  =(       a    U R                  R                  (       + nUR                  nU(       a  U(       a  U R                  U5        UR                   H2  nUR                  nU(       d  M  U(       d  M!  U R                  U5        M4     g ©NF)Ú
checkfirstÚ_ddl_runner)ÚdispatchÚbefore_creater\   rž   r   ÚCreateTableÚafter_createÚindexesÚCreateIndexr[   Úsupports_commentsÚinline_commentsr¦   Úcreate_table_commentÚcolumnsÚcreate_column_comment)rd   rƒ   ry   ÚindexÚwith_commentr¦   rÅ   s          rB   Úcreate_tableÚDefaultImpl.create_table®  sý   € Ø�‰×$Ñ$Ø—?‘?¨uÀ$ð 	%ñ 	
ð 	�
‰
”6×%Ò% eÑ2¨rÑ2Ô3Ø�‰×#Ñ#Ø—?‘?¨uÀ$ð 	$ñ 	
ð —]”]ˆEØ�J‰J”v×)Ò)¨%Ó0Ö1ñ #ð �L‰L×*Ñ*×O°4·<±<×3OÑ3OÔ/Oð 	ð —-‘-ˆÞ–|Ø×%Ñ% eÔ,à—m”mˆFØ—n‘nˆGßˆwŸ<˜<Ø×*Ñ*¨6Ö2ò $rD   c                óä   • UR                   R                  XR                  SU S9  U R                  [        R
                  " U40 UD65        UR                   R                  XR                  SU S9  g rã   )ræ   Úbefore_dropr\   rž   r   Ú	DropTableÚ
after_drop)rd   rƒ   ry   s      rB   Ú
drop_tableÚDefaultImpl.drop_tableÅ  sd   € Ø�‰×"Ñ"Ø—?‘?¨uÀ$ð 	#ñ 	
ð 	�
‰
”6×#Ò# EÑ0¨RÑ0Ô1Ø�‰×!Ñ!Ø—?‘?¨uÀ$ð 	"ò 	
rD   c                óP   • U R                  [        R                  " U40 UD65        g rg   )rž   r   rë   ©rd   rñ   ry   s      rB   Úcreate_indexÚDefaultImpl.create_indexÎ  s   € Ø�
‰
”6×%Ò% eÑ2¨rÑ2Õ3rD   c                óN   • U R                  [        R                  " U5      5        g rg   )rž   r   ÚSetTableComment©rd   rƒ   s     rB   rî   Ú DefaultImpl.create_table_commentÑ  s   € Ø�
‰
”6×)Ò)¨%Ó0Õ1rD   c                óN   • U R                  [        R                  " U5      5        g rg   )rž   r   ÚDropTableCommentr  s     rB   Údrop_table_commentÚDefaultImpl.drop_table_commentÔ  s   € Ø�
‰
”6×*Ò*¨5Ó1Õ2rD   c                óN   • U R                  [        R                  " U5      5        g rg   )rž   r   ÚSetColumnComment)rd   rÅ   s     rB   rð   Ú!DefaultImpl.create_column_comment×  s   € Ø�
‰
”6×*Ò*¨6Ó2Õ3rD   c                óP   • U R                  [        R                  " U40 UD65        g rg   )rž   r   Ú	DropIndexrü   s      rB   Ú
drop_indexÚDefaultImpl.drop_indexÚ  s   € Ø�
‰
”6×#Ò# EÑ0¨RÑ0Õ1rD   c                ó4  • [        U[        5      (       d  [        S5      eU(       a#  [        US   [        5      (       d  [        S5      eU R                  (       aµ  U H®  nU R                  UR                  5       R                  5       R                  " S0 UR                  5        VVs0 sHS  u  pVU[        U[        R                  5      (       d,  [        R                  " XVUR                  U   R                  S9OU_MU     snnD65        M°     g U(       a{  U(       a-  U R                  UR                  5       R                  5       US9  g U H@  nU R                  UR                  5       R                  5       R                  " S0 UD65        MB     g g s  snnf )NzList expectedr   zList of dictionaries expected)r¤   )r™   rE   )rŽ   Úlistr�   r‘   r]   rž   ÚinsertÚinlineÚvaluesÚitemsr   Ú_literal_bindparamÚcr:   )rd   rƒ   ÚrowsÚmultiinsertÚrowÚkÚvs          rB   Úbulk_insertÚDefaultImpl.bulk_insertÝ  sN  € ô ˜$¤×%Ñ%Ü˜OÓ,Ð,Þœ* T¨!¡W¬d×3Ñ3ÜÐ;Ó<Ð<Ø�;�;Û�Ø—
‘
Ø—L‘L“Nß‘V“Xß‘Vðñ ð ),¯	©	¬ôñ )4¡ ð ô (2Ø$%¤{×'EÑ'E÷("ñ ("ô !,× >Ò >Ø$%°·±¸±
·±ò!"ð &'ò'ñ )4òñöò ö( ÞØ—J‘J˜uŸ|™|›~×4Ñ4Ó6ÀD�JÒIã#˜ØŸ
™
 5§<¡<£>×#8Ñ#8Ó#:×#AÒ#AÑ#HÀCÑ#HÖIò  $ð	 ùós   Â)AFc                óz  • U R                   R                  R                  UR                  5      R	                  5       n[
        R                  " SU5      n/ nS nU H4  n[
        R                  " SU5      (       a  UnM#  UR                  U5        M6     [        US   USS  / 0 5      nU(       a�  [
        R                  " SU5       Hr  nSU;   a@  UR                  S5      u  pšU
R                  5       UR                  U	R                  5       '   MI  UR                  R                  UR                  5       5        Mt     U$ )Nz[\w\-_]+|\(.+?\)z^\(.*\)$r   r   z[^(),]+Ú=)r[   Útype_compilerÚprocessr:   ÚlowerÚreÚfindallÚmatchÚappendÚParamsÚsplitr”   ÚkwargsÚargs)rd   rÅ   Ú
definitionÚtokensÚterm_tokensÚ
paren_termÚtokenrš   ÚtermÚkeyÚvals              rB   Ú_tokenize_column_typeÚ!DefaultImpl._tokenize_column_type  s÷   € à—\‘\×/Ñ/×7Ñ7¸¿¹ÓD×JÑJÓLˆ
ô ŸJšJÐ':¸JÓGˆà!#ˆØˆ
ãˆEÜ�xŠx˜ U×+Ñ+Ø"’
à×"Ñ" 5Ö)ñ	 ô ˜ A™¨°A°B¨¸¸RÓ@ˆæäŸ
š
 9¨jÖ9�Ø˜$“;Ø#Ÿz™z¨#›‘H�CØ14·±³�F—M‘M #§)¡)£+Ó.à—K‘K×&Ñ& t§z¡z£|Ö4ñ :ð ˆrD   c           	     ó  • UR                   UR                   :X  a  gU R                   VVs/ sH!  o3 Vs1 sH  oDR                  5       iM     snPM#     nnnSR                  UR                   /UR                  -   5      nSR                  UR                   /UR                  -   5      nU HH  nXg1R                  U5      (       d.  UR                   UR                   1R                  U5      (       d  MH    g   gs  snf s  snnf )NTÚ F)Útoken0rT   r!  Újoinr+  Úissubset)rd   Úinspector_paramsÚmetadata_paramsÚbatchÚtÚsynonymsÚinspector_all_termsÚmetadata_all_termss           rB   Ú_column_types_matchÚDefaultImpl._column_types_match+  sô   € ð ×"Ñ" o×&<Ñ&<Ó<Øà<@×<NÒ<NÔOÑ<N°5¨Ó.© 1—W‘W–Y©Ô.Ñ<NˆÑOØ!Ÿh™hØ×$Ñ$Ð%Ð(8×(?Ñ(?Ñ?ó
Ðð !ŸX™XØ×#Ñ#Ð$ ×'=Ñ'=Ñ=ó
Ðó ˆEØ#Ð8×AÑAÀ%×HÑHØ ×'Ñ'Ø×&Ñ&ðM÷ ‰h�u‹o÷Mñ ñ ð ùò /ùÓOs   «C;³C6ÁC;Ã6C;c                ó²  • [        UR                  5      [        UR                  5      :X  a  UR                  UR                  :w  a  g[        UR                  5      [        UR                  5      :X  a  UR                  UR                  :w  a  gSR                  UR                  5      R	                  5       nSR                  UR                  5      R	                  5       nU R
                   Hg  n[        R                  " XS5      n[        R                  " XT5      nU(       d  M8  U(       d  MA  UR                  S5      UR                  S5      :w  d  Mg    g   g)zïWe want to compare column parameters. However, we only want
to compare parameters that are set. If they both have `collation`,
we want to make sure they are the same. However, if only one
specifies it, dont flag it for being less specific
Fr5  r   T)	Úlenr+  r)  r7  r!  rU   r"  ÚsearchÚgroup)rd   Úinspected_paramsÚmeta_paramsÚinspÚmetaÚregÚmiÚmms           rB   Ú_column_args_matchÚDefaultImpl._column_args_matchA  s  € ô �×"Ñ"Ó#¤sÐ+;×+BÑ+BÓ'CÓCØ×"Ñ"Ð&6×&=Ñ&=Ó=àô �× Ñ Ó!¤SÐ)9×)>Ñ)>Ó%?Ó?Ø× Ñ Ð$4×$9Ñ$9Ó9àà�x‰xÐ(×/Ñ/Ó0×6Ñ6Ó8ˆØ�x‰x˜×*Ñ*Ó+×1Ñ1Ó3ˆà×(Ô(ˆCÜ—’˜3Ó%ˆBÜ—’˜3Ó%ˆBçˆr—b�b˜RŸX™X a›[¨B¯H©H°Q«KÕ7Ùñ )ð rD   c                ó¤   • U R                  U5      nU R                  U5      nU R                  X45      (       d  gU R                  X45      (       d  gg)zšReturns True if there ARE differences between the types of the two
columns. Takes impl.type_synonyms into account between retrospected
and metadata types
TF)r2  r@  rM  )rd   Úinspector_columnÚmetadata_columnr9  r:  s        rB   Úcompare_typeÚDefaultImpl.compare_typeb  sS   € ð  ×5Ñ5Ð6FÓGÐØ×4Ñ4°_ÓEˆà×'Ñ'Ð(8×JÑJØØ×&Ñ&Ð'7×IÑIØØrD   c                ó
   • XC:g  $ rg   rE   )rd   rP  rQ  Úrendered_metadata_defaultÚrendered_inspector_defaults        rB   Úcompare_server_defaultÚ"DefaultImpl.compare_server_defaultr  s   € ð *ÑFÐFrD   c                ó   • g rg   rE   )rd   Úconn_uniquesÚconn_indexesÚmetadata_unique_constraintsÚmetadata_indexess        rB   Úcorrect_for_autogen_constraintsÚ+DefaultImpl.correct_for_autogen_constraints{  s   € ð 	rD   c                óp   • UR                   R                  UR                  La  [        US   U5      US'   g g )NÚexpr)r:   Ú_type_affinityr   )rd   ÚexistingÚexisting_transferÚnew_types       rB   Úcast_for_batch_migrateÚ"DefaultImpl.cast_for_batch_migrate„  s:   € Ø�=‰=×'Ñ'¨x×/FÑ/FÒFÜ(,Ø! &Ñ)¨8ó)Ð˜fÒ%ð GrD   c                óR   • SSS.n[        UR                  U R                  US95      $ )zTRender a SQL expression that is typically a server default,
index expression, etc.

TF)rZ   Úinclude_table)r[   rŒ   )rF   r’   r[   )rd   ra  Úis_server_defaultry   r›   s        rB   Úrender_ddl_sql_exprÚDefaultImpl.render_ddl_sql_exprŠ  s/   € ð (,¸eÑDˆ
äØ�L‰L §¡¸jˆLÐIó
ð 	
rD   c                ó   • U R                   $ rg   )Úautogen_column_reflect)rd   Ú	inspectors     rB   Ú_compat_autogen_column_reflectÚ*DefaultImpl._compat_autogen_column_reflect˜  s   € Ø×*Ñ*Ð*rD   c                ó   • g rg   rE   )rd   Úconn_fksÚmetadata_fkss      rB   Úcorrect_for_autogen_foreignkeysÚ+DefaultImpl.correct_for_autogen_foreignkeys›  s   € ð
 	rD   c                ó   • g)zÅA hook that is attached to the 'column_reflect' event for when
a Table is reflected from the database during the autogenerate
process.

Dialects can elect to modify the information gathered here.

NrE   )rd   ro  rƒ   Úcolumn_infos       rB   rn  Ú"DefaultImpl.autogen_column_reflect¢  r†   rD   c                ó   • g)z„A hook called when :meth:`.EnvironmentContext.run_migrations`
is called.

Implementations can set up per-migration-run state here.

NrE   rˆ   s    rB   Ústart_migrationsÚDefaultImpl.start_migrations«  r†   rD   c                ó@   • U R                  SU R                  -   5        g)zÂEmit the string ``BEGIN``, or the backend-specific
equivalent, on the current connection context.

This is used in offline mode and typically
via :meth:`.EnvironmentContext.begin_transaction`.

ÚBEGINN©rn   r•   rˆ   s    rB   Ú
emit_beginÚDefaultImpl.emit_begin³  s   € ð 	×Ñ˜7 T×%<Ñ%<Ñ<Õ=rD   c                ó@   • U R                  SU R                  -   5        g)zÃEmit the string ``COMMIT``, or the backend-specific
equivalent, on the current connection context.

This is used in offline mode and typically
via :meth:`.EnvironmentContext.begin_transaction`.

ÚCOMMITNr  rˆ   s    rB   Úemit_commitÚDefaultImpl.emit_commit½  s   € ð 	×Ñ˜8 d×&=Ñ&=Ñ=Õ>rD   c                ó   • g©NFrE   )rd   Útype_objÚautogen_contexts      rB   Úrender_typeÚDefaultImpl.render_typeÇ  s   € ð rD   c                óZ  • [        UU[        R                  " 5       S1S9u  p4[        USS 5      n[        USS 5      n[	        U5      [	        U5      :w  a  UR                  S5        UR                  U R                  5        UU[	        U5      =(       d    [	        U5      [	        U5      :g  4$ )NÚalways)Úskip)Ú_compare_identity_optionsr   ÚIdentityÚgetattrÚboolÚaddÚdifference_updaterX   )rd   Úmetadata_identityÚinspector_identityÚdiffÚignoredÚmeta_alwaysÚinspector_alwayss          rB   Ú_compare_identity_defaultÚ%DefaultImpl._compare_identity_defaultÌ  s¨   € ô 2ØØÜ�OŠOÓØ�ñ	
‰ˆô Ð/°¸4Ó@ˆÜ"Ð#5°xÀÓFÐä�Ó¤Ð%5Ó 6Ó6Ø�H‰H�XÔà×Ñ˜t×9Ñ9Ô:ð
 àä�‹J×Mœ$Ð0Ó1´TÐ:LÓ5MÑMð
ð 	
rD   c                ór   • [        UR                  5      n[        UR                  5      nX4:w  a  SU SU 3$ g )Nzunique=z to unique=)r’  Úunique)rd   Úmetadata_indexÚreflected_indexÚconn_uniqueÚmeta_uniques        rB   Ú_compare_index_uniqueÚ!DefaultImpl._compare_index_uniqueè  s@   € ô ˜?×1Ñ1Ó2ˆÜ˜>×0Ñ0Ó1ˆØÓ%Ø˜[˜M¨°[°MÐBÐBàrD   c                ó2   • [         R                  " SX40 UD6$ )NT©r   Úfrom_constraint©rd   Ú
constraintÚoptss      rB   Ú_create_metadata_constraint_sigÚ+DefaultImpl._create_metadata_constraint_sigò  s   € ô ×.Ò.¨t°TÑNÈÑNÐNrD   c                ó2   • [         R                  " SX40 UD6$ r‡  r¦  r¨  s      rB   Ú _create_reflected_constraint_sigÚ,DefaultImpl._create_reflected_constraint_sig÷  s   € ô ×.Ò.¨u°dÑOÈ$ÑOÐOrD   c                óx  • / nU R                  X5      nU(       a  UR                  U5        U R                  U5      nU R                  U5      n[        R
                  " U5      (       d   e[        R
                  " U5      (       d   eXV4 H6  nUR                  (       d  M  [        R                  SUR                  5        M8     UR                  UR                  :w  a+  UR                  SUR                   SUR                   35        U(       a  [        R                  " U5      $ [        R                  " 5       $ )zCompare two indexes by comparing the signature generated by
``create_index_sig``.

This method returns a ``ComparisonResult``.
z“Generating approximate signature for index %s. The dialect implementation should either skip expression indexes or provide a custom implementation.úexpression ú to )r£  r%  r«  r®  r   Úis_index_sigÚhas_expressionsÚlogÚwarningrÕ   Úcolumn_namesr   Ú	DifferentÚEqual)rd   rŸ  r   ÚmsgÚ
unique_msgÚm_sigÚr_sigÚsigs           rB   Úcompare_indexesÚDefaultImpl.compare_indexesü  s  € ð ˆØ×/Ñ/Øó
ˆ
ö Ø�J‰J�zÔ"Ø×4Ñ4°^ÓDˆØ×5Ñ5°oÓFˆä×$Ò$ U×+Ñ+Ð+Ð+Ü×$Ò$ U×+Ñ+Ð+Ð+ð “<ˆCØ×"×"Ñ"Ü—‘ð:ð —I‘Iöñ  ð ×Ñ ×!3Ñ!3Ó3Ø�J‰JØ˜e×0Ñ0Ð1°°e×6HÑ6HÐ5IÐJôö Ü#×-Ò-¨cÓ2Ð2ä#×)Ò)Ó+Ð+rD   c                óâ   • U R                  U5      nU R                  U5      nUR                  nUR                  nXe:w  a  [        R                  " SU SU 35      $ [        R
                  " 5       $ )zðCompare two unique constraints by comparing the two signatures.

The arguments are two tuples that contain the unique constraint and
the signatures generated by ``create_unique_constraint_sig``.

This method returns a ``ComparisonResult``.
r±  r²  )r«  r®  Úunnamedr   r¸  r¹  )rd   Úmetadata_constraintÚreflected_constraintÚmetadata_tupÚreflected_tupÚmeta_sigÚconn_sigs          rB   Úcompare_unique_constraintÚ%DefaultImpl.compare_unique_constraint'  s~   € ð ×;Ñ;Øó
ˆð ×=Ñ=Ø ó
ˆð  ×'Ñ'ˆØ ×(Ñ(ˆØÓÜ#×-Ò-Ø˜h˜Z t¨H¨:Ð6óð ô $×)Ò)Ó+Ð+rD   c                ó,   • [         R                  " 5       $ rg   )r   r¹  )rd   rÃ  rÄ  s      rB   Úcompare_check_constraintÚ$DefaultImpl.compare_check_constraintC  s   € ô
  ×%Ò%Ó'Ð'rD   c           
     ót  • U Vs0 sH  o3R                   U_M     nn[        U5       H‰  nUR                   U;   a  M  [        R                  " U5      nU(       d  M4  [        R
                  " SUR                   < SU R                  < S[        R                   S35        UR                  U5        M‹     g s  snf )Nz@autogenerate skipping metadata-specified expression-based index z
; dialect z under SQLAlchemy z6 can't reflect these indexes so they can't be compared)	rh   r  r   Úis_expression_indexr   r°   r9   Úsqlalchemy_versionÚdiscard)rd   r]  r[  r  Úconn_indexes_by_nameÚidxÚiexs          rB   Ú_skip_functional_indexesÚ$DefaultImpl._skip_functional_indexesJ  s®   € Ù3?Ó@±<¨a§¡¨¢	±<ÐÐ@äÐ(Ö)ˆCØ�x‰xÐ/Ó/ÙÜ×1Ò1°#Ó6ˆCßˆsÜ—	’	ð.à—x‘x‘l *¨T×-=Ñ-=Ñ,@ð A"Ü"-×"@Ñ"@Ð!Að BFðFôð !×(Ñ(¨Ö-ò *ùò  As   …B5c                ó&   • UR                  S0 5      $ )NÚdialect_options)r^   )rd   Úreflected_objectÚkinds      rB   Ú adjust_reflected_dialect_optionsÚ,DefaultImpl.adjust_reflected_dialect_options[  s   € ð  ×#Ñ#Ð$5°rÓ:Ð:rD   )r]   r\   ra   r[   rZ   r`   r_   rb   )r[   r   r\   úConnection | Noner]   r’  rb   úbool | Noner_   zTextIO | Nonera   rG   ÚreturnÚNone)r[   r   rß  ztype[DefaultImpl])r   rF   rß  rà  )
rv   rF   rw   ú
str | Nonerx   r’  ry   r   rß  r   )r~   r4   rß  r’  )r‚   r3   rƒ   r   rß  rà  )rß  rÝ  )
r˜   úExecutable | strr–   zMapping[str, Any] | Noner™   z"Sequence[Mapping[str, Any]] | Nonerš   úMapping[str, Any]rß  zCursorResult | Nonerg   )r¡   râ  r–   zdict[str, Any] | Nonerß  rà  ) rº   rF   r»   rF   rs   rÞ  r£   r1   rh   rá  r¤   úTypeEngine | Noner   rá  r¥   rÞ  r¦   zstr | Literal[False] | Noner§   rá  r¨   rä  r©   r1   rª   rÞ  r«   rÞ  ry   r   rß  rà  )rº   rF   rÅ   úColumn[Any]r   ústr | quoted_name | NonerÀ   rÞ  rÁ   rÞ  rÂ   rÞ  rß  rà  )
rº   rF   rÅ   rå  r   rá  rÉ   rÞ  rß  rà  )rÕ   r   ry   r   rß  rà  )rÕ   r+   ry   r   rß  rà  )rÞ   rF   rß   zstr | quoted_namer   ræ  rß  rà  )rƒ   r   ry   r   rß  rà  )rñ   r-   ry   r   rß  rà  )rƒ   r   rß  rà  )rÅ   rå  rß  rà  )T)rƒ   zTableClause | Tabler  z
list[dict]r  r’  rß  rà  )rÅ   r   rß  r&  )r9  r&  r:  r&  rß  r’  )rF  r&  rG  r&  rß  r’  )rP  rå  rQ  r   rß  r’  )
rZ  úset[UniqueConstraint]r[  ú
set[Index]r\  rç  r]  rè  rß  rà  )F)ra  r'   rj  r’  ry   r   rß  rF   )ro  r&   rß  r   )rs  úset[ForeignKeyConstraint]rt  ré  rß  rà  )rß  rà  )rˆ  r0   r‰  r2   rß  zstr | Literal[False])rŸ  r-   r   r-   rß  rá  )r©  z_autogen._Crª  r   rß  z_constraint_sig[_autogen._C])rŸ  r-   r   r-   rß  r   )rÃ  r.   rÄ  r.   rß  r   )rÃ  r*   rÄ  r*   rß  r   )rÙ  Ú_ReflectedConstraintrÚ  rF   rß  rG   )@rH   rI   rJ   rK   Ú__doc__r9   rb   r•   rT   Ú__annotations__rU   rX   r;   Úclassmethodri   rn   r{   r   r„   Úpropertyr‰   r   Úimmutabledictrž   r—   r½   rÆ   rÌ   rÖ   rÚ   rà   ró   rù   rý   rî   r  rð   r  r  r2  r@  rM  rR  rW  r^  rf  rk  rp  ru  rn  r{  r€  r„  rŠ  r›  r£  r«  r®  r¿  rÉ  rÌ  rÕ  rÛ  rL   rE   rD   rB   rN   rN   W   s¢  ‡ ñ
ð €KàÐØÐØ,5°yÐ+AÐ*C€MÐ'ÓCØ&(Ð�mÓ(ð
 .BÐ˜?ÓAðàðð &ðð ð	ð
 'ðð %ðð %ðð 
ôð4 ó$ó ð$ô#ð
 ð ð ð )ð	 ð
 ð ð ð ð 
ô ðDØ+ðà	ôð	Ø(ð	Ø16ð	à	ô	ð óó ðð 7;Ø:>Ø$(×$6Ò$6Ó$8ð+7à#ð+7ð 4ð+7ð 8ð	+7ð
 "ð+7ð 
õ+7ð` 48ð+àð+ð 1ð+ð 
õ	+ð !%Ø16ØØ#'Ø!Ø%)Ø/4Ø'+Ø+/Ø:>Ø)-Ø.2ñ!oàðoð ðoð
 ðoð /ðoð ðoð !ðoð ðoð #ðoð -ðoð %ðoð )ðoð "8ðoð 'ðoð  !,ð!oð" ð#oð$ 
õ%oðl ,0Ø%)Ø)-Ø*.ñ
àð
ð ð
ð
 )ð
ð #ð
ð 'ð
ð (ð
ð 
õ
ð4 "Ø!%ñ
àð
ð ð
ð
 ð
ð ð
ð 
õ
ô:ô7ð ,0ð	
àð
ð *ð
ð )ð	
ð
 
õ
ô3ô.
ô4ô2ô3ô4ô2ð !ð	$Jà"ð$Jð ð$Jð ð	$Jð
 
õ$JôL&ðPØ &ðØ9?ðà	ôð,Ø &ðØ5;ðà	ôðBØ +ðØ>Dðà	ôò Gðà+ðð !ðð &;ð	ð
 %ðð 
ôòð >Cð
Ø!ð
Ø6:ð
ØJMð
à	õ
ô+ðà+ðð 0ðð 
ô	òôô>ô?ðØ"ðØ5Cðà	ôò

ð8Ø#ðØ6;ðà	ôðOØ%ðOØ/2ðOà	%ôOð
PØ%ðPØ/2ðPà	%ôPð
),àð),ð ð),ð 
ô	),ðV,à-ð,ð /ð,ð 
ô	,ð8(à,ð(ð .ð(ð 
ô	(ò.ð";Ø 4ð;Ø<?ð;à	÷;rD   rN   )Ú	metaclassc                  ó>   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	rg
)r&  ia  rF   r6  z	list[str]r+  r)  zdict[str, str]r(  rE   N)rH   rI   rJ   rK   rì  rL   rE   rD   rB   r&  r&  a  s   ‡ ØƒKØÓØ
ƒOØÖrD   r&  c           
     óÞ  ^^^• [         R                  " U 5      n[         R                  " U5      n[        5       m[        5       m        SUUU4S jjnU" UU[         R                  " U5      [        U5      R                  U5      5        [         R                  (       aI  [        US5      (       d   eU" [        U S0 5      [        US0 5      UR                  [        US0 5      5        TT4$ )Nc                ó  >• [        U5      R                  T
5       Hf  nU R                  U5      nUR                  U5      nXe:w  d  M,  UR                  U5      nXW:X  a  T	R                  U5        MU  TR                  U5        Mh     g rg   )ÚsetÚ
differencer^   r“  )Ú	meta_dictÚ	insp_dictÚdefault_dictÚattrsÚattrÚ
meta_valueÚ
insp_valueÚdefault_valuer—  Úignored_attrrŽ  s           €€€rB   Úcheck_dictsÚ._compare_identity_options.<locals>.check_dictsw  so   ø€ ô ˜“J×)Ñ)¨$Ö/ˆDØ"Ÿ™ tÓ,ˆJØ"Ÿ™ tÓ,ˆJØÕ'Ø ,× 0Ñ 0°Ó 6�ØÓ.Ø ×$Ñ$ TÖ*à—H‘H˜T–Nò 0rD   Údialect_kwargs)rö  rã  r÷  rã  rø  rã  rù  zIterable[str])r   Ú_get_identity_options_dictrô  ÚunionÚidentity_has_dialect_kwargsÚhasattrr‘  r  )	Úmetadata_ioÚinspector_ioÚ
default_iorŽ  Úmeta_dÚinsp_drÿ  r—  rþ  s	      `   @@rB   r�  r�  h  s÷   ú€ ô ×3Ò3°KÓ@€FÜ×3Ò3°LÓA€Fä‹5€DÜ“5€Lð#Ø$ð#à$ð#ð (ð#ð ÷	#ñ #ñ  ØØÜ×.Ò.¨zÓ:ÜˆF‹×Ñ˜&Ó!ô	ô ×.×.Ü�zÐ#3×4Ñ4Ð4Ð4ñ 	Ü�KÐ!1°2Ó6Ü�LÐ"2°BÓ7Ø×%Ñ%Ü�LÐ"2°BÓ7ô		
ð �ÐÐrD   )r  ú(schema.Identity | schema.Sequence | Noner  r  r  z!schema.Identity | schema.SequencerŽ  zset[str])LÚ
__future__r   Úcollections.abcr   r   r   Úloggingr"  Útypingr   r   r	   r
   Ú
sqlalchemyr   r   r   r   r   r   r   r   Ú r   r   r   r   r   r   r   r   Úsqlalchemy.enginer   r   Úsqlalchemy.engine.cursorr    Úsqlalchemy.engine.interfacesr!   r"   r#   r$   r%   Úsqlalchemy.engine.reflectionr&   Úsqlalchemy.sqlr'   r(   Úsqlalchemy.sql.elementsr)   Úsqlalchemy.sql.schemar*   r+   r,   r-   r.   Úsqlalchemy.sql.selectabler/   Úsqlalchemy.sql.type_apir0   r1   Úautogenerate.apir2   Úoperations.batchr3   r4   rê  Ú	getLoggerrH   rµ  r:   r6   r<   rì  rN   r&  r�  rE   rD   rB   Ú<module>r     s:  ðö #å $Ý #Ý $Û Û 	Ý Ý Ý Ý  å Ý Ý Ý +Ý Ý Ý Ý å Ý Ý 8Ý :Ý Ý æÝÝå,Ý)Ý5ÝEÝJÝ;ÝJÝFÝ6Ý,Ý)Ý3Ý5Ý0Ý:Ý+Ý6Ý5Ý2å,Ý1Ý1Ý6ð 	!Ø
'ñ	(à
'ñ	(ð ñ	ð $ñ		$ð ð ×Ò˜Ó!€ô
ˆtô 
ð (*€Ð$Ó )ôG;˜Hò G;ôTˆZô ð0Ø9ð0à:ð0ð 2ð0ð õ	0rD   