ó
    úÞ jŒu  ã                  óˆ  • 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  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%K0J1r1  S#S&K2J3r3  S#S'K2J4r4  S#S(K5J6r6  S#S)K5J7r7  S#S*K/J8r8  S#S+K9J:r:  \	(       ar  S S,KJ;r;  S S-K
J<r<  S S.K
J=r=  S S/K>J?r?  S S0K@JArA  S S1KBJCrC  S S2KDJErE  S S3KDJFrF  S S4KJGrG  S S5KJHrH  S S6KJIrI  S S7KJJKrK  S S8KJJLrL  S S9KMJNrN  SS:K!JOrO  SS;K+JPrP  S#S<KQJRrR  S#S=KSJTrT  S#S>KUJVrV  \R®                  " \X5      rY " S? S@\-5      rZ " SA SB\$5      r[\:" \*SC5            SRSD j5       r\\:" \[SC5            SSSE j5       r]\:" \%SC5            STSF j5       r^\:" \)SC5          SUSG j5       r_\7RÀ                  " SH5      \6RÀ                  " SHSI5      \3RÂ                  RÅ                  SJ5       " SK SL\3RÂ                  5      5       5       5       rc\1RÈ                  RË                  \c5            SVSM j5       rf\1RÎ                  RË                  \5              SWSN j5       rhSXSO jri        SYSP jrj      SZSQ jrkg)[é    )Úannotations)ÚSequenceN)ÚAny)Úcast)ÚTYPE_CHECKING)ÚColumn)ÚFloat)ÚIdentity)Úliteral_column)ÚNumeric)Úselect)Útext)Útypes)ÚBIGINT)ÚExcludeConstraint)ÚINTEGER)ÚCreateIndex)ÚColumnClause)Ú
TextClause)ÚFunctionElement)ÚNULLTYPEé   )Úalter_column)Úalter_table)ÚAlterColumn)ÚColumnComment)Úformat_column_name)Úformat_table_name)Úformat_type)ÚIdentityColumnDefault)ÚRenameTable)ÚComparisonResult)ÚDefaultImplé   )Úutil)Úrender)Úops)Ú	schemaobj)ÚBatchOperations)Ú
Operations)Úsqla_compat)Úcompiles)ÚLiteral)ÚIndex)ÚUniqueConstraint)ÚARRAY)ÚPGDDLCompiler)ÚHSTORE)ÚJSON)ÚJSONB)ÚClauseElement)ÚColumnElement)Úquoted_name)ÚMetaData)ÚTable)Ú
TypeEngine)Ú_ServerDefaultArgument)Ú_ReflectedConstraint)ÚAutogenContext)Ú_f_name)ÚMigrationContextc                  óx  ^ • \ rS rSrSrSr\R                  SS14-   rS!S jrS r	S r
S	S
S	S	S	S	S	S	S	S	S.
                           S"U 4S jjjrS rS r\R                  " S5      \R                  " S5      \R                  " S5      \R                  " S5      \R                  " S5      4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)         S*U 4S jjjr      S+S jr      S,S jr      S-S jr      S.S jr      S/S jrS rU =r$ )0ÚPostgresqlImpléL   Ú
postgresqlTÚFLOATzDOUBLE PRECISIONc                ó2  • UR                   R                  SS 5      =(       d    SnU HQ  nXAR                  R                  ;  d  M  UR                  R	                  [        U[        R                  5      5        MS     U R                  [        U40 UD65        g )NÚpostgresql_include© )
ÚkwargsÚgetÚtableÚcÚappend_columnr   ÚsqltypesÚNullTypeÚ_execr   )ÚselfÚindexÚkwrF   Úcols        ÚP/var/www/html/gaurav/venv/lib/python3.13/site-packages/alembic/ddl/postgresql.pyÚcreate_indexÚPostgresqlImpl.create_indexS   ss   € ð #Ÿ\™\×-Ñ-Ð.BÀDÓI×OÈRÐÛ%ˆCØŸ+™+Ÿ-™-Õ'Ø—‘×)Ñ)Ü˜3¤× 1Ñ 1Ó2öñ &ð
 	�
‰
”;˜uÑ+¨Ñ+Õ,ó    c                ó¢   • UR                    H?  nUR                  c  M  UR                  UR                  ;   d  M.  U R                  U5        MA     g ©N)ÚconstraintsÚnameÚnamed_constraintsÚdrop_constraint)rP   Ú
batch_implrJ   Ú
constraints       rT   Úprep_table_for_batchÚ#PostgresqlImpl.prep_table_for_batch_   s<   € Ø×+Ô+ˆJà—‘Ó+Ø—O‘O z×'CÑ'CÕCà×$Ñ$ ZÖ0ò ,rW   c                óz  • UR                   (       a  X"R                  R                  L a  gUnU(       a.  [        R                  " SU5      (       a  UR                  SS5      nXS:H  nU(       a  gS UUUR                  4;   a  U(       + $ UR                  R                  n[        U[        5      (       aN  [        UR                  [        [        45      (       d  [        R                  " SSU5      nSU S3n[        U5      nU R                  nUc   eUR!                  [#        [        U5      U:H  5      5      (       + $ )NFúnextval\('(.+?)'::regclass\)z
::regclassÚ z^'|'$Ú')Úprimary_keyrJ   Ú_autoincrement_columnÚreÚmatchÚreplaceÚserver_defaultÚargÚ
isinstanceÚstrÚtyper   r	   Úsubr   Ú
connectionÚscalarr   )	rP   Úinspector_columnÚmetadata_columnÚrendered_metadata_defaultÚrendered_inspector_defaultÚconn_col_defaultÚdefaults_equalÚmetadata_defaultÚconns	            rT   Úcompare_server_defaultÚ%PostgresqlImpl.compare_server_defaultg   s6  € ð ×'×'Ø×#8Ñ#8×#NÑ#NÒNàà5Ðæ¤§¢Ø+Ð-=÷!
ñ !
ð  0×7Ñ7¸ÀbÓIÐà)ÑFˆÞØàØØ%Ø×*Ñ*ð
ó 
ð
 &Ô%Ð%à*×9Ñ9×=Ñ=ÐäÐ&¬×,Ñ,ÜÐ.×3Ñ3´g¼uÐ5E×FÑFÜ#%§6¢6¨(°BÐ8HÓ#IÐ Ø%&Ð'7Ð&8¸Ð#:Ð ä-Ð.>Ó?Ðð
 �‰ˆØÑÐÐØ—;‘;Ü”>Ð"2Ó3Ð7GÑGÓHó
ô 
ð 	
rW   NF)
Únullablerk   r[   Útype_ÚschemaÚautoincrementÚexisting_typeÚexisting_server_defaultÚexisting_nullableÚexisting_autoincrementc       
        óÞ   >• UR                  SS 5      nUb  Uc  [        R                  " S5      eUb  U R                  [	        UUUUUU	U
US95        [
        TU ]  " UU4UUUUUU	U
UUS.	UD6  g )NÚpostgresql_usingz6postgresql_using must be used with the type_ parameter)r   Úusingr�   r‚   rƒ   )	r}   rk   r[   r   r€   r�   r‚   rƒ   r„   )Úpopr%   ÚCommandErrorrO   ÚPostgresqlColumnTypeÚsuperr   )rP   Ú
table_nameÚcolumn_namer}   rk   r[   r~   r   r€   r�   r‚   rƒ   r„   rR   r‡   Ú	__class__s                  €rT   r   ÚPostgresqlImpl.alter_columnš   s«   ø€ ð" —‘Ð)¨4Ó0ˆàÑ ¡Ü×#Ò#ØHóð ð ÑØ�J‰JÜ$ØØØØ!ØØ"/Ø,CØ&7ñ	ôô 	‰ÒØØð	
ð Ø)ØØØ'Ø'Ø$;Ø/Ø#9ñ	
ð ó	
rW   c                ó   • UR                  S5      (       a¸  [        US   [        [        45      (       a™  [        R
                  " SUS   5      nU(       aw  [        R                  " U[        S5      UR                  S5      S9R                  5       nU(       a3  Uu  pgXsS   :X  a&  [        R                  SUUR                  U5        US	 g g g g g g )	NÚdefaultro   rc   a9  select c.relname, a.attname from pg_class as c join pg_depend d on d.objid=c.oid and d.classid='pg_class'::regclass and d.refclassid='pg_class'::regclass join pg_class t on t.oid=d.refobjid join pg_attribute a on a.attrelid=t.oid and a.attnum=d.refobjsubid where c.relkind='S' and c.oid=cast(:seqname as regclass)r   )Úseqnamer[   z^Detected sequence named '%s' as owned by integer column '%s(%s)', assuming SERIAL and omitting)rI   rm   r   r   rh   ri   r+   Ú_exec_on_inspectorr   ÚgroupÚfirstÚlogÚinfor[   )rP   Ú	inspectorrJ   Úcolumn_infoÚ	seq_matchr—   r’   Úcolnames           rT   Úautogen_column_reflectÚ%PostgresqlImpl.autogen_column_reflectÏ   sÞ   € Ø�?‰?˜9×%Ñ%¬*Ø˜Ñ¤'¬6Ð!2÷+
ñ +
ô ŸšØ/°¸YÑ1GóˆIö Ü"×5Ò5ØÜð	;óð &ŸO™O¨AÓ.ñ÷ ‘%“'ð ö  Ø'+Ñ$�GØ¨fÑ"5Ó5ÜŸ™ð;ð $Ø!ŸJ™JØ#ôð (¨	Ñ2ð 6ð ð# ð+
Ð%rW   c                óö   • U Vs1 sH'  nUR                   R                  S5      (       d  M%  UiM)     nnU H  nUR                  U5        M     [        R                  (       d  U R                  XB5        g g s  snf )NÚduplicates_constraint)r—   rI   Úremover+   Úsqla_2Ú_skip_functional_indexes)rP   Úconn_unique_constraintsÚconn_indexesÚmetadata_unique_constraintsÚmetadata_indexesrQ   Údoubled_constraintsÚixs           rT   Úcorrect_for_autogen_constraintsÚ.PostgresqlImpl.correct_for_autogen_constraintsö   ss   € ñ &ó
á%�Ø�z‰z�~‰~Ð5×6÷ Ù%ð 	ð 
ó &ˆBØ×Ñ Ö#ñ &ô ×!×!Ø×)Ñ)Ð*:ÕIð "ùò
s
   …#A6¬A6z( asc nulls last)$z(?<! desc)( nulls last)$z( asc)$z( asc) nulls first$z desc( nulls first)$c                ór  • UR                  5       R                  SS5      R                  SS5      nUR                  b7  UR                  UR                  R                  R                  5        S3S5      nSU;   a  [        R
                  " SSU5      nU(       a2  US   S:X  a)  US	   S
:X  a   USS	 nU(       a  US   S:X  a  US	   S
:X  a  M   U R                   H:  nUR                  U5      =n(       d  M  UR                  S5      u  pVUS U X&S  -   n  O   U(       a2  US   S:X  a)  US	   S
:X  a   USS	 nU(       a  US   S:X  a  US	   S
:X  a  M   [        R                  " S5      nUR                  U5      (       a*  UR                  SU5      n[        R
                  " SSU5      nUR                  SS5      nU$ )NÚ"rd   re   Ú.z::z(::[\w ]+\w)r   Ú(éÿÿÿÿÚ)r   z	cast\s*\(zas\s+[^)]+\)Ú )Úlowerrj   rJ   r[   rh   rp   Ú_default_modifiers_reÚsearchÚspanÚcompileri   )rP   rQ   ÚexprÚrsri   ÚstartÚendÚcast_res           rT   Ú_cleanup_index_exprÚ"PostgresqlImpl._cleanup_index_expr  sŽ  € Ø�z‰z‹|×#Ñ# C¨Ó,×4Ñ4°S¸"Ó=ˆØ�;‰;Ñ"à—<‘< 5§;¡;×#3Ñ#3×#9Ñ#9Ó#;Ð"<¸AÐ >ÀÓCˆDà�4‹<ä—6’6˜/¨2¨tÓ4ˆDæ�t˜A‘w #“~¨$¨r©(°c«/Ø˜˜"�:ˆDö �t˜A‘w #“~¨$¨r©(°c­/ð
 ×,Ô,ˆBØŸ	™	 $›Ð'ˆu×'Ø"ŸZ™Z¨›]‘
�Ø˜F˜U�| d¨4 jÑ0�Ùñ	 -ö �t˜A‘w #“~¨$¨r©(°c«/Ø˜˜"�:ˆDö �t˜A‘w #“~¨$¨r©(°c­/ô —*’*˜\Ó*ˆØ�=‰=˜×ÑØ—;‘;˜r 4Ó(ˆDä—6’6˜/¨2¨tÓ4ˆDà�|‰|˜C Ó$ˆØˆrW   c                óF   • UR                   R                  S5      (       a  gg)NÚpostgresql_nulls_not_distinct)Únulls_not_distinctrG   )Údialect_kwargsrI   )rP   Úitems     rT   Ú_dialect_optionsÚPostgresqlImpl._dialect_options>  s"   € ð
 ×Ñ×"Ñ"Ð#B×CÑCØ*ØrW   c           
     ób  • / nU R                  X5      nU(       a  UR                  U5        UR                  nUR                  n[        U5      [        U5      :w  a)  UR                  S[        U5       S[        U5       35        U(       a  [        R
                  " U5      $ / n[        [        XV5      S5       Hæ  u  nu  pšU R                  U	5      nU R                  X5      nU R                  U
5      nU R                  X5      nXÎ:X  a  MS  UR                  5       R                  S5      (       aS  SU;   d  SU;   aG  UR                  SU SU< S35        [        R                  " S	U SU< S
UR                  < S35        MÊ  UR                  SU SU< SU< 35        Mè     U R                  U5      nU R                  U5      nUU:w  a  UR!                  SU SU 35        U(       a  [        R
                  " U5      $ U(       a  [        R"                  " U5      $ [        R$                  " 5       $ )Nzexpression number ú to r   Ú_opsr±   r°   zexpression #z' detected as including operator clause.zExpression #z
 in index a   detected to include an operator clause. Expression compare cannot proceed. Please move the operator clause to the ``postgresql_ops`` dict to enable proper compare of the index expressions: https://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#operator-classeszoptions )Ú_compare_index_uniqueÚappendÚexpressionsÚlenr"   Ú	DifferentÚ	enumerateÚzipÚ_compile_elementr¼   ÚstripÚendswithr%   Úwarnr[   rÃ   ÚextendÚSkipÚEqual)rP   Úmetadata_indexÚreflected_indexÚmsgÚ
unique_msgÚm_exprsÚr_exprsÚskipÚposÚm_eÚr_eÚ	m_compileÚm_textÚ	r_compileÚr_textÚ	m_optionsÚ	r_optionss                    rT   Úcompare_indexesÚPostgresqlImpl.compare_indexesG  s  € ð
 ˆØ×/Ñ/Øó
ˆ
ö Ø�J‰J�zÔ"Ø ×,Ñ,ˆØ!×-Ñ-ˆÜˆw‹<œ3˜w›<Ó'Ø�J‰JÐ+¬C°«L¨>¸¼cÀ'»l¸^ÐLÔMÞä#×-Ò-¨cÓ2Ð2ØˆÜ(¬¨WÓ)>ÀÖB‰OˆC‘�#Ø×-Ñ-¨cÓ2ˆIØ×-Ñ-¨nÓHˆFà×-Ñ-¨cÓ2ˆIØ×-Ñ-¨nÓHˆFàÓÙØ—‘Ó"×+Ñ+¨F×3Ñ3Ø�yÓ  C¨9Ó$4à—‘Ø" 3 % q¨©ð 64ð 4ôô —	’	Ø" 3 % q¨©°ZØ&×+Ñ+Ñ.ð /fðföð —
‘
˜\¨#¨¨a°	©}¸DÀÁÐNÖOñ5  Cð8 ×)Ñ)¨.Ó9ˆ	Ø×)Ñ)¨/Ó:ˆ	Ø˜	Ó!Ø�J‰J˜ ) ¨D°°Ð<Ô=æÜ#×-Ò-¨cÓ2Ð2Þä#×(Ò(¨Ó.Ð.ä#×)Ò)Ó+Ð+rW   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      $ U R                  UR                  5      nU R                  UR                  5      nXx:w  a  [        R                  " SU SU 35      $ [        R                  " 5       $ )Nzexpression rÆ   )Ú_create_metadata_constraint_sigÚ _create_reflected_constraint_sigÚunnamedr"   rÌ   rÃ   ÚconstrÕ   )	rP   Úmetadata_constraintÚreflected_constraintÚmetadata_tupÚreflected_tupÚmeta_sigÚconn_sigÚmetadata_doÚconn_dos	            rT   Úcompare_unique_constraintÚ(PostgresqlImpl.compare_unique_constraintƒ  sÕ   € ð
 ×;Ñ;Øó
ˆð ×=Ñ=Ø ó
ˆð  ×'Ñ'ˆØ ×(Ñ(ˆØÓÜ#×-Ò-Ø˜h˜Z t¨H¨:Ð6óð ð ×+Ñ+¨L×,>Ñ,>Ó?ˆØ×'Ñ'¨×(;Ñ(;Ó<ˆØÓ!Ü#×-Ò-Ø˜g˜Y d¨;¨-Ð8óð ô  ×%Ò%Ó'Ð'rW   c                ó–   • UR                  S0 5      R                  5       nUR                  S5      (       d  UR                  SS 5        U$ )NÚdialect_optionsrF   )rI   Úcopyrˆ   )rP   Úreflected_objectÚkindÚoptionss       rT   Ú adjust_reflected_dialect_optionsÚ/PostgresqlImpl.adjust_reflected_dialect_optionsŸ  sD   € ð #×&Ñ&Ð'8¸"Ó=×BÑBÓDˆØ�{‰{Ð/×0Ñ0Ø�K‰KÐ,¨dÔ3ØˆrW   c                ó~   • [        U[        5      (       a  U$ UR                  U R                  SSS.S9R                  $ )NTF)Úliteral_bindsÚinclude_table)ÚdialectÚcompile_kwargs)rm   rn   r¶   r  Ústring)rP   Úelements     rT   rÏ   ÚPostgresqlImpl._compile_element¨  s@   € Ü�gœs×#Ñ#ØˆNØ�‰Ø—L‘LØ-1ÀEÑJð ð 
÷ ‰&ð	rW   c                ó‚   >• U(       a%  [        U[        5      (       d  UR                  5       n[        TU ]  " U4X#S.UD6$ )zTRender a SQL expression that is typically a server default,
index expression, etc.

)Úis_server_defaultÚis_index)rm   r   Ú
self_groupr‹   Úrender_ddl_sql_expr)rP   r·   r  r	  rR   rŽ   s        €rT   r  Ú"PostgresqlImpl.render_ddl_sql_expr°  sE   ø€ ö  œJ t¬\×:Ñ:Ø—?‘?Ó$ˆDä‰wÒ*Øð
Ø$5ñ
ØLNñ
ð 	
rW   c                óÚ   • [        U5      R                  nUR                  S5      (       d  g[        U SUR                  -  5      (       a!  [        U SUR                  -  5      nU" X5      $ g)Nzsqlalchemy.dialects.postgresqlFz_render_%s_type)ro   Ú
__module__Ú
startswithÚhasattrÚ__visit_name__Úgetattr)rP   r~   Úautogen_contextÚmodÚmeths        rT   Úrender_typeÚPostgresqlImpl.render_typeÇ  se   € ô �5‹k×$Ñ$ˆØ�~‰~Ð>×?Ñ?Øä�4Ð*¨U×-AÑ-AÑA×BÑBÜ˜4Ð!2°U×5IÑ5IÑ!IÓJˆDÙ˜Ó/Ð/àrW   c           	     óN   • [        [        [        R                  " XSS5      5      $ )NÚ	text_typez(.+?\(.*text_type=)©r   rn   r&   Ú_render_type_w_subtype©rP   r~   r  s      rT   Ú_render_HSTORE_typeÚ"PostgresqlImpl._render_HSTORE_typeÔ  s*   € ô ÜÜ×)Ò)Ø¨Ð5Kóó
ð 	
rW   c           	     óN   • [        [        [        R                  " XSS5      5      $ )NÚ	item_typez(.+?\()r  r  s      rT   Ú_render_ARRAY_typeÚ!PostgresqlImpl._render_ARRAY_typeÞ  s)   € ô ÜÜ×)Ò)Ø¨°Zóó
ð 	
rW   c           	     óN   • [        [        [        R                  " XSS5      5      $ ©NÚastext_typez(.+?\(.*astext_type=)r  r  s      rT   Ú_render_JSON_typeÚ PostgresqlImpl._render_JSON_typeè  ó*   € ô ÜÜ×)Ò)Ø¨Ð7Oóó
ð 	
rW   c           	     óN   • [        [        [        R                  " XSS5      5      $ r$  r  r  s      rT   Ú_render_JSONB_typeÚ!PostgresqlImpl._render_JSONB_typeò  r(  rW   rG   )rQ   r.   rR   r   ÚreturnÚNone)rŒ   rn   r�   rn   r}   úbool | Nonerk   r;   r[   ú
str | Noner~   úTypeEngine | Noner   r/  r€   r.  r�   r0  r‚   r;   rƒ   r.  r„   r.  rR   r   r,  r-  )rQ   r.   r·   rn   r,  rn   )rÂ   zIndex | UniqueConstraintr,  ztuple[Any, ...])rÖ   r.   r×   r.   r,  r"   )rí   r/   rî   r/   r,  r"   )rú   r<   rû   rn   r,  zdict[str, Any])r  zClauseElement | strr,  rn   )FF)
r·   r5   r  Úboolr	  r1  rR   r   r,  rn   )r~   r:   r  r=   r,  zstr | Literal[False])r~   r2   r  r=   r,  rn   )r~   r0   r  r=   r,  rn   )r~   r3   r  r=   r,  rn   )r~   r4   r  r=   r,  rn   )Ú__name__r  Ú__qualname__Ú__firstlineno__Ú__dialect__Útransactional_ddlr#   Útype_synonymsrU   r`   r{   r   rœ   r©   rh   r¶   r³   r¼   rÃ   ræ   rõ   rý   rÏ   r  r  r  r!  r&  r*  Ú__static_attributes__Ú__classcell__©rŽ   s   @rT   rA   rA   L   sŸ  ø† Ø€KØÐØ×-Ñ-Ø	Ð$Ð%ð1ñ €Mô
-ò1ò1
ðp !%Ø16ØØ#'Ø!Ø%)Ø+/Ø:>Ø)-Ø.2ñ3
àð3
ð ð3
ð
 ð3
ð /ð3
ð ð3
ð !ð3
ð ð3
ð #ð3
ð )ð3
ð "8ð3
ð 'ð3
ð !,ð3
ð ð3
ð  
÷!3
ð 3
òj%3òNJð> 	�
Š
Ð'Ó(Ø
�
Š
Ð-Ó.Ø
�
Š
�9ÓØ
�
Š
Ð(Ó)Ø
�
Š
Ð)Ó*ðÐô ðDØ,ðà	ôð:,àð:,ð ð:,ð 
ô	:,ðx(à-ð(ð /ð(ð 
ô	(ð8Ø 4ðØ<?ðà	ôôð #(Øð	
àð
ð  ð
ð ð	
ð
 ð
ð 
÷
ð 
ð.ØðØ2@ðà	ôð
Øð
Ø.<ð
à	ô
ð
Øð
Ø-;ð
à	ô
ð
Øð
Ø,:ð
à	ô
ð
Øð
Ø-;ð
à	÷
ò 
rW   rA   c                  ó<   ^ • \ rS rSr        SU 4S jjrSrU =r$ )rŠ   iý  c                óŽ   >• UR                  SS 5      n[        TU ]  " X40 UD6  [        R                  " U5      U l        XPl        g )Nr‡   )rˆ   r‹   Ú__init__rM   Úto_instancer~   r‡   )rP   r[   r�   r~   rR   r‡   rŽ   s         €rT   r=  ÚPostgresqlColumnType.__init__þ  s>   ø€ ð —‘�w Ó%ˆÜ‰Ò˜Ñ1¨bÒ1Ü×)Ò)¨%Ó0ˆŒ
Ø�
rW   )r~   r‡   )r[   rn   r�   rn   r~   r:   r,  r-  )r2  r  r3  r4  r=  r8  r9  r:  s   @rT   rŠ   rŠ   ý  s-   ø† ðØðØ&)ðØ2<ðà	÷õ rW   rŠ   rC   c                óx   • [        XR                  U R                  5      < S[        XR                  S 5      < 3$ )Nz RENAME TO )r   rŒ   r   r   Únew_table_name©r  ÚcompilerrR   s      rT   Úvisit_rename_tablerD    s2   € ô
 	�H×0Ñ0°'·.±.ÖAÜ˜(×$:Ñ$:¸DÕAðð rW   c           	     óø   • [        XR                  U R                  5      < S[        XR                  5      < SS[        XR                  5      -  < SU R                  (       a  SU R                  -  < 3$ S< 3$ )Nr±   zTYPE %szUSING %srd   )r   rŒ   r   r   r�   r   r~   r‡   rB  s      rT   Úvisit_column_typerF    sh   € ô
 	�H×0Ñ0°'·.±.ÖAÜ�X×2Ñ2Ö3Ø”K ¯-©-Ó8Ô8Ø&-§m§mˆ
�W—]‘]Ñ"Ñ;ð	ð ð :<Ñ;ð	ð rW   c                ó  • SnU R                   b9  UR                  R                  U R                   [        R                  " 5       5      OSnUR                  [        XR                  U R                  5      [        XR                  5      US9$ )Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}ÚNULL)rŒ   r�   Úcomment)rI  Úsql_compilerÚrender_literal_valuerM   ÚStringÚformatr   rŒ   r   r   r�   )r  rC  rR   ÚddlrI  s        rT   Úvisit_column_commentrO    sˆ   € ð F€Cð
 �?‰?Ñ&ð 	×Ñ×2Ñ2Ø�O‰OœXŸ_š_Ó.ô	
ð ð ð �:‰:Ü$Ø×(Ñ(¨'¯.©.ó
ô ' x×1DÑ1DÓEØð ð ð rW   c                óF  • [        XR                  U R                  5      < S[        XR                  5      < S3nU R
                  c  US-  nU$ U R                  c$  US-  nX1R                  U R
                  5      -  nU$ U R                  R                  U R
                  U R                  5      u  n  nU R
                  n[        U5       HQ  nUS:X  a  USUR                  (       a  SOS-  -  nM&  USUR                  [        S	0 U[        Xg5      0D65      -  -  nMS     U$ )
Nr±   zDROP IDENTITYzADD ÚalwayszSET GENERATED %s ÚALWAYSz
BY DEFAULTzSET %s rG   )r   rŒ   r   r   r�   r‘   r‚   Úvisit_identity_columnÚimplÚ_compare_identity_defaultÚsortedrQ  Úget_identity_optionsr
   r  )r  rC  rR   r   ÚdiffÚ_ÚidentityÚattrs           rT   rS  rS  3  s  € ô
 	�H×0Ñ0°'·.±.ÖAÜ�X×2Ñ2Ö3ð€Dð ‡�Ñà�ÑˆØˆØ	×	(Ñ	(Ñ	0à�‰ˆØ×.Ñ.¨w¯©Ó?Ñ?ˆØˆð —\‘\×;Ñ;Ø�O‰O˜W×<Ñ<ó
‰
ˆˆa�ð —?‘?ˆÜ˜4–LˆDØ�xÓØÐ+Ø (§§‘H°\ññ ’ð ˜	 H×$AÑ$AÜÑ? ¤g¨hÓ&=Ð>Ñ?ó%ñ ñ ’ñ !ð ˆrW   Úcreate_exclude_constraintÚbatch_create_exclude_constraintÚexclude_constraintc                  óÐ   • \ rS rSrSrSr   S             SS jjr\    SS j5       r S   SS jjr	\            SS j5       r
\          SS	 j5       rS
rg)ÚCreateExcludeConstraintOpiV  z0Represent a create exclude constraint operation.ÚexcludeNc                óX   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        g rY   )Úconstraint_namerŒ   ÚelementsÚwherer   Ú_orig_constraintrR   )rP   rc  rŒ   rd  re  r   rf  rR   s           rT   r=  Ú"CreateExcludeConstraintOp.__init__`  s)   € ð  /ÔØ$ŒØ ŒØŒ
ØŒØ 0ÔØ�rW   c                ó<  • [         R                  " U5      nU " UR                  UR                  UR                   VVVs/ sH	  u  p4oSU4PM     snnn[	        SUR
                  5      UR                  UUR                  UR                  UR                  S9	$ s  snnnf )NzColumnElement[bool] | None)re  r   rf  Ú
deferrableÚ	initiallyr‡   )
r+   Ú_table_for_constraintr[   Ú_render_exprsr   re  r   ri  rj  r‡   )Úclsr_   Úconstraint_tabler·   r[   Úops         rT   Úfrom_constraintÚ)CreateExcludeConstraintOp.from_constraintt  s•   € ô '×<Ò<¸ZÓHÐÙØ�O‰OØ×!Ñ!à1;×1IÒ1IõÙ1I™~˜t¨2�r“
Ñ1Ióô Ð3°Z×5EÑ5EÓFØ#×*Ñ*Ø'Ø!×,Ñ,Ø ×*Ñ*Ø×"Ñ"ñ
ð 	
ùôs   ¿Bc                ó¦  • U R                   b  U R                   $ [        R                  " U5      nUR                  U R                  U R
                  S9n[        U R                  U R                  U R                  S.U R                  D6nUR                   H&  u  nnnUR                  [        U[        5      5        M(     UR                  U5        U$ )N)r   )r[   re  )rf  r(   ÚSchemaObjectsrJ   rŒ   r   r   rd  rc  re  rR   rl  rL   r   r   Úappend_constraint)rP   Úmigration_contextÚ
schema_objÚtÚexclr·   r[   Úopers           rT   Úto_constraintÚ'CreateExcludeConstraintOp.to_constraint‡  s½   € ð × Ñ Ñ,Ø×(Ñ(Ð(Ü×,Ò,Ð->Ó?ˆ
Ø×Ñ˜TŸ_™_°T·[±[ÐÐAˆÜ Ø�]‰]Ø×%Ñ%Ø—*‘*ñ
ð �g‰gñ	
ˆð ×Ôñ	
ØØØà�O‰OœF 4¬Ó2Ö3ñ  à	×Ñ˜DÔ!ØˆrW   c                ó8   • U " X#U40 UD6nUR                  U5      $ )a  Issue an alter to create an EXCLUDE constraint using the
current migration context.

.. note::  This method is Postgresql specific, and additionally
   requires at least SQLAlchemy 1.0.

e.g.::

    from alembic import op

    op.create_exclude_constraint(
        "user_excl",
        "user",
        ("period", "&&"),
        ("group", "="),
        where=("group != 'some group'"),
    )

Note that the expressions work the same way as that of
the ``ExcludeConstraint`` object itself; if plain strings are
passed, quoting rules must be applied manually.

:param name: Name of the constraint.
:param table_name: String name of the source table.
:param elements: exclude conditions.
:param where: SQL expression or SQL string with optional WHERE
 clause.
:param deferrable: optional bool. If set, emit DEFERRABLE or
 NOT DEFERRABLE when issuing DDL for this constraint.
:param initially: optional string. If set, emit INITIALLY <value>
 when issuing DDL for this constraint.
:param schema: Optional schema name to operate within.

)Úinvoke)rm  Ú
operationsrc  rŒ   rd  rR   ro  s          rT   r\  Ú3CreateExcludeConstraintOp.create_exclude_constraint�  s'   € ñV �¨hÑ=¸"Ñ=ˆØ× Ñ  Ó$Ð$rW   c                ó’   • UR                   R                  US'   U " X!R                   R                  U40 UD6nUR                  U5      $ )a  Issue a "create exclude constraint" instruction using the
current batch migration context.

.. note::  This method is Postgresql specific, and additionally
   requires at least SQLAlchemy 1.0.

.. seealso::

    :meth:`.Operations.create_exclude_constraint`

r   )rT  r   rŒ   r}  )rm  r~  rc  rd  rR   ro  s         rT   r]  Ú9CreateExcludeConstraintOp.batch_create_exclude_constraintË  sC   € ð& "—‘×-Ñ-ˆˆ8‰Ù�§/¡/×"<Ñ"<¸hÑMÈ"ÑMˆØ× Ñ  Ó$Ð$rW   )rf  rc  rd  rR   r   rŒ   re  )NNN)rc  zsqla_compat._ConstraintNamerŒ   zstr | quoted_namerd  zCSequence[tuple[str, str]] | Sequence[tuple[ColumnClause[Any], str]]re  z ColumnElement[bool] | str | Noner   r/  rf  zExcludeConstraint | Noner,  r-  )r_   r   r,  r`  rY   )ru  zMigrationContext | Noner,  r   )r~  r*   rc  rn   rŒ   rn   rd  r   rR   r   r,  úTable | None)
r~  r)   rc  rn   rd  r   rR   r   r,  r‚  )r2  r  r3  r4  Ú__doc__Úconstraint_typer=  Úclassmethodrp  rz  r\  r]  r8  rG   rW   rT   r`  r`  V  s3  † ñ ;à€Oð 37Ø!Ø59ðà4ðð &ðð
 Pðð 0ðð ðð 3ðð 
õð( ð
Ø*ð
à	"ó
ó ð
ð& <@ðØ!8ðà	õð, ð+%àð+%ð ð+%ð ð	+%ð
 ð+%ð ð+%ð 
ó+%ó ð+%ðZ ð%à#ð%ð ð%ð ð	%ð
 ð%ð 
ó%ó ó%rW   r`  c                ó4   • [        UR                  5       U SS9$ )NT)Úalter)Ú_exclude_constraintrz  )r  ro  s     rT   Ú_add_exclude_constraintr‰  ã  s   € ô ˜r×/Ñ/Ó1°?È$ÑOÐOrW   c                óV   • [         R                  " SX5      nUSLa  U$ [        XS5      $ )Nra  F)r&   Ú_user_defined_renderrˆ  )r_   r  Únamespace_metadataÚrendereds       rT   Ú!_render_inline_exclude_constraintrŽ  ê  s5   € ô ×*Ò*Ø�:ó€Hð �uÒØˆä˜z¸EÓBÐBrW   c                óD   • U R                   nUb  UR                  S5        g)Nz*from sqlalchemy.dialects import postgresqlzpostgresql.)ÚimportsÚadd)r  r�  s     rT   Ú_postgresql_autogenerate_prefixr’  ù  s#   € Ø×%Ñ%€GØÑØ�‰Ð@ÔAØrW   c                óŠ  ^ ^^• / mTR                   nT R                  (       a&  TR                  S[        T R                  5      45        T R                  (       a&  TR                  S[        T R                  5      45        T R
                  (       a&  TR                  S[        T R
                  5      45        U(       d]  U(       aV  T R                  R                  (       a;  TR                  S[        R                  " T R                  R                  5      45        U(       dC  T R                  (       a2  TR                  S[        R                  " TT R                  5      45        UU U4S jnU(       aª  [        [        R                  " TT R                  5      5      /nU(       d7  U[        [        R                  " T R                  R                  5      5      /-  nUR                  U" 5       5        S[        R                  " T5      SR                  U5      S	.-  $ U" 5       nS
[!        T5      SR                  U5      S	.-  $ )Nri  rj  r‡   r   r[   c            
     ód  >• TR                    V VVs/ sH  u  pnS[        U T5      < SU< S3PM     nnn nTR                  b3  UR                  S[        R
                  " TR                  T5      -  5        UR                  T VVs/ sH  u  pEU< SU< 3PM     snn5        U$ s  snnn f s  snnf )Nr®   ú, r°   zwhere=%sÚ=)rl  Ú_render_potential_columnre  rÉ   r&   Ú_render_potential_exprrÓ   )	Úsqltextr[   ÚopstringÚargsÚkÚvr  r_   Úoptss	         €€€rT   Údo_expr_where_optsÚ/_exclude_constraint.<locals>.do_expr_where_opts  s¹   ø€ ð ,6×+CÒ+Cõ

ñ ,DÑ'�™xô )ØØ#öó óñ ,Dð 	ò 

ð ×ÑÑ'Ø�K‰KØÜ×/Ò/Ø×$Ñ$ oóñôð 	�‰±$Ô7±$©$¨!£¢1Ó%±$Ò7Ô8Øˆùô'

ùó$ 8s   ’!B%ÂB,
z-%(prefix)screate_exclude_constraint(%(args)s)r•  )Úprefixr›  z%%(prefix)sExcludeConstraint(%(args)s))Ú
_has_batchri  rÉ   rn   rj  r‡   rJ   r   r&   Ú_identr[   Ú_render_gen_nameÚreprrÓ   Ú_alembic_autogenerate_prefixÚjoinr’  )r_   r  r‡  Ú	has_batchrŸ  r›  rž  s   ``    @rT   rˆ  rˆ     s®  ú€ ð
 BD€Dà×*Ñ*€Ià××Ø�‰�\¤3 z×'<Ñ'<Ó#=Ð>Ô?Ø××Ø�‰�[¤# j×&:Ñ&:Ó";Ð<Ô=Ø××Ø�‰�Wœc *×"2Ñ"2Ó3Ð4Ô5Þž :×#3Ñ#3×#:×#:Ø�‰�XœvŸ}š}¨Z×-=Ñ-=×-DÑ-DÓEÐFÔGÞ�Z—_—_Ø�‰Ø”V×,Ò,¨_¸j¿o¹oÓNÐOô	
÷ö, ä”×(Ò(¨¸*¿/¹/ÓJÓKð
ˆö Ø”Tœ&Ÿ-š-¨
×(8Ñ(8×(=Ñ(=Ó>Ó?Ð@Ñ@ˆDØ�‰Ñ&Ó(Ô)Ø>Ü×9Ò9¸/ÓJØ—I‘I˜d“OñB
ñ 
ð 	
ñ
 "Ó#ˆØ6Ü5°oÓFØ—I‘I˜d“Oñ:
ñ 
ð 	
rW   c           	     óø   • [        U [        5      (       a<  U R                  (       a  SnOSnU[        R                  " U5      U R
                  S.-  $ [        R                  " U U[        U [        [        45      S9$ )Nz"%(prefix)sliteral_column(%(name)r)z%(prefix)scolumn(%(name)r))r¡  r[   )Úwrap_in_element)	rm   r   Ú
is_literalr&   Ú_sqlalchemy_autogenerate_prefixr[   r˜  r   r   )Úvaluer  Útemplates      rT   r—  r—  ?  su   € ô �%œ×&Ñ&Ø××à;‰Hà3ˆHàÜ×<Ò<¸_ÓMØ—J‘Jñ
ñ 
ð 	
ô
 ×,Ò,ØØÜ& u¬z¼?Ð.KÓLñ
ð 	
rW   )r  r!   rC  r1   r,  rn   )r  rŠ   rC  r1   r,  rn   )r  r   rC  r1   r,  rn   )r  r    rC  r1   )r  r=   ro  r`  r,  rn   )r_   r   r  r=   rŒ  r8   r,  rn   )r  r=   r,  rn   )r_   r   r  r=   r‡  r1  r,  rn   )r­  zCColumnClause[Any] | Column[Any] | TextClause | FunctionElement[Any]r  r=   r,  rn   )lÚ
__future__r   Úcollections.abcr   Úloggingrh   Útypingr   r   r   Ú
sqlalchemyr   r	   r
   r   r   r   r   r   rM   Úsqlalchemy.dialects.postgresqlr   r   r   Úsqlalchemy.schemar   Úsqlalchemy.sql.elementsr   r   Úsqlalchemy.sql.functionsr   Úsqlalchemy.typesr   Úbaser   r   r   r   r   r   r   r    r!   rT  r"   r#   rd   r%   Úautogenerater&   r~  r'   r(   Úoperations.baser)   r*   r+   Úutil.sqla_compatr,   r-   r.   r/   Ú$sqlalchemy.dialects.postgresql.arrayr0   Ú#sqlalchemy.dialects.postgresql.baser1   Ú%sqlalchemy.dialects.postgresql.hstorer2   Ú#sqlalchemy.dialects.postgresql.jsonr3   r4   r5   r6   r7   Úsqlalchemy.sql.schemar8   r9   Úsqlalchemy.sql.type_apir:   r;   r<   Úautogenerate.apir=   Úautogenerate.renderr>   Úruntime.migrationr?   Ú	getLoggerr2  r–   rA   rŠ   rD  rF  rO  rS  Úregister_operationÚAddConstraintOpÚregister_add_constraintr`  Ú	renderersÚdispatch_forr‰  Ú_constraint_renderersrŽ  r’  rˆ  r—  rG   rW   rT   Ú<module>rÍ     sû  ðõ #å $Û Û 	Ý Ý Ý  å Ý Ý Ý %Ý Ý Ý Ý (Ý 1Ý <Ý 2Ý )Ý 0Ý .Ý 4Ý %å Ý Ý Ý Ý $Ý #Ý Ý 'Ý Ý "Ý Ý Ý !Ý Ý "Ý -Ý (Ý Ý 'æÝå Ý+Ý:ÝAÝ<Ý8Ý9Ý5Ý5Ý3Ý.Ý+Ý2å,Ý*Ý1Ý-Ý4à×Ò˜Ó!€ôn
�[ô n
ôb˜;ô ñ 
ˆ+�|Ó$ðØðØ$1ðàóó %ðñ 
Ð
 Ó-ðØ!ðØ-:ðàóó .ðñ 
ˆ-˜Ó&ðØðØ&3ðàóó 'ðñ* 
Ð
 Ó.ðØ"ðØ.;óó /ððD ×ÒÐ:Ó;Ø×#Ò#ØÐ!Bóð ×Ñ×,Ñ,Ð-AÓBôE% × 3Ñ 3ó E%ó Cóó <ð
E%ðP ×Ñ×ÑÐ8Ó9ðPØ#ðPØ)BðPàóPó :ðPð ×Ñ×*Ñ*Ð+<Ó=ðCØ!ðCà#ðCð !ðCð 	ó	Có >ðCôð<
Ø!ð<
à#ð<
ð ð<
ð 	ô	<
ð~
ØNð
à#ð
ð 	õ
rW   