Ë
    Ó~ïiQ  ã                  óÂ  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d d	l	mZ d d
l	mZ d dl	mZ d dl	mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ er6d 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)  G d „ d!e«      Z* eed"«      	 	 	 	 	 	 d%d#„«       Z+ eed"«      d&d$„«       Z,y)'é    )ÚannotationsN)ÚAny)ÚDict)ÚOptional)ÚTYPE_CHECKING)ÚUnion)Úcast)ÚComputed)ÚJSON)Úschema)Úsqlé   )Úalter_table)Ú
ColumnName)Úformat_column_name)Úformat_table_name)ÚRenameTable)ÚDefaultImplé   )Úutil)Úcompiles)Ú	Inspector)ÚDDLCompiler)ÚCast)ÚClauseElement)ÚColumn)Ú
Constraint)ÚTable)Ú
TypeEngine)ÚBatchOperationsImplc                  óº   ‡ — e Zd ZdZdZ	 	 	 	 	 dd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Z		 	 	 	 	 	 	 	 dd„Z
	 d	 	 	 	 	 dˆ fd	„Z	 	 	 	 	 	 	 	 dd
„Zd„ Zˆ xZS )Ú
SQLiteImplÚsqliteFc                óh  — |j                   D ]£  }|d   dk(  r�|d   d   }t        |j                  t        j                  «      r0t        |j                  j
                  t        j                  «      r yt        |j                  t        «      sŒ‚|j                  j                  sŒ™ y|d   dvsŒ£ y 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.

        r   Ú
add_columnr   T)Úcreate_indexÚ
drop_indexF)
ÚbatchÚ
isinstanceÚserver_defaultr   ÚDefaultClauseÚargr   r   r
   Ú	persisted)ÚselfÚbatch_opÚopÚcols       úi/var/www/acinvestment.org/public_html/aci/backend/venv/lib/python3.12/site-packages/alembic/ddl/sqlite.pyÚrequires_recreate_in_batchz%SQLiteImpl.requires_recreate_in_batch1   sŸ   € ð —.‘.ò 	ˆBØ�!‰u˜Ò$Ø˜‘e˜A‘h�ÜØ×&Ñ&¬×(<Ñ(<ôä  ×!3Ñ!3×!7Ñ!7¼×9JÑ9JÔKÙä˜s×1Ñ1´8Õ<Ø×*Ñ*×4Ó4áØ�A‘Ð<Ò<Ùð	ð ó    c                ó€   — |j                   €t        d«      ‚|j                  | «      rt        j                  d«       y y )Nú No support for ALTER of constraints in SQLite dialect. Please refer to the batch mode feature which allows for SQLite migrations using a copy-and-move strategy.z©Skipping unsupported ALTER for creation of implicit constraint. Please refer to the batch mode feature which allows for SQLite migrations using a copy-and-move strategy.)Ú_create_ruleÚNotImplementedErrorr   Úwarn©r.   ÚconstÚkws      r2   Úadd_constraintzSQLiteImpl.add_constraintM   sJ   € ð ×ÑÐ%Ü%ðDóð ð
 ×Ñ Ô%Ü�I‰IðDõð &r4   c                ó2   — |j                   €t        d«      ‚y )Nr6   )r7   r8   r:   s      r2   Údrop_constraintzSQLiteImpl.drop_constraint^   s&   € Ø×ÑÐ%Ü%ðDóð ð &r4   c                óÌ   — |�.t        j                  dd|«      }t        j                  dd|«      }|�.t        j                  dd|«      }t        j                  dd|«      }||k7  S )Nz
^\((.+)\)$z\1z^\"?'(.+)'\"?$)ÚreÚsub)r.   Úinspector_columnÚmetadata_columnÚrendered_metadata_defaultÚrendered_inspector_defaults        r2   Úcompare_server_defaultz!SQLiteImpl.compare_server_defaultf   s€   € ð %Ð0Ü(*¯©Ø˜uÐ&?ó)Ð%ô )+¯©Ø! 5Ð*Có)Ð%ð &Ð1Ü)+¯©Ø˜uÐ&@ó*Ð&ô *,¯©Ø! 5Ð*Dó*Ð&ð *Ð-FÑFÐFr4   c                ó”   — |syt        j                  d|«      ryt        j                  d|«      ryt        j                  d|«      ryy)a  Determine if a server default is a SQL expression or a constant.

        There are too many assertions that expect server defaults to round-trip
        identically without parenthesis added so we will add parens only in
        very specific cases.

        Fz	^[0-9\.]$z^'.+'$z^\(.+\)$T)rA   Úmatch)r.   Úexprs     r2   Ú-_guess_if_default_is_unparenthesized_sql_exprz8SQLiteImpl._guess_if_default_is_unparenthesized_sql_expr�   s@   € ñ ØÜ�X‰X�l DÔ)ØÜ�X‰X�i Ô&ØÜ�X‰X�k 4Ô(Øàr4   c                ó`   — | j                  |j                  dd «      «      rd|d   ›d�|d<   y y )NÚdefaultú(ú))rK   Úget)r.   Ú	inspectorÚtableÚcolumn_infos       r2   Úautogen_column_reflectz!SQLiteImpl.autogen_column_reflect–   s9   € ð ×=Ñ=Ø�O‰O˜I tÓ,õ
ð 0;¸9Ó/EÐ%GˆK˜	Ò"ð
r4   c                ó^   •— t        ‰| �  |fd|i|¤Ž}|r| j                  |«      rd|›d�}|S )NÚis_server_defaultrN   rO   )ÚsuperÚrender_ddl_sql_exprrK   )r.   rJ   rV   r<   Ústr_exprÚ	__class__s        €r2   rX   zSQLiteImpl.render_ddl_sql_expr£   sG   ø€ ô
 ‘7Ñ.Øñ
Ø$5ð
Ø9;ñ
ˆñ
 Ø×BÑBÀ8ÕLâ!)Ð+ˆHØˆr4   c                ó�   — |j                   j                  |j                  ur$t        |t        «      st	        |d   |«      |d<   y y y )NrJ   )ÚtypeÚ_type_affinityr)   r   r	   )r.   ÚexistingÚexisting_transferÚnew_types       r2   Úcast_for_batch_migratez!SQLiteImpl.cast_for_batch_migrate³   sK   € ð �M‰M×(Ñ(°×0GÑ0GÑGÜ˜x¬Ô.ä(,Ø! &Ñ)¨8ó)Ð˜fÒ%ð /ð Hr4   c                ó(   — | j                  ||«       y )N)Ú_skip_functional_indexes)r.   Úconn_unique_constraintsÚconn_indexesÚmetadata_unique_constraintsÚmetadata_indexess        r2   Úcorrect_for_autogen_constraintsz*SQLiteImpl.correct_for_autogen_constraintsÁ   s   € ð 	×%Ñ%Ð&6¸ÕEr4   )r/   r    ÚreturnÚbool)r;   r   r<   r   )
rC   úColumn[Any]rD   rk   rE   úOptional[str]rF   rl   ri   rj   )rJ   rl   ri   rj   )rQ   r   rR   r   rS   zDict[str, Any]ri   ÚNone)F)rJ   r   rV   rj   ri   Ústr)r^   rk   r_   z"Dict[str, Union[TypeEngine, Cast]]r`   r   ri   rm   )Ú__name__Ú
__module__Ú__qualname__Ú__dialect__Útransactional_ddlr3   r=   r?   rG   rK   rT   rX   ra   rh   Ú__classcell__)rZ   s   @r2   r"   r"   )   s  ø„ Ø€KàÐððØ+ðà	óó8ó"ðGà%ðGð %ðGð $1ð	Gð
 %2ðGð 
óGð6Ø!ðà	óð*HàðHð ðHð $ð	Hð
 
óHð >CðØ!ðØ6:ðà	õð àðð >ðð ð	ð
 
óöFr4   r"   r#   c                óx   — t        || j                  | j                  «      ›dt        || j                  d «      ›�S )Nz RENAME TO )r   Ú
table_namer   r   Únew_table_name©ÚelementÚcompilerr<   s      r2   Úvisit_rename_tabler{   Ë   s6   € ô
 	�H˜g×0Ñ0°'·.±.ÕAÜ˜( G×$:Ñ$:¸DÔAðð r4   c                ó¤   — t        || j                  | j                  «      ›dt        || j                  «      ›dt        || j
                  «      ›�S )Nz RENAME COLUMN z TO )r   rv   r   r   Úcolumn_nameÚnewnamerx   s      r2   Úvisit_column_namer   Õ   sB   € ô 	�H˜g×0Ñ0°'·.±.ÕAÜ˜8 W×%8Ñ%8Õ9Ü˜8 W§_¡_Ô5ðð r4   )ry   r   rz   r   ri   rn   )ry   r   rz   r   ri   rn   )-Ú
__future__r   rA   Útypingr   r   r   r   r   Ú
sqlalchemyr	   r
   r   r   r   Úbaser   r   r   r   r   Úimplr   Ú r   Úutil.sqla_compatr   Úsqlalchemy.engine.reflectionr   Úsqlalchemy.sql.compilerr   Úsqlalchemy.sql.elementsr   r   Úsqlalchemy.sql.schemar   r   r   Úsqlalchemy.sql.type_apir   Úoperations.batchr    r"   r{   r   © r4   r2   ú<module>rŽ      sÀ   ðõ #ã 	Ý Ý Ý Ý  Ý å Ý Ý Ý Ý å Ý Ý $Ý #Ý Ý Ý Ý 'áÝ6Ý3Ý,Ý5Ý,Ý0Ý+Ý2å6ô_F�ô _FñD 
ˆ+�xÓ ðØðØ$/ðàòó !ðñ 
ˆ*�hÓòó  ñr4   