Ë
    §û’g,  ã                  ó¶  — 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 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)Ú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                ó�  — |j                   D ]·  }|d   dk(  r¤|d   d   }t        |j                  t        j                  «      r0t        |j                  j
                  t        j                  «      r yt        |j                  t        j                  j                  «      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   Úsqla_compatÚComputedÚ	persisted)ÚselfÚbatch_opÚopÚcols       úQ/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/alembic/ddl/sqlite.pyÚrequires_recreate_in_batchz%SQLiteImpl.requires_recreate_in_batch0   s«   € ð —.‘.ò 	ˆBØ�!‰u˜Ò$Ø˜‘e˜A‘h�ÜØ×&Ñ&¬×(<Ñ(<ôä  ×!3Ñ!3×!7Ñ!7¼×9JÑ9JÔKÙä˜s×1Ñ1´4×3CÑ3C×3LÑ3LÕMØ×*Ñ*×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/   Úconsts     r3   Úadd_constraintzSQLiteImpl.add_constraintL   sJ   € ð ×ÑÐ%Ü%ðDóð ð
 ×Ñ Ô%Ü�I‰IðDõð &r5   c                ó2   — |j                   €t        d«      ‚y )Nr7   )r8   r9   r;   s     r3   Údrop_constraintzSQLiteImpl.drop_constraint]   s&   € Ø×ÑÐ%Ü%ðDóð ð &r5   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        r3   Úcompare_server_defaultz!SQLiteImpl.compare_server_defaulte   s€   € ð %Ð0Ü(*¯©Ø˜uÐ&?ó)Ð%ô )+¯©Ø! 5Ð*Có)Ð%ð &Ð1Ü)+¯©Ø˜uÐ&@ó*Ð&ô *,¯©Ø! 5Ð*Dó*Ð&ð *Ð-FÑFÐFr5   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     r3   Ú-_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Ô(Øàr5   c                ó`   — | j                  |j                  dd «      «      rd|d   ›d�|d<   y y )NÚdefaultú(ú))rK   Úget)r/   Ú	inspectorÚtableÚcolumn_infos       r3   Úautogen_column_reflectz!SQLiteImpl.autogen_column_reflect•   s9   € ð ×=Ñ=Ø�O‰O˜I tÓ,õ
ð 0;¸9Ó/EÐ%GˆK˜	Ò"ð
r5   c                ó^   •— t        ‰| �  |fd|i|¤Ž}|r| j                  |«      rd|›d�}|S )NÚis_server_defaultrN   rO   )ÚsuperÚrender_ddl_sql_exprrK   )r/   rJ   rV   ÚkwÚstr_exprÚ	__class__s        €r3   rX   zSQLiteImpl.render_ddl_sql_expr¢   sG   ø€ ô
 ‘7Ñ.Øñ
Ø$5ð
Ø9;ñ
ˆñ
 Ø×BÑBÀ8ÕLâ!)Ð+ˆHØˆr5   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       r3   Úcast_for_batch_migratez!SQLiteImpl.cast_for_batch_migrate²   sK   € ð �M‰M×(Ñ(°×0GÑ0GÑGÜ˜x¬Ô.ä(,Ø! &Ñ)¨8ó)Ð˜fÒ%ð /ð Hr5   c                ó(   — | j                  ||«       y )N)Ú_skip_functional_indexes)r/   Úconn_unique_constraintsÚconn_indexesÚmetadata_unique_constraintsÚmetadata_indexess        r3   Úcorrect_for_autogen_constraintsz*SQLiteImpl.correct_for_autogen_constraintsÀ   s   € ð 	×%Ñ%Ð&6¸ÕEr5   )r0   r   ÚreturnÚbool)r<   r   )
rC   úColumn[Any]rD   rl   rE   úOptional[str]rF   rm   rj   rk   )rJ   rm   rj   rk   )rQ   r   rR   r   rS   zDict[str, Any]rj   ÚNone)F)rJ   r   rV   rk   rj   Ústr)r_   rl   r`   z"Dict[str, Union[TypeEngine, Cast]]ra   r   rj   rn   )Ú__name__Ú
__module__Ú__qualname__Ú__dialect__Útransactional_ddlr4   r=   r?   rG   rK   rT   rX   rb   ri   Ú__classcell__)r[   s   @r3   r!   r!   (   s  ø„ Ø€KàÐððØ+ðà	óó8ó"ðGà%ðGð %ðGð $1ð	Gð
 %2ðGð 
óGð6Ø!ðà	óð*HàðHð ðHð $ð	Hð
 
óHð >CðØ!ðØ6:ðà	õð àðð >ðð ð	ð
 
óöFr5   r!   r"   c                óx   — t        || j                  | j                  «      ›dt        || j                  d «      ›�S )Nz RENAME TO )r   Ú
table_namer   r   Únew_table_name©ÚelementÚcompilerrY   s      r3   Úvisit_rename_tabler|   Ê   s6   € ô
 	�H˜g×0Ñ0°'·.±.ÕAÜ˜( G×$:Ñ$:¸DÔAðð r5   c                ó¤   — t        || j                  | j                  «      ›dt        || j                  «      ›dt        || j
                  «      ›�S )Nz RENAME COLUMN z TO )r   rw   r   r   Úcolumn_nameÚnewnamery   s      r3   Úvisit_column_namer€   Ô   sB   € ô 	�H˜g×0Ñ0°'·.±.ÕAÜ˜8 W×%8Ñ%8Õ9Ü˜8 W§_¡_Ô5ðð r5   )rz   r   r{   r   rj   ro   )rz   r   r{   r   rj   ro   ),Ú
__future__r   rA   Útypingr   r   r   r   r   Ú
sqlalchemyr	   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€   © r5   r3   ú<module>r�      s½   ðõ #ã 	Ý Ý Ý Ý  Ý å Ý Ý Ý å Ý Ý $Ý #Ý Ý Ý Ý 'áÝ6Ý3Ý,Ý5Ý,Ý0Ý+Ý2å6ô_F�ô _FñD 
ˆ+�xÓ ðØðØ$/ðàòó !ðñ 
ˆ*�hÓòó  ñr5   