§
    ZøÁi*  ã                   óô   — d dl Zd dl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„ Zd"d„Zd„ Zd„ Zd„ Zd#d„Zd$d„Zd%d„Zd&d„Zd„ Zd„ Z	 d'd„Zd„ Zd„ Zd „ Zd!„ ZdS )(é    N)Úconfig)Ú	provisioné   )Úutilé   )Úcommand)Úscript)ÚScript)ÚScriptDirectoryc                  ó<   — t           j        rdt           j        z  S dS )Nz
scratch_%sÚscratch)r   ÚFOLLOWER_IDENT© ó    ú]/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/alembic/testing/env.pyÚ_get_staging_directoryr      s    € ÝÔð Ø�iÔ6Ñ6Ð6àˆyr   TÚgenericFc                 ó  — t          ¦   «         }| rÚt          j                             t	          ¦   «         d¦  «        }t          j                             |¦  «        rJ d|z  ¦   «         ‚t          j        |||¬¦  «         |ri	 t          j	        |d¦  «         n# t          $ r Y nw xY w|dv s
J |¦   «         ‚t          t          j                             |d¦  «        d|v rdnd¦  «         t          j                             |¦  «        }|S )NÚscriptsz2staging directory %s already exists; poor cleanup?)Útemplateúenv.py)Úpep3147_envonlyÚsimpleÚpep3147_everythingÚpep3147r   )Ú_testing_configÚosÚpathÚjoinr   Úexistsr   Úinitr   Úload_python_fileÚAttributeErrorÚmake_sourcelessr	   r   Úfrom_config)Úcreater   Ú
sourcelessÚcfgr   Úscs         r   Ústaging_envr*      sA  € Ý
Ñ
Ô
€CØð ÝŒw�|Š|Õ2Ñ4Ô4°iÑ@Ô@ˆÝ”7—>’> $Ñ'Ô'ð 	
ð 	
Ø@À4ÑGñ	
ô 	
Ð'õ 	Œ�S˜$¨Ð2Ñ2Ô2Ð2Øð 	ð	åÔ% d¨HÑ5Ô5Ð5Ð5øÝ!ð ð ð ð �ðøøøð ð "ð ð ð ð ñ	ô ð õ
 Ý”—’˜T 8Ñ,Ô,Ø&¨*Ð4Ð4�	�	¸(ñô ð õ
 
Ô	×	+Ò	+¨CÑ	0Ô	0€BØ€Is   ÂB Â
B&Â%B&c                  ó†   — ddl m}  | j                             ¦   «          t	          j        t          ¦   «         d¦  «         d S )Nr   ©ÚenginesT)Úsqlalchemy.testingr-   Útesting_reaperÚ	close_allÚshutilÚrmtreer   r,   s    r   Úclear_staging_envr3   :   sH   € Ø*Ð*Ð*Ð*Ð*Ð*àÔ×$Ò$Ñ&Ô&Ð&Ý
„MÕ(Ñ*Ô*¨DÑ1Ô1Ð1Ð1Ð1r   c                 ó  — t           j                             t          ¦   «         d¦  «        }t           j                             |d¦  «        }t	          |d¦  «        5 }|                     | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   zscript.py.makoÚw)r   r   r   r   ÚopenÚwrite)ÚtxtÚdir_r   Úfs       r   Úscript_file_fixturer;   A   s²   € ÝŒ7�<Š<Õ.Ñ0Ô0°)Ñ<Ô<€DÝŒ7�<Š<˜Ð.Ñ/Ô/€DÝ	ˆd�C‰Œð ˜AØ	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁB Â BÂBc                 óx  — t           j                             t          ¦   «         d¦  «        }d| z   } t           j                             |d¦  «        }t	          j        |¦  «        }|rt          j        |¦  «         t          |d¦  «        5 }|                     | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   z6
from alembic import context

config = context.config
r   r5   )	r   r   r   r   r   Úpyc_file_from_pathÚunlinkr6   r7   )r8   r9   r   Úpyc_pathr:   s        r   Úenv_file_fixturer@   H   sï   € ÝŒ7�<Š<Õ.Ñ0Ô0°)Ñ<Ô<€Dð	ð
 ñ	ð õ Œ7�<Š<˜˜hÑ'Ô'€DÝÔ& tÑ,Ô,€HØð Ý
Œ	�(ÑÔÐå	ˆd�C‰Œð ˜AØ	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB/Â/B3Â6B3úfoo.dbc                 ó¾   — t           j                             t          ¦   «         d¦  «        }d|›d| ›�}|rt          j        r||d<   t          j        |||¬¦  «        S )Nr   z
sqlite:///ú/Úscope)ÚurlÚfutureÚoptions)r   r   r   r   r   Úsqla_14Útesting_utilÚtesting_engine)ÚtempnamerF   rD   rG   r9   rE   s         r   Ú_sqlite_file_dbrL   \   sc   € ÝŒ7�<Š<Õ.Ñ0Ô0°)Ñ<Ô<€D€DØ#˜t˜t X XÐ
.€CØð !•”ð !Ø ˆ�ÑÝÔ&¨3°vÀwÐOÑOÔOÐOr   c                 óà   — t           j                             t          ¦   «         d¦  «        }d|z  }|pdt          j        j        j        v }t          d|›d|›d| rdnd›d	|rd
nd›d�	¦  «        S )Nr   úsqlite:///%s/foo.dbrF   ú
[alembic]
script_location = ú
sqlalchemy.url = ú
sourceless = ÚtrueÚfalseú
zsqlalchemy.future = trueÚ a¢  

[loggers]
keys = root,sqlalchemy

[handlers]
keys = console

[logger_root]
level = WARNING
handlers = console
qualname =

[logger_sqlalchemy]
level = DEBUG
handlers =
qualname = sqlalchemy.engine

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatters]
keys = generic

[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
    ©	r   r   r   r   r   ÚdbÚ	__class__Ú
__module__Ú_write_config_file)r'   rF   r9   rE   Úsqlalchemy_futures        r   Ú_sqlite_testing_configr\   d   s’   € ÝŒ7�<Š<Õ.Ñ0Ô0°)Ñ<Ô<€DØ
 $Ñ
&€CàÐN 8­v¬yÔ/BÔ/MÐ#MÐåÐðL ˆDˆDØˆCˆCØ Ð-ˆFˆF gÐ-Ð-Ø*;ÐCÐ&Ð&ÀÐCÐCðQ)	
ñ+ô +ð +r   rU   c                 óâ   — t           j                             t          ¦   «         d¦  «        }dt          j        j        j        v }d|z  }t          d|›d|›d|rdnd›d	| rdnd›d
|›d�¦  «        S )Nr   rF   rN   rO   rP   z
sqlalchemy.future = rR   rS   rQ   zH
version_locations = %(here)s/model1/ %(here)s/model2/ %(here)s/model3/ aL  

[loggers]
keys = root

[handlers]
keys = console

[logger_root]
level = WARNING
handlers = console
qualname =

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatters]
keys = generic

[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
    rV   )r'   Úextra_version_locationr9   r[   rE   s        r   Ú_multi_dir_testing_configr_   ˜   s”   € ÝŒ7�<Š<Õ.Ñ0Ô0°)Ñ<Ô<€DØ ¥F¤IÔ$7Ô$BÐBÐà
 $Ñ
&€CåÐðD ˆDˆDØˆCˆCØ'Ð4ˆFˆF¨WÐ4Ð4Ø Ð-ˆFˆF gÐ-Ð-Ø"Ð"Ð"ðK&	
ñ(ô (ð (r   Ú
postgresqlc           	      óŒ   — t           j                             t          ¦   «         d¦  «        }t	          d|›d| ›d|›d�¦  «        S )zLuse a postgresql url with no host so that
    connections guaranteed to failr   rO   rP   z://
aI  

[loggers]
keys = root

[handlers]
keys = console

[logger_root]
level = WARNING
handlers = console
qualname =

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatters]
keys = generic

[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S

)r   r   r   r   rZ   )ÚdialectÚ
directivesr9   s      r   Ú_no_sql_testing_configrd   É   sP   € õ Œ7�<Š<Õ.Ñ0Ô0°)Ñ<Ô<€DÝÐð@ ˆ4ˆ4���˜*˜*˜*ð?	&ñ!ô !ð !r   c                 ó¦   — t          ¦   «         }t          |j        d¦  «        5 }|                     | ¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nr5   )r   r6   Úconfig_file_namer7   )Útextr(   r:   s      r   rZ   rZ   ñ   s†   € Ý
Ñ
Ô
€CÝ	ˆcÔ" CÑ	(Ô	(ð ¨AØ	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à€Js   ¤AÁA
ÁA
c                  ó  — ddl m}  t          j        t	          ¦   «         t          j        ¦  «        s t          j        t	          ¦   «         ¦  «          | t          j                             t	          ¦   «         d¦  «        ¦  «        S )Nr   ©ÚConfigztest_alembic.ini)	Úalembic.configrj   r   Úaccessr   ÚF_OKÚmkdirr   r   ri   s    r   r   r   ø   sp   € Ø%Ð%Ð%Ð%Ð%Ð%åŒ9Õ+Ñ-Ô-­r¬wÑ7Ô7ð +Ý
ŒÕ'Ñ)Ô)Ñ*Ô*Ð*Øˆ6•"”'—,’,Õ5Ñ7Ô7Ð9KÑLÔLÑMÔMÐMr   Úasciic                 ó‚  — | j                              |¦  «        }|j        }t          j        |¦  «        }|r|                     |¦  «        }t          |d¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        |¦  «        }|rt          j        |¦  «         t          j        | |¦  «        }	| j                              |	j        ¦  «        }|j        |	j        k    rt!          d¦  «        ‚| j                              |	d¬¦  «         |rt%          ||dk    rdnd¦  «         d S d S )NÚwbz2Can't change down_revision on a refresh operation.T)Ú_replacer   r   r   )Úrevision_mapÚget_revisionr   ÚtextwrapÚdedentÚencoder6   r7   r   r=   r   r>   r
   Ú
_from_pathÚrevisionÚdown_revisionÚ	ExceptionÚadd_revisionr$   )
Ú	scriptdirÚrev_idÚcontentÚencodingr'   Úoldr   Úfpr?   r	   s
             r   Úwrite_scriptrƒ      s•  € ð Ô
 ×
-Ò
-¨fÑ
5Ô
5€CØŒ8€DåŒo˜gÑ&Ô&€GØð +Ø—.’. Ñ*Ô*ˆÝ	ˆd�DÑ	Ô	ð ˜RØ
�Š�ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð åÔ& tÑ,Ô,€HØð Ý
Œ	�(ÑÔÐÝÔ˜y¨$Ñ/Ô/€FØ
Ô
 ×
-Ò
-¨f¬oÑ
>Ô
>€CØ
Ô˜FÔ0Ò0Ð0ÝØCñ
ô 
ð 	
ð Ô×'Ò'¨¸Ð'Ñ>Ô>Ð>àð 
ÝØ˜zÐ-AÒAÐA�)�)Àxñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
s   ÁA?Á?BÂBc                 ó¶  — dd l }|                     | ¦  «         |dk    rjt          j        | ¦  «        }t          j        j        d         }t          j         	                    | ¦  «        \  }}||z   }t          j        ||¦  «         |}n|dv sJ ‚t          j        | ¦  «        }t          j        |t          j        ¦  «        sJ ‚t          j        | ¦  «         d S )Nr   r   )r   r   )Ú
py_compileÚcompiler   r=   Ú	importlibÚ	machineryÚBYTECODE_SUFFIXESr   r   Úsplitextr1   Úmoverl   rm   r>   )r   Ústyler…   r?   ÚsuffixÚfilepathÚextÚsimple_pyc_paths           r   r$   r$     sÖ   € ØÐÐÐà×Ò�tÑÔÐà�ÒÐÝÔ*¨4Ñ0Ô0ˆÝÔ$Ô6°qÔ9ˆÝœ×(Ò(¨Ñ.Ô.‰ˆ�#Ø" VÑ+ˆÝŒ�H˜oÑ.Ô.Ð.Ø"ˆˆàÐ-Ð-Ð-Ð-Ð-ÝÔ*¨4Ñ0Ô0ˆåŒ9�X�rœwÑ'Ô'Ð'Ð'Ð'å„Iˆd�O„O€O€O€Or   c           	      óª  — t          j        ¦   «         }t          j        ¦   «         }t          j        ¦   «         }t          j        | ¦  «        } |j        |ddd¬¦  «         t          ||d|z  ¦  «          |j        |dd|¬¦  «         t          ||d|› d|› d	�d
¬¦  «          |j        |dd|¬¦  «         t          ||d|›d|›d�¦  «         |||fS )Nz
revision aTÚbase)ÚrefreshÚheadz¨"Rev A"
revision = '%s'
down_revision = None

from alembic import op


def upgrade():
    op.execute("CREATE STEP 1")


def downgrade():
    op.execute("DROP STEP 1")

z
revision bu/   # coding: utf-8
"Rev B, mÃ©il, %3"
revision = 'ú'
down_revision = 'z}'

from alembic import op


def upgrade():
    op.execute("CREATE STEP 2")


def downgrade():
    op.execute("DROP STEP 2")

zutf-8)r€   z
revision cz"Rev C"
revision = 'z}'

from alembic import op


def upgrade():
    op.execute("CREATE STEP 3")


def downgrade():
    op.execute("DROP STEP 3")

©r   r~   r   r%   Úgenerate_revisionrƒ   )r(   ÚaÚbÚcr	   s        r   Úthree_rev_fixturer›   1  s5  € ÝŒ‰Œ€AÝŒ‰Œ€AÝŒ‰Œ€AåÔ(¨Ñ-Ô-€FØ€FÔ˜Q °dÀÐHÑHÔHÐHÝØØ	ð	ð  ñ!	ñô ð ð, €FÔ˜Q °dÀÐCÑCÔCÐCÝØØ	ð	àð	ð 	ð ð	ð 	ð 	ð  ð'ñ ô ð ð, €FÔ˜Q °dÀÐCÑCÔCÐCÝØØ	ˆð" ˆ1ˆ1ˆaˆaˆað!	ñô ð ð* ˆa�ˆ7€Nr   c           	      ó´  — t          j        ¦   «         }t          j        ¦   «         }t          j        ¦   «         }t          j        | ¦  «        } |j        |d|dd¬¦  «         t          ||d|›d|›d�¦  «          |j        |d|dd¬¦  «         t          ||d|›d|›d	�¦  «          |j        |d
|dd¬¦  «         t          ||d|›d|›d�¦  «         |||fS )z:Create a multiple head fixture from the three-revs fixturezrevision d from bT)r”   Úsplicer“   z"Rev D"
revision = 'r•   z}'

from alembic import op


def upgrade():
    op.execute("CREATE STEP 4")


def downgrade():
    op.execute("DROP STEP 4")

zrevision e from dz"Rev E"
revision = 'z}'

from alembic import op


def upgrade():
    op.execute("CREATE STEP 5")


def downgrade():
    op.execute("DROP STEP 5")

zrevision f from bz"Rev F"
revision = 'z}'

from alembic import op


def upgrade():
    op.execute("CREATE STEP 6")


def downgrade():
    op.execute("DROP STEP 6")

r–   )r(   r˜   r™   rš   ÚdÚer:   r	   s           r   Úmulti_heads_fixturer    ~  sN  € õ 	Œ‰Œ€AÝŒ‰Œ€AÝŒ‰Œ€AåÔ(¨Ñ-Ô-€FØ€FÔØ	Ð Q¨t¸Tðñ ô ð õ ØØ	ˆð" ˆ1ˆ1ˆaˆaˆað!	ñô ð ð, €FÔØ	Ð Q¨t¸Tðñ ô ð õ ØØ	ˆð" ˆ1ˆ1ˆaˆaˆað!	ñô ð ð, €FÔØ	Ð Q¨t¸Tðñ ô ð õ ØØ	ˆð" ˆ1ˆ1ˆaˆaˆað!	ñô ð ð, ˆa�ˆ7€Nr   c                 óz  — t           j                             t          ¦   «         d¦  «        }dt          j        j        j        v }d                     |                      ¦   «         ¦  «        }d                     d„ |  	                    ¦   «         D ¦   «         ¦  «        } t          d|›d|rdnd	›d
|›d| ›d�	¦  «        S )z?alembic.ini fixture to work exactly with the 'multidb' templater   rF   z, z

c              3   ó6   K  — | ]\  }}d |›d|j         ›�V — ŒdS )ú[z]
sqlalchemy.url = N)rE   )Ú.0ÚkeyÚvalues      r   ú	<genexpr>z*_multidb_testing_config.<locals>.<genexpr>ß  sI   è è € ð ð áˆC��ð +.¨#¨#¨u¬y¨yÐ9ðð ð ð ð ð r   rO   z(
sourceless = false
sqlalchemy.future = rR   rS   z
databases = aK  
[loggers]
keys = root

[handlers]
keys = console

[logger_root]
level = WARNING
handlers = console
qualname =

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatters]
keys = generic

[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
    )r   r   r   r   r   rW   rX   rY   ÚkeysÚitemsrZ   )r-   r9   r[   Ú	databasess       r   Ú_multidb_testing_configr«   ×  sÉ   € õ Œ7�<Š<Õ.Ñ0Ô0°)Ñ<Ô<€Dà ¥F¤IÔ$7Ô$BÐBÐà—	’	˜'Ÿ,š,™.œ.Ñ)Ô)€IØ�kŠkð ð à!Ÿ-š-™/œ/ðñ ô ñ ô €Gõ
 ÐðB ˆ4ˆ4Ð,Ð9��°'Ð9Ð9¸9¸9¸9ÀgÀgÀgðA 	Oñ"ô "ð "r   )Tr   F)rA   FN)FF)FrU   )r`   rU   )ro   F)Úimportlib.machineryr‡   r   r1   ru   r.   r   r   rU   r   rI   r   r	   r
   r   r   r*   r3   r;   r@   rL   r\   r_   rd   rZ   r   rƒ   r$   r›   r    r«   r   r   r   ú<module>r­      sí  ðØ Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€à %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (à "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $ðð ð ðð ð ð ðD2ð 2ð 2ðð ð ðð ð ð(Pð Pð Pð Pð1ð 1ð 1ð 1ðh.ð .ð .ð .ðb%ð %ð %ð %ðPð ð ðNð Nð Nð >Cð
ð 
ð 
ð 
ð8ð ð ð*Jð Jð JðZVð Vð Vðr/ð /ð /ð /ð /r   