Ë
    Ó~ïi�z  ã                  ó.  — U d dl mZ d dl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 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r•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/m0Z0 d d+l1m2Z2 d d,l1m3Z3 d d-l4m5Z5 d d.l6m7Z7 d d/l6m8Z8 d d0l6m9Z9 d d1l6m:Z: d d2l;m<Z< d d3l=m>Z> dd4lm?Z? dd5l@mAZA dd6lBmCZC dd7lBmDZD e+e-z  e,z  e.z  ZE ejŒ                  eG«      ZH G d8„ d9eI«      ZJi ZKd:eLd;<    G d<„ d=eJ¬>«      ZM G d?„ d@e«      ZN	 	 	 	 	 	 	 	 dBdA„ZOy)Cé    )ÚannotationsN)ÚAny)ÚCallable)ÚDict)ÚIterable)ÚList)ÚMapping)Ú
NamedTuple)ÚOptional)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚUnion)Úcast)ÚColumn)ÚMetaData)ÚPrimaryKeyConstraint©Úschema)ÚString)ÚTable)Útexté   )Ú_autogen)Úbase)Ú_constraint_sig)ÚComparisonResulté   )Úutil)Úsqla_compat)ÚLiteral)ÚTextIO)Ú
Connection)ÚDialect)ÚCursorResult)ÚReflectedForeignKeyConstraint)ÚReflectedIndex)ÚReflectedPrimaryKeyConstraint)ÚReflectedUniqueConstraint)Ú	Inspector)ÚClauseElement)Ú
Executable)Úquoted_name)Ú
Constraint)ÚForeignKeyConstraint)ÚIndex)ÚUniqueConstraint)ÚTableClause)Ú
TypeEngine)Ú_ServerDefaultType)ÚAutogenContext)ÚApplyBatchImpl)ÚBatchOperationsImplc                  ó    — e Zd Z	 	 	 	 	 	 dd„Zy)ÚImplMetac                óV   — t         j                  | |||«      }d|v r| t        |d   <   |S )NÚ__dialect__)ÚtypeÚ__init__Ú_impls)ÚclsÚ	classnameÚbasesÚdict_Únewtypes        úg/var/www/acinvestment.org/public_html/aci/backend/venv/lib/python3.12/site-packages/alembic/ddl/impl.pyr?   zImplMeta.__init__L   s4   € ô —-‘-  Y°°uÓ=ˆØ˜EÑ!Ø+.ŒF�5˜Ñ'Ñ(Øˆó    N)rB   ÚstrrC   zTuple[Type[DefaultImpl]]rD   úDict[str, Any])Ú__name__Ú
__module__Ú__qualname__r?   © rG   rF   r;   r;   K   s#   „ ð	àð	ð (ð	ð ô		rG   r;   zDict[str, Type[DefaultImpl]]r@   c                  óº  — e Zd ZU dZdZdZdZddhfZded<   d	Z	d
ed<   dZ
ded<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 dAd„ZedBd„«       ZdCd„Z	 	 	 	 	 	 	 	 	 	 dDd„Z	 	 	 	 dEd„Z	 	 	 	 	 	 dFd„ZedGd„«       Zdd ej*                  «       f	 	 	 	 	 	 	 	 	 dHd„Z	 dI	 	 	 	 	 dJd„Zdddddddddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dKd„Zdddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dLd„Zdddœ	 	 	 	 	 	 	 	 	 dMd„ZdNd„ZdOd „Z	 dI	 	 	 	 	 	 	 dPd!„ZdQd"„ZdQd#„ZdRd$„Z dSd%„Z!dSd&„Z"dTd'„Z#dRd(„Z$	 dU	 	 	 	 	 	 	 dVd)„Z%dWd*„Z&	 	 	 	 	 	 dXd+„Z'	 	 	 	 	 	 dYd,„Z(	 	 	 	 	 	 dZd-„Z)d.„ Z*	 	 	 	 	 	 	 	 	 	 d[d/„Z+d0„ Z,	 d\	 	 	 	 	 	 	 d]d1„Z-d^d2„Z.	 	 	 	 	 	 d_d3„Z/d4„ Z0d`d5„Z1d`d6„Z2d`d7„Z3	 	 	 	 	 	 dad8„Z4d9„ Z5	 	 	 	 	 	 dbd:„Z6	 	 	 	 	 	 dcd;„Z7	 	 	 	 	 	 dcd<„Z8	 	 	 	 	 	 ddd=„Z9	 	 	 	 	 	 ded>„Z:d?„ Z;	 	 	 	 	 	 dfd@„Z<y)gÚDefaultImplaš  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_synonymsrM   zSequence[str]Útype_arg_extract)ÚorderÚon_nullzTuple[str, ...]Úidentity_attrs_ignorec                óô   — || _         || _        || _        |j                  dd«      | _        || _        i | _        || _        |�|| _        | j                  r"| j                  st        j                  d«      ‚y y )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          rF   r?   zDefaultImpl.__init__t   sƒ   € ð ˆŒØ$ˆŒØˆŒØ)×-Ñ-¨o¸uÓEˆÔà*ˆÔØˆŒ	Ø(ˆÔØÐ(Ø%6ˆDÔ"à×ÒØ—;’;Ü×'Ñ'ØIóð ð ð rG   c                ó(   — t         |j                     S ©N)r@   Úname)rA   r[   s     rF   Úget_by_dialectzDefaultImpl.get_by_dialectŽ   s   € ä�g—l‘lÑ#Ð#rG   c                ó�   — | j                   €J ‚| j                   j                  |dz   «       | j                   j                  «        y )Nz

)r_   ÚwriteÚflush)rd   r   s     rF   Ústatic_outputzDefaultImpl.static_output’   s>   € Ø×!Ñ!Ð-Ð-Ð-Ø×Ñ× Ñ  ¨¡Ô/Ø×Ñ× Ñ Õ"rG   c          
     ó    — t        |t        «       t        dt        d«      d¬«      |¬«      }|r|j	                  t        d|› d�¬«      «       |S )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)rg   )r   r   r   r   Úappend_constraintr   )rd   Úversion_tableÚversion_table_schemaÚversion_table_pkÚkwÚvts         rF   Úversion_table_implzDefaultImpl.version_table_impl—   sW   € ô& ØÜ‹JÜ�=¤&¨£*°uÔ=Ø'ô	
ˆñ Ø× Ñ Ü$Ø!¨=¨/¸Ð(>ôôð ˆ	rG   c                 ó   — y)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.

        FrM   )rd   Úbatch_ops     rF   Úrequires_recreate_in_batchz&DefaultImpl.requires_recreate_in_batch¹   s   € ð rG   c                 ó   — y)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.

        NrM   )rd   Ú
batch_implÚtables      rF   Úprep_table_for_batchz DefaultImpl.prep_table_for_batchÆ   ó   � rG   c                ó   — | j                   S rf   )r\   ©rd   s    rF   ÚbindzDefaultImpl.bindÑ   s   € à�‰ÐrG   Nc                ó†  — t        |t        «      rt        |«      }| j                  rÂ|€|rt	        d«      ‚| j
                  r)t        |t        j                  «      st        ddi¬«      }ni }t        rt        |t        «      sJ ‚ |j                  d	d| j                  i|¤Ž}| j                  t        |«      j                  dd«      j                  «       | j                   z   «       y | j"                  }|€J ‚|r |j$                  d	i |¤Ž}|r|�t	        d«      ‚|r|j'                  ||«      S |j'                  ||«      S )
Nz&SQL parameters not allowed with as_sqlrZ   T)Úcompile_kwargsr[   ú	z    z2Can't send params and multiparams at the same timerM   )Ú
isinstancerH   r   r]   Ú	TypeErrorrZ   r   Ú
DDLElementÚdictr   r-   Úcompiler[   rl   ÚreplaceÚstripÚcommand_terminatorr\   Úexecution_optionsÚexecute)rd   Ú	constructr�   ÚmultiparamsÚparamsÚ
compile_kwÚcompiledÚconns           rF   Ú_execzDefaultImpl._execÕ   sA  € ô �i¤Ô%Ü˜Y›ˆIØ�;Š;ØÐ&©&ÜÐ HÓIÐIð ×!Ò!¬*Øœ6×,Ñ,ô+ô "°/À4Ð1HÔI‘
à�
åÜ! )¬]Ô;Ð;Ð;Ø(�y×(Ñ(ÑL°·±ÐLÀÑLˆHØ×ÑÜ�H“×%Ñ% d¨FÓ3×9Ñ9Ó;Ø×)Ñ)ñ*ôð à—?‘?ˆDØÐ#Ð#Ð#Ù Ø-�t×-Ñ-ÑBÐ0AÑB�á˜+Ð1ÜØHóð ñ Ø—|‘| I¨{Ó;Ð;à—|‘| I¨vÓ6Ð6rG   c                ó(   — | j                  ||«       y rf   )r—   )rd   Úsqlr�   s      rF   r�   zDefaultImpl.execute  s   € ð
 	�
‰
�3Ð)Õ*rG   )rp   Úserver_defaultrg   Útype_r   ÚautoincrementÚcommentÚexisting_commentÚexisting_typeÚexisting_server_defaultÚexisting_nullableÚexisting_autoincrementc               óÀ  — |€|�t        j                  dd¬«       |�,| j                  t        j                  ||||||||
¬«      «       |dur…i }t        j                  ||«      rt        j                  }n<t        j                  ||«      rt        j                  }| |d<   nt        j                  }| j                   ||||f|||||
dœ|¤Ž«       |�,| j                  t        j                  ||||||||
¬«      «       |	dur,| j                  t        j                  |||	|||||
¬«      «       |�,| j                  t        j                  |||||||¬«      «       y y )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_namerp   rš   rg   r›   r   rœ   r�   rž   rŸ   r    r¡   r¢   rv   Úcls_s                    rF   Úalter_columnzDefaultImpl.alter_column	  s°  € ð. Ð$Ð(>Ð(JÜ�I‰Ið,àõð
 ÐØ�J‰JÜ×#Ñ#ØØØØ!Ø"/Ø,CØ&7Ø%5ô	ôð  Ñ&ØˆBô ×6Ñ6ØÐ 7ôô ×1Ñ1‘Ü×8Ñ8ØÐ 7ôô ×1Ñ1�Ø!��6’
ä×)Ñ)�Ø�J‰JÙØØØ"ð
ð "Ø"/Ø,CØ&7Ø%5ñ
ð ñ
ôð ÐØ�J‰JÜ—‘ØØØØ!Ø"/Ø,CØ&7Ø%5ô	ôð ˜%ÑØ�J‰JÜ×"Ñ"ØØØØ!Ø"/Ø,CØ&7Ø%5ô	ôð ÐØ�J‰JÜ—‘ØØØØ!Ø"/Ø,CØ&7ôõ
ð rG   ©r   Úif_not_existsÚinline_referencesÚinline_primary_keyc          
     óX   — | j                  t        j                  ||||||¬«      «       y )Nrµ   )r—   r   Ú	AddColumn)rd   r±   Úcolumnr   r¶   r·   r¸   s          rF   Ú
add_columnzDefaultImpl.add_column~  s.   € ð 	�
‰
Ü�N‰NØØØØ+Ø"3Ø#5ôõ		
rG   ©r   Ú	if_existsc               óT   — | j                  t        j                  ||||¬«      «       y )Nr½   )r—   r   Ú
DropColumn)rd   r±   r»   r   r¾   rv   s         rF   Údrop_columnzDefaultImpl.drop_column“  s%   € ð 	�
‰
Ü�O‰OØ˜F¨6¸Yôõ	
rG   c                óÎ   — |j                   �|j                  | «      rHt        j                  r|j                  dd«       | j	                  t        j                  |fi |¤Ž«       y y )NÚisolate_from_tableT)Ú_create_ruler"   Úsqla_2_1Ú
setdefaultr—   r   ÚAddConstraint©rd   Úconstrv   s      rF   Úadd_constraintzDefaultImpl.add_constraint¢  sU   € Ø×ÑÐ%¨×);Ñ);¸DÔ)AÜ×#Ò#à—‘Ð2°DÔ9Ø�J‰J”v×+Ñ+¨EÑ8°RÑ8Õ9ð	 *BrG   c                óN   — | j                  t        j                  |fi |¤Ž«       y rf   )r—   r   ÚDropConstraintrÈ   s      rF   Údrop_constraintzDefaultImpl.drop_constraint©  s   € Ø�
‰
”6×(Ñ(¨Ñ5°"Ñ5Õ6rG   c                óR   — | j                  t        j                  |||¬«      «       y )Nr   )r—   r   ÚRenameTable)rd   Úold_table_nameÚnew_table_namer   s       rF   Úrename_tablezDefaultImpl.rename_table¬  s"   € ð 	�
‰
Ü×Ñ˜^¨^ÀFÔKõ	
rG   c                ód  — |j                   j                  || j                  d| ¬«       | j                  t	        j
                  |fi |¤Ž«       |j                   j                  || j                  d| ¬«       |j                  D ]&  }| j                  t	        j                  |«      «       Œ( | j                  j                  xr | j                  j                   }|j                  }|r|r| j                  |«       |j                  D ]%  }|j                  }|sŒ|sŒ| j                  |«       Œ' y ©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~   rv   ÚindexÚwith_commentr�   r»   s          rF   Úcreate_tablezDefaultImpl.create_table¶  s  € Ø�‰×$Ñ$Ø�4—?‘?¨uÀ$ð 	%ô 	
ð 	�
‰
”6×%Ñ% eÑ2¨rÑ2Ô3Ø�‰×#Ñ#Ø�4—?‘?¨uÀ$ð 	$ô 	
ð —]‘]ò 	2ˆEØ�J‰J”v×)Ñ)¨%Ó0Õ1ð	2ð �L‰L×*Ñ*ÒO°4·<±<×3OÑ3OÐ/Oð 	ð —-‘-ˆÙ‘|Ø×%Ñ% eÔ,à—m‘mò 	3ˆFØ—n‘nˆGÚš<Ø×*Ñ*¨6Õ2ñ	3rG   c                óò   — |j                   j                  || j                  d| ¬«       | j                  t	        j
                  |fi |¤Ž«       |j                   j                  || j                  d| ¬«       y rÔ   )r×   Úbefore_dropr\   r—   r   Ú	DropTableÚ
after_drop)rd   r~   rv   s      rF   Ú
drop_tablezDefaultImpl.drop_tableÍ  sh   € Ø�‰×"Ñ"Ø�4—?‘?¨uÀ$ð 	#ô 	
ð 	�
‰
”6×#Ñ# EÑ0¨RÑ0Ô1Ø�‰×!Ñ!Ø�4—?‘?¨uÀ$ð 	"õ 	
rG   c                óN   — | j                  t        j                  |fi |¤Ž«       y rf   )r—   r   rÜ   ©rd   râ   rv   s      rF   Úcreate_indexzDefaultImpl.create_indexÖ  s   € Ø�
‰
”6×%Ñ% eÑ2¨rÑ2Õ3rG   c                óL   — | j                  t        j                  |«      «       y rf   )r—   r   ÚSetTableComment©rd   r~   s     rF   rß   z DefaultImpl.create_table_commentÙ  s   € Ø�
‰
”6×)Ñ)¨%Ó0Õ1rG   c                óL   — | j                  t        j                  |«      «       y rf   )r—   r   ÚDropTableCommentrï   s     rF   Údrop_table_commentzDefaultImpl.drop_table_commentÜ  s   € Ø�
‰
”6×*Ñ*¨5Ó1Õ2rG   c                óL   — | j                  t        j                  |«      «       y rf   )r—   r   ÚSetColumnComment)rd   r»   s     rF   rá   z!DefaultImpl.create_column_commentß  s   € Ø�
‰
”6×*Ñ*¨6Ó2Õ3rG   c                óN   — | j                  t        j                  |fi |¤Ž«       y rf   )r—   r   Ú	DropIndexrë   s      rF   Ú
drop_indexzDefaultImpl.drop_indexâ  s   € Ø�
‰
”6×#Ñ# EÑ0¨RÑ0Õ1rG   c                óð  — t        |t        «      st        d«      ‚|rt        |d   t        «      st        d«      ‚| j                  r°|D ]ª  }| j                   |j                  «       j                  «       j                  di |j                  «       D ��ci c]Q  \  }}|t        |t        j                  «      s/t        j                  |||j                  |   j                  ¬«      n|“ŒS c}}¤Ž«       Œ¬ y |rw|r0| j                  |j                  «       j                  «       |¬«       y |D ]?  }| j                   |j                  «       j                  «       j                  di |¤Ž«       ŒA y y c c}}w )NzList expectedr   zList of dictionaries expected)r›   )r’   rM   )r‡   Úlistrˆ   rŠ   r]   r—   ÚinsertÚinlineÚvaluesÚitemsr"   Ú_literal_bindparamÚcr>   )rd   r~   ÚrowsÚmultiinsertÚrowÚkÚvs          rF   Úbulk_insertzDefaultImpl.bulk_insertå  sN  € ô ˜$¤Ô%Ü˜OÓ,Ð,Ùœ* T¨!¡W¬dÔ3ÜÐ;Ó<Ð<Ø�;Š;Øò �Ø—
‘
ð�E—L‘L“Nß‘V“Xß‘Vñð ),¯	©	«÷ñ !%  1ð ô (2Ø$%¤{×'EÑ'Eô("ô !,× >Ñ >Ø$% q°·±¸±
·±õ!"ð &'ñ'óñõññ( ÙØ—J‘J˜uŸ|™|›~×4Ñ4Ó6ÀD�JÕIà#ò J˜ØŸ
™
Ð#A 5§<¡<£>×#8Ñ#8Ó#:×#AÑ#AÑ#HÀCÑ#HÕIñJð	 ùós   ÂAE2c                óR  — | j                   j                  j                  |j                  «      j	                  «       }t        j                  d|«      }g }d }|D ],  }t        j                  d|«      r|}Œ|j                  |«       Œ. t        |d   |dd  g i «      }|rˆt        j                  d|«      D ]o  }d|v r@|j                  d«      \  }	}
|
j                  «       |j                  |	j                  «       <   ŒG|j                  j                  |j                  «       «       Œq |S )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              rF   Ú_tokenize_column_typez!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ò 5�Ø˜$‘;Ø#Ÿz™z¨#›‘H�C˜Ø14·±³�F—M‘M #§)¡)£+Ò.à—K‘K×&Ñ& t§z¡z£|Õ4ð5ð ˆrG   c           	     óæ  — |j                   |j                   k(  ry| j                  D ��cg c]   }|D �ch c]  }|j                  «       ’Œ c}‘Œ" }}}dj                  |j                   g|j                  z   «      }dj                  |j                   g|j                  z   «      }|D ]>  }||hj                  |«      s(|j                   |j                   hj                  |«      sŒ> y yc c}w c c}}w )NTú F)Útoken0rT   r
  Újoinr  Úissubset)rd   Úinspector_paramsÚmetadata_paramsÚbatchÚtÚsynonymsÚinspector_all_termsÚmetadata_all_termss           rF   Ú_column_types_matchzDefaultImpl._column_types_match3  sô   € ð ×"Ñ" o×&<Ñ&<Ò<Øà<@×<NÑ<N×O°5¨Ö. 1�Q—W‘W•YÔ.ÐOˆÑOØ!Ÿh™hØ×$Ñ$Ð%Ð(8×(?Ñ(?Ñ?ó
Ðð !ŸX™XØ×#Ñ#Ð$ ×'=Ñ'=Ñ=ó
Ðð ò 	ˆEØ#Ð%7Ð8×AÑAÀ%ÔHØ ×'Ñ'Ø×&Ñ&ðM÷ ‰h�u‹oñMñ ð	ð ùò /ùÓOs   ª	C-³C(Á
C-Ã(C-c                óŒ  — t        |j                  «      t        |j                  «      k(  r|j                  |j                  k7  ryt        |j                  «      t        |j                  «      k(  r|j                  |j                  k7  rydj                  |j                  «      j	                  «       }dj                  |j                  «      j	                  «       }| j
                  D ]Y  }t        j                  ||«      }t        j                  ||«      }|sŒ2|sŒ5|j                  d«      |j                  d«      k7  sŒY y y)a  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
        Fr  r   T)	Úlenr  r  r  r
  rU   r  ÚsearchÚgroup)rd   Úinspected_paramsÚmeta_paramsÚinspÚmetaÚregÚmiÚmms           rF   Ú_column_args_matchzDefaultImpl._column_args_matchI  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â’b˜RŸX™X a›[¨B¯H©H°Q«KÓ7Ùð	ð rG   c                ó”   — | j                  |«      }| j                  |«      }| j                  ||«      sy| j                  ||«      syy)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)r  r(  r4  )rd   Úinspector_columnÚmetadata_columnr!  r"  s        rF   Úcompare_typezDefaultImpl.compare_typej  sQ   € ð  ×5Ñ5Ð6FÓGÐØ×4Ñ4°_ÓEˆà×'Ñ'Ð(8¸/ÔJØØ×&Ñ&Ð'7¸ÔIØØrG   c                ó   — ||k7  S rf   rM   )rd   r6  r7  Úrendered_metadata_defaultÚrendered_inspector_defaults        rF   Úcompare_server_defaultz"DefaultImpl.compare_server_defaultz  s   € ð *Ð-FÑFÐFrG   c                 ó   — y rf   rM   )rd   Úconn_uniquesÚconn_indexesÚmetadata_unique_constraintsÚmetadata_indexess        rF   Úcorrect_for_autogen_constraintsz+DefaultImpl.correct_for_autogen_constraintsƒ  s   € ð 	rG   c                ón   — |j                   j                  |j                  urt        |d   |«      |d<   y y )NÚexpr)r>   Ú_type_affinityr   )rd   ÚexistingÚexisting_transferÚnew_types       rF   Úcast_for_batch_migratez"DefaultImpl.cast_for_batch_migrateŒ  s:   € Ø�=‰=×'Ñ'¨x×/FÑ/FÑFÜ(,Ø! &Ñ)¨8ó)Ð˜fÒ%ð GrG   c                óX   — dddœ}t        |j                  | j                  |¬«      «      S )zdRender a SQL expression that is typically a server default,
        index expression, etc.

        TF)rZ   Úinclude_table)r[   r…   )rH   r‹   r[   )rd   rD  Úis_server_defaultrv   r”   s        rF   Úrender_ddl_sql_exprzDefaultImpl.render_ddl_sql_expr’  s/   € ð (,¸eÑDˆ
äØ�L‰L §¡¸jˆLÓIó
ð 	
rG   c                ó   — | j                   S rf   )Úautogen_column_reflect)rd   Ú	inspectors     rF   Ú_compat_autogen_column_reflectz*DefaultImpl._compat_autogen_column_reflect   s   € Ø×*Ñ*Ð*rG   c                 ó   — y rf   rM   )rd   Úconn_fksÚmetadata_fkss      rF   Úcorrect_for_autogen_foreignkeysz+DefaultImpl.correct_for_autogen_foreignkeys£  s   € ð
 	rG   c                 ó   — y)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.

        NrM   )rd   rP  r~   Úcolumn_infos       rF   rO  z"DefaultImpl.autogen_column_reflectª  r€   rG   c                 ó   — y)zœA hook called when :meth:`.EnvironmentContext.run_migrations`
        is called.

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

        NrM   r‚   s    rF   Ústart_migrationszDefaultImpl.start_migrations³  r€   rG   c                ó@   — | j                  d| j                  z   «       y)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©rl   rŽ   r‚   s    rF   Ú
emit_beginzDefaultImpl.emit_begin»  s   € ð 	×Ñ˜7 T×%<Ñ%<Ñ<Õ=rG   c                ó@   — | j                  d| j                  z   «       y)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    rF   Úemit_commitzDefaultImpl.emit_commitÅ  s   € ð 	×Ñ˜8 d×&=Ñ&=Ñ=Õ>rG   c                 ó   — y©NFrM   )rd   Útype_objÚautogen_contexts      rF   Úrender_typezDefaultImpl.render_typeÏ  s   € ð rG   c                óT  — t        ||t        j                  «       dh¬«      \  }}t        |dd «      }t        |dd «      }t	        |«      t	        |«      k7  r|j                  d«       |j                  | j                  «       ||t	        |«      xs t	        |«      t	        |«      k7  fS )NÚalways)Úskip)Ú_compare_identity_optionsr   ÚIdentityÚgetattrÚboolÚaddÚdifference_updaterX   )rd   Úmetadata_identityÚinspector_identityÚdiffÚignoredÚmeta_alwaysÚinspector_alwayss          rF   Ú_compare_identity_defaultz%DefaultImpl._compare_identity_defaultÔ  sª   € ô 2ØØÜ�O‰OÓØ�ô	
‰ˆˆgô Ð/°¸4Ó@ˆÜ"Ð#5°xÀÓFÐä�Ó¤Ð%5Ó 6Ò6Ø�H‰H�XÔà×Ñ˜t×9Ñ9Ô:ð
 àä�‹JÒMœ$Ð0Ó1´TÐ:LÓ5MÑMð
ð 	
rG   c                ór   — t        |j                  «      }t        |j                  «      }||k7  rd|› d|› �S y )Nzunique=z to unique=)rl  Úunique)rd   Úmetadata_indexÚreflected_indexÚconn_uniqueÚmeta_uniques        rF   Ú_compare_index_uniquez!DefaultImpl._compare_index_uniqueð  sB   € ô ˜?×1Ñ1Ó2ˆÜ˜>×0Ñ0Ó1ˆØ˜+Ò%Ø˜[˜M¨°[°MÐBÐBàrG   c                ó2   — t        j                  d| |fi |¤ŽS )NT©r   Úfrom_constraint©rd   Ú
constraintÚoptss      rF   Ú_create_metadata_constraint_sigz+DefaultImpl._create_metadata_constraint_sigú  s   € ô ×.Ñ.¨t°T¸:ÑNÈÑNÐNrG   c                ó2   — t        j                  d| |fi |¤ŽS rb  r~  r€  s      rF   Ú _create_reflected_constraint_sigz,DefaultImpl._create_reflected_constraint_sigÿ  s   € ô ×.Ñ.¨u°d¸JÑOÈ$ÑOÐOrG   c                ó:  — g }| j                  ||«      }|r|j                  |«       | j                  |«      }| j                  |«      }t	        j
                  |«      sJ ‚t	        j
                  |«      sJ ‚||fD ]/  }|j                  sŒt        j                  d|j                  «       Œ1 |j                  |j                  k7  r+|j                  d|j                  › d|j                  › �«       |rt        j                  |«      S t        j                  «       S )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   rx  ry  ÚmsgÚ
unique_msgÚm_sigÚr_sigÚsigs           rF   Úcompare_indexeszDefaultImpl.compare_indexes  s  € ð ˆØ×/Ñ/Ø˜Oó
ˆ
ñ Ø�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ä#×)Ñ)Ó+Ð+rG   c                óÞ   — | j                  |«      }| j                  |«      }|j                  }|j                  }||k7  rt        j                  d|› d|› �«      S t        j
                  «       S )a  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          rF   Úcompare_unique_constraintz%DefaultImpl.compare_unique_constraint/  s€   € ð ×;Ñ;Øó
ˆð ×=Ñ=Ø ó
ˆð  ×'Ñ'ˆØ ×(Ñ(ˆØ�xÒÜ#×-Ñ-Ø˜h˜Z t¨H¨:Ð6óð ô $×)Ñ)Ó+Ð+rG   c           
     óT  — |D �ci c]  }|j                   |“Œ }}t        |«      D ]{  }|j                   |v rŒt        j                  |«      }|sŒ*t	        j
                  d|j                   ›d| j                  ›dt        j                  › d�«       |j                  |«       Œ} y c c}w )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)	rg   rù   r"   Úis_expression_indexr!   r§   r=   Úsqlalchemy_versionÚdiscard)rd   rA  r?  rÿ   Úconn_indexes_by_nameÚidxÚiexs          rF   Ú_skip_functional_indexesz$DefaultImpl._skip_functional_indexesK  s²   € Ø3?Ö@¨a §¡¨¡	Ð@ÐÐ@äÐ(Ó)ò 	.ˆCØ�x‰xÐ/Ñ/ØÜ×1Ñ1°#Ó6ˆCÚÜ—	‘	ð.à—x‘x�l *¨T×-=Ñ-=Ð,@ð A"Ü"-×"@Ñ"@Ð!Að BFðFôð !×(Ñ(¨Õ-ñ	.ùò  As   …B%c                ó&   — |j                  di «      S )NÚdialect_options)r^   )rd   Úreflected_objectÚkinds      rF   Ú adjust_reflected_dialect_optionsz,DefaultImpl.adjust_reflected_dialect_options\  s   € ð  ×#Ñ#Ð$5°rÓ:Ð:rG   )r[   r&   r\   úOptional[Connection]r]   rl  rb   úOptional[bool]r_   zOptional[TextIO]ra   rI   ÚreturnÚNone)r[   r&   r®  zType[DefaultImpl])r   rH   r®  r¯  )
rs   rH   rt   úOptional[str]ru   rl  rv   r   r®  r   )rz   r9   r®  rl  )r}   r8   r~   r   r®  r¯  )r®  r¬  )
r‘   úUnion[Executable, str]r�   zOptional[Mapping[str, Any]]r’   z%Optional[Sequence[Mapping[str, Any]]]r“   úMapping[str, Any]r®  zOptional[CursorResult]rf   )r™   r±  r�   zOptional[dict[str, Any]]r®  r¯  ) r±   rH   r²   rH   rp   r­  rš   ú3Optional[Union[_ServerDefaultType, Literal[False]]]rg   r°  r›   úOptional[TypeEngine]r   r°  rœ   r­  r�   z$Optional[Union[str, Literal[False]]]rž   r°  rŸ   r´  r    r³  r¡   r­  r¢   r­  rv   r   r®  r¯  )r±   rH   r»   úColumn[Any]r   ú!Optional[Union[str, quoted_name]]r¶   r­  r·   r­  r¸   r­  r®  r¯  )
r±   rH   r»   rµ  r   r°  r¾   r­  r®  r¯  )rÉ   r   rv   r   r®  r¯  )rÉ   r0   rv   r   r®  r¯  )rÐ   rH   rÑ   zUnion[str, quoted_name]r   r¶  r®  r¯  )r~   r   rv   r   r®  r¯  )râ   r2   rv   r   r®  r¯  )r~   r   r®  r¯  )r»   rµ  r®  r¯  )T)r~   zUnion[TableClause, Table]r   z
List[dict]r  rl  r®  r¯  )r»   r   r®  r  )r!  r  r"  r  r®  rl  )r-  r  r.  r  r®  rl  )r6  rµ  r7  r   r®  rl  )
r>  úSet[UniqueConstraint]r?  ú
Set[Index]r@  r·  rA  r¸  r®  r¯  )F)rD  r-   rL  rl  rv   r   r®  rH   )rP  r,   r®  r   )rS  úSet[ForeignKeyConstraint]rT  r¹  r®  r¯  )r®  r¯  )rc  r5   rd  r7   r®  zUnion[str, Literal[False]])rx  r2   ry  r2   r®  r°  )r�  z_autogen._Cr‚  r   r®  z_constraint_sig[_autogen._C])rx  r2   ry  r2   r®  r   )r˜  r3   r™  r3   r®  r   )r©  Ú_ReflectedConstraintrª  rH   r®  rI   )=rJ   rK   rL   Ú__doc__r=   rb   rŽ   rT   Ú__annotations__rU   rX   r?   Úclassmethodrh   rl   rx   r{   r   Úpropertyrƒ   r!   Úimmutabledictr—   r�   r´   r¼   rÁ   rÊ   rÍ   rÒ   rä   ré   rì   rß   rò   rá   r÷   r  r  r(  r4  r8  r<  rB  rI  rM  rQ  rU  rO  rY  r]  r`  re  ru  r|  rƒ  r…  r•  rž  r¦  r«  rM   rG   rF   rO   rO   [   s‡  … ñ
ð €KàÐØÐØ,5°yÐ+AÐ*C€MÐ'ÓCØ&(Ð�mÓ(ð
 .BÐ˜?ÓAðàðð )ðð ð	ð
 *ðð (ðð %ðð 
óð4 ò$ó ð$ó#ð
 ð ð ð ,ð	 ð
 ð ð ð ð 
ó ðDØ+ðà	óð	Ø(ð	Ø16ð	à	ó	ð òó ðð :>Ø=AØ$6 D×$6Ñ$6Ó$8ð+7à)ð+7ð 7ð+7ð ;ð	+7ð
 "ð+7ð 
 ó+7ð` 7;ð+à#ð+ð 4ð+ð 
ó	+ð $(ð Ø"Ø&*Ø $Ø(,Ø8=Ø*.Ø.2ð Ø,0Ø15ñ)sàðsð ðsð
 !ðsð
ðsð ðsð $ðsð ðsð &ðsð 6ðsð (ðsð ,ðsð "
ð!sð& *ð'sð( !/ð)sð* ð+sð, 
ó-sðt 59Ø(,Ø,0Ø-1ñ
àð
ð ð
ð
 2ð
ð &ð
ð *ð
ð +ð
ð 
ó
ð4 !%Ø$(ñ
àð
ð ð
ð
 ð
ð "ð
ð 
ó
ó:ó7ð 59ð	
àð
ð 0ð
ð 2ð	
ð
 
ó
ó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ð;Ø<?ð;à	ô;rG   rO   )Ú	metaclassc                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y)	r  rH   r  z	List[str]r  r  zDict[str, str]r  N)rJ   rK   rL   r¼  rM   rG   rF   r  r  b  s   … ØƒKØÓØ
ƒOØÔrG   r  c           
     óÀ  ‡‡‡— t        j                  | «      }t        j                  |«      }t        «       Št        «       Š	 	 	 	 	 	 	 	 dˆˆˆfd„} |||t        j                  |«      t        |«      j                  |«      «       t         j                  rDt        |d«      sJ ‚ |t        | di «      t        |di «      |j                  t        |di «      «       ‰‰fS )Nc                ó  •— t        |«      j                  ‰
«      D ]c  }| j                  |«      }|j                  |«      }||k7  sŒ+|j                  |«      }||k(  r‰	j                  |«       ŒS‰j                  |«       Œe y rf   )ÚsetÚ
differencer^   rm  )Ú	meta_dictÚ	insp_dictÚdefault_dictÚattrsÚattrÚ
meta_valueÚ
insp_valueÚdefault_valuerq  Úignored_attrrh  s           €€€rF   Úcheck_dictsz._compare_identity_options.<locals>.check_dictsx  sx   ø€ ô ˜“J×)Ñ)¨$Ó/ò 	#ˆDØ"Ÿ™ tÓ,ˆJØ"Ÿ™ tÓ,ˆJØ˜ZÓ'Ø ,× 0Ñ 0°Ó 6�Ø Ò.Ø ×$Ñ$ TÕ*à—H‘H˜T•Nñ	#rG   Údialect_kwargs)rÆ  r²  rÇ  r²  rÈ  r²  rÉ  zIterable[str])r"   Ú_get_identity_options_dictrÄ  ÚunionÚidentity_has_dialect_kwargsÚhasattrrk  rÐ  )	Úmetadata_ioÚinspector_ioÚ
default_iorh  Úmeta_dÚinsp_drÏ  rq  rÎ  s	      `   @@rF   ri  ri  i  sï   ú€ ô ×3Ñ3°KÓ@€FÜ×3Ñ3°LÓA€Fä‹5€DÜ“5€Lð#Ø$ð#à$ð#ð (ð#ð ÷	#ñ  ØØÜ×.Ñ.¨zÓ:ÜˆF‹×Ñ˜&Ó!ô	ô ×.Ò.Ü�zÐ#3Ô4Ð4Ð4ñ 	Ü�KÐ!1°2Ó6Ü�LÐ"2°BÓ7Ø×%Ñ%Ü�LÐ"2°BÓ7ô		
ð �ÐÐrG   )rÕ  ú-Union[schema.Identity, schema.Sequence, None]rÖ  rÚ  r×  z'Union[schema.Identity, schema.Sequence]rh  zSet[str])PÚ
__future__r   Úloggingr  Útypingr   r   r   r   r   r	   r
   r   r   r   r   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+   Úsqlalchemy.engine.reflectionr,   Úsqlalchemy.sqlr-   r.   Úsqlalchemy.sql.elementsr/   Úsqlalchemy.sql.schemar0   r1   r2   r3   Úsqlalchemy.sql.selectabler4   Úsqlalchemy.sql.type_apir5   r6   Úautogenerate.apir7   Úoperations.batchr8   r9   rº  Ú	getLoggerrJ   r‹  r>   r;   r@   r¼  rO   r  ri  rM   rG   rF   ú<module>rì     sA  ðö #ã Û 	Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý +Ý Ý Ý Ý å Ý Ý 8Ý :Ý Ý áÝÝå,Ý)Ý5ÝJÝ;ÝJÝFÝ6Ý,Ý)Ý3Ý0Ý:Ý+Ý6Ý5Ý2å(Ý1Ý1Ý6ð 	&Ø
'ñ	(à
ñ	ð $ñ	$ð ð €g×Ñ˜Ó!€ô
ˆtô 
ð (*€Ð$Ó )ôD;˜Hõ D;ôNˆZô ð0Ø>ð0à?ð0ð 8ð0ð ô	0rG   