§
    ZøÁi’  ã                  ó†  — 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 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(dS )(é    )ÚannotationsN)ÚAny)ÚDict)ÚOptional)ÚTYPE_CHECKING)ÚUnion)Úcast)ÚJSON)Úschema)Úsqlé   )Úalter_table)Úformat_table_name)ÚRenameTable)ÚDefaultImplé   )Úutil)Úcompiles)Ú	Inspector)ÚDDLCompiler)ÚCast)ÚClauseElement)ÚColumn)Ú
Constraint)ÚTable)Ú
TypeEngine)ÚBatchOperationsImplc                  ól   ‡ — 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 )0Ú
SQLiteImplÚsqliteFÚbatch_opr   ÚreturnÚboolc                ó\  — |j         D ]£}|d         dk    rˆ|d         d         }t          |j        t          j        ¦  «        r't          |j        j        t          j        ¦  «        r dS t          |j        t          j	        j
        ¦  «        r|j        j        r dS Œ–|d         dvr dS Œ¤dS )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)Úselfr!   ÚopÚcols       ú\/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/alembic/ddl/sqlite.pyÚrequires_recreate_in_batchz%SQLiteImpl.requires_recreate_in_batch.   sÈ   € ð ”.ð 	ð 	ˆBØ�!Œu˜Ò$Ð$Ø˜”e˜A”h�ÝØÔ&­Ô(<ñô ð  å  Ô!3Ô!7½Ô9JÑKÔKð ð  ˜4˜4å˜sÔ1µ4Ô3CÔ3LÑMÔMð àÔ*Ô4ð ð  ˜4˜4øØ�A”Ð<Ð<Ð<Ø�t�tð =ð �5ó    Úconstr   c                óˆ   — |j         €t          d¦  «        ‚|                      | ¦  «        rt          j        d¦  «         d S d S )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©r0   r6   s     r3   Úadd_constraintzSQLiteImpl.add_constraintJ   sk   € ð ÔÐ%Ý%ðDñô ð ð
 ×Ò Ñ%Ô%ð 	ÝŒIðDñô ð ð ð ð	ð 	r5   c                ó2   — |j         €t          d¦  «        ‚d S )Nr8   )r9   r:   r<   s     r3   Údrop_constraintzSQLiteImpl.drop_constraint[   s+   € ØÔÐ%Ý%ðDñô ð ð &Ð%r5   Úinspector_columnúColumn[Any]Úmetadata_columnÚrendered_metadata_defaultúOptional[str]Úrendered_inspector_defaultc                óÆ   — |�,t          j        dd|¦  «        }t          j        dd|¦  «        }|�,t          j        dd|¦  «        }t          j        dd|¦  «        }||k    S )Nz
^\((.+)\)$z\1z^\"?'(.+)'\"?$)ÚreÚsub)r0   r@   rB   rC   rE   s        r3   Úcompare_server_defaultz!SQLiteImpl.compare_server_defaultc   sŒ   € ð %Ð0Ý(*¬Ø˜uÐ&?ñ)ô )Ð%õ )+¬Ø! 5Ð*Cñ)ô )Ð%ð &Ð1Ý)+¬Ø˜uÐ&@ñ*ô *Ð&õ *,¬Ø! 5Ð*Dñ*ô *Ð&ð *Ð-FÒFÐFr5   Úexprc                ó˜   — |sdS t          j        d|¦  «        rdS t          j        d|¦  «        rdS t          j        d|¦  «        rdS dS )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)rG   Úmatch)r0   rJ   s     r3   Ú-_guess_if_default_is_unparenthesized_sql_exprz8SQLiteImpl._guess_if_default_is_unparenthesized_sql_expr~   sa   € ð ð 		Ø�5ÝŒX�l DÑ)Ô)ð 	Ø�5ÝŒX�i Ñ&Ô&ð 	Ø�5ÝŒX�k 4Ñ(Ô(ð 	Ø�5à�4r5   Ú	inspectorr   Útabler   Úcolumn_infoúDict[str, Any]ÚNonec                óz   — |                       |                     dd ¦  «        ¦  «        rd|d         ›d�|d<   d S d S )NÚdefaultú(ú))rM   Úget)r0   rN   rO   rP   s       r3   Úautogen_column_reflectz!SQLiteImpl.autogen_column_reflect“   s`   € ð ×=Ò=Ø�OŠO˜I tÑ,Ô,ñ
ô 
ð 	Hð 	Hð 0;¸9Ô/EÐ/EÐ/EÐ%GˆK˜	Ñ"Ð"Ð"ð	Hð 	Hr5   r   Úis_server_defaultÚstrc                óz   •—  t          ¦   «         j        |fd|i|¤Ž}|r|                      |¦  «        rd|›d�}|S )NrY   rU   rV   )ÚsuperÚrender_ddl_sql_exprrM   )r0   rJ   rY   ÚkwÚstr_exprÚ	__class__s        €r3   r]   zSQLiteImpl.render_ddl_sql_expr    sm   ø€ ð
 /•5‘7”7Ô.Øð
ð 
Ø$5ð
Ø9;ð
ð 
ˆð
 ð	,à×BÒBÀ8ÑLÔLð	,ð 	,ð "*  Ð+ˆHØˆr5   ÚexistingÚexisting_transferú"Dict[str, Union[TypeEngine, Cast]]Únew_typer   c                ó�   — |j         j        |j        ur0t          |t          ¦  «        st	          |d         |¦  «        |d<   d S d S d S )NrJ   )ÚtypeÚ_type_affinityr)   r
   r	   )r0   ra   rb   rd   s       r3   Úcast_for_batch_migratez!SQLiteImpl.cast_for_batch_migrate°   s`   € ð ŒMÔ(°Ô0GÐGÐGÝ˜x­Ñ.Ô.ð Hõ )-Ø! &Ô)¨8ñ)ô )Ð˜fÑ%Ð%Ð%ð HÐGÐGÐGr5   c                ó2   — |                       ||¦  «         d S )N)Ú_skip_functional_indexes)r0   Úconn_unique_constraintsÚconn_indexesÚmetadata_unique_constraintsÚmetadata_indexess        r3   Úcorrect_for_autogen_constraintsz*SQLiteImpl.correct_for_autogen_constraints¾   s!   € ð 	×%Ò%Ð&6¸ÑEÔEÐEÐEÐEr5   )r!   r   r"   r#   )r6   r   )
r@   rA   rB   rA   rC   rD   rE   rD   r"   r#   )rJ   rD   r"   r#   )rN   r   rO   r   rP   rQ   r"   rR   )F)rJ   r   rY   r#   r"   rZ   )ra   rA   rb   rc   rd   r   r"   rR   )Ú__name__Ú
__module__Ú__qualname__Ú__dialect__Útransactional_ddlr4   r=   r?   rI   rM   rX   r]   rh   ro   Ú__classcell__)r`   s   @r3   r   r   &   s  ø€ € € € € Ø€KàÐððð ð ð ð8ð ð ð ð"ð ð ð ðGð Gð Gð Gð6ð ð ð ð*Hð Hð Hð Hð >Cðð ð ð ð ð ð ð ð ð ð ðFð Fð Fð Fð Fð Fð Fr5   r   r    Úelementr   Úcompilerr   r"   rZ   c                ój   — t          || j        | j        ¦  «        ›dt          || j        d ¦  «        ›�S )Nz RENAME TO )r   Ú
table_namer   r   Únew_table_name)rv   rw   r^   s      r3   Úvisit_rename_tabler{   È   s=   € õ
 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ˜( GÔ$:¸DÑAÔAÐAðð r5   )rv   r   rw   r   r"   rZ   ))Ú
__future__r   rG   Útypingr   r   r   r   r   Ú
sqlalchemyr	   r
   r   r   Úbaser   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{   © r5   r3   ú<module>rŠ      sL  ðð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð 
7Ø6Ð6Ð6Ð6Ð6Ð6Ø3Ð3Ð3Ð3Ð3Ð3Ø,Ð,Ð,Ð,Ð,Ð,Ø5Ð5Ð5Ð5Ð5Ð5Ø,Ð,Ð,Ð,Ð,Ð,Ø0Ð0Ð0Ð0Ð0Ð0Ø+Ð+Ð+Ð+Ð+Ð+Ø2Ð2Ð2Ð2Ð2Ð2à6Ð6Ð6Ð6Ð6Ð6ð_Fð _Fð _Fð _Fð _F�ñ _Fô _Fð _FðD 
€ˆ+�xÑ Ô ðð ð ñ !Ô ðð ð r5   