|L i-ddlZddlZddlmZddlZddlZddlmZddlm Z ddl m Z ddl m Z dd l mZddl m Z dd lmZdd lmZd Zd!d ZdZdZdZd"dZd#dZd$dZd%dZd%dZdZdZdZ d&dZdZdZ dZ!dZ"de#de#fd Z$y)'N)Path)config) provision)util)command)script)Script)ScriptDirectorycJtjrdtjSy)Nscratch_scratch)rFOLLOWER_IDENTY/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/alembic/testing/env.py_get_staging_directoryrs")22344rct}|rttd}tjj |r Jd|zt j||||r> tj|d|dvsJ|tt|dd|vrdndtjj|}|S#t$rYSwxYw)Nscriptsz2staging directory %s already exists; poor cleanup?)templateenv.py)pep3147_envonlysimplepep3147_everythingpep3147r)_testing_config _join_pathrospathexistsr initrload_python_fileAttributeErrormake_sourcelessr r from_config)creater sourcelesscfgr scs r staging_envr+s  C 02I>77>>$' @4 G '  S$2  %%dH5"    4*&*4 (     + +C 0B I%"    s%C CCcddlm}|jjt j t dy)NrenginesT)sqlalchemy.testingr.testing_reaper close_allshutilrmtreerr-s rclear_staging_envr4;s)* $$& MM(*D1rcttd}t|d}t|d5}|j|dddy#1swYyxYw)Nrzscript.py.makow)rropenwrite)txtdir_r fs rscript_file_fixturer<BsJ ,. :D d, -D dCA  s AAc ttd}d|z}t|d}tj|}|rt j |t |d5}|j|dddy#1swYyxYw)Nrz6 from alembic import context config = context.config rr6)rrrpyc_file_from_pathrunlinkr7r8)r9r:r pyc_pathr;s renv_file_fixturerAIs~ ,. :D     dH %D&&t,H ( dCA  s A99Bc xttd}d|d|}|r||d<tj|||S)Nr sqlite:////scope)urlfutureoptions)rr testing_utiltesting_engine)tempnamerGrErHr:rFs r_sqlite_file_dbrL]s> ,. :D#X .C    & &3vw OOrc ttd}d|d}|xs&dtjjj v}t d|d|d|rdnd d |rd nd d S)NrrCz/foo.dbrG [alembic] script_location =  sqlalchemy.url =  sourceless = truefalse zsqlalchemy.future = truea [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 rrrdb __class__ __module___write_config_file)r(rGr:rFsqlalchemy_futures r_sqlite_testing_configr[es ,. :D tfG $CN8vyy/B/B/M/M#M  &"f 010b9: # % %rc ttd}dtjjj v}d|z}t d|d|d|rdndd |rdndd |d S) NrrGzsqlite:///%s/foo.dbrNrOz sqlalchemy.future = rQrRrPz_ path_separator = space version_locations = %(here)s/model1/ %(here)s/model2/ %(here)s/model3/ aR [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 rU)r(extra_version_locationr:rZrFs r_multi_dir_testing_configr^s ,. :D FII$7$7$B$BB $ &C  &0Vg>?"f 01! # #rc~ttd}td|dtj|dd|dS)Luse a postgresql url with no host so that connections guaranteed to failrz" [tool.alembic] script_location ="z" z z [alembic] sqlalchemy.url = aR:// [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 )rr_write_toml_configtextwrapdedentdialect directivesr:s r_no_sql_pyproject_configrgs] ,. :D  &     $ $rc Tttd}td|d|d|dS)r`rz [alembic] script_location =rOz:// aO [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 )rrrYrds r_no_sql_testing_configrisI ,. :D        rct|}t|jd5}|j|ddd|S#1swY|SxYwNr6)rYr7toml_file_namer8)tomltextinitextr)r;s rrarasD W %C c  # &!  J Js >Act}t|jd5}|j|ddd|S#1swY|SxYwrk)rr7config_file_namer8)textr)r;s rrYrYsA  C c""C (A   J Js =Acddlm}tjt tj stj t |tt dtt dS)NrConfigztest_alembic.inizpyproject.toml)alembic.configrtraccessrF_OKmkdirrrss rrr sV% 99+-rww 7 ')* )+-?@)+-=> rc|jj|}|j}tj|}|r|j |}t |d5}|j|dddtj|}|rtj|tj||} |jj| j}|j| jk7r t!d|jj#| d|rt%||dk(rdndyy#1swYxYw)Nwbz2Can't change down_revision on a refresh operation.T)_replacerrr) revision_map get_revisionr rbrcencoder7r8rr>rr?r _from_pathrevision down_revision Exception add_revisionr%) scriptdirrev_idcontentencodingr(oldr fpr@r s r write_scriptr+s  - -f 5C 88Doog&G..* dD R &&t,H (   y$ /F  - -foo >C F000LMM '''> z-AA)x s D55D>cddl}|j||dk(rrtj|}tj j d}tjj|\}}||z}tj|||}n|dvsJtj|}tj|tjsJtj|y)Nrr)rr) py_compilecompilerr> importlib machineryBYTECODE_SUFFIXESrr splitextr2movervrwr?)r stylerr@suffixfilepathextsimple_pyc_paths rr%r%Est **40$$66q9((. #"V+ Ho."----**40 99Xrww '' 'IIdOrc tj}tj}tj}tj|}|j|dddt ||d|d|j|dd|t ||d|d |d d |j|d d|t ||d|d |d|||fS)Nz revision aTbase)refreshheadz"Rev A" revision = 'z' 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") zutf-8)rz revision cz"Rev C" revision = 'z}' from alembic import op def upgrade(): op.execute("CREATE STEP 3") def downgrade(): op.execute("DROP STEP 3") rrr r&generate_revisionr)r)abcr s rthree_rev_fixturerZs A A A  ( ( -FFQ dH  C  *FQ dC  C   ',FQ dC  C  ( a7Nrc tj}tj}tj}tj|}|j|d|ddt ||d|d|d|j|d|ddt ||d|d|d |j|d |ddt ||d |d|d |||fS) z:Create a multiple head fixture from the three-revs fixturezrevision d from bT)rsplicerz"Rev D" revision = 'rz}' from alembic import op def upgrade(): op.execute("CREATE STEP 4") def downgrade(): op.execute("DROP STEP 4") zrevision 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") zrevision 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)rrrder;r s rmulti_heads_fixturers$ A A A  ( ( -FF QtT  C  *F QtT  C  *F QtT  C  * a7Nrc 8ttd}dtjjj v}dj |j}dj d|jD}td|d|rdnd d |d|d S) z?alembic.ini fixture to work exactly with the 'multidb' templaterrGz, z c3FK|]\}}d|d|jyw)[z] sqlalchemy.url = N)rF).0keyvalues r z*_multidb_testing_config..s. C C5$UYYK0s!rNz( sourceless = false sqlalchemy.future = rQrRz databases = aQ [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 ) rrrrVrWrXjoinkeysitemsrY)r.r:rZ databasess r_multidb_testing_configrs ,. :D FII$7$7$B$BB ',,.)Ikk!--/G  &0Vg>? K   ! !rrmorec`tt|j|jS)N)strrjoinpathas_posix)rrs rrr,s( "tDz""D)224 55r)TgenericF)zfoo.dbFN)FF)FrT) postgresqlrT)asciiF)%importlib.machineryrrpathlibrr2rbr/rrrTrrIr r r r rr+r4r<rArLr[r^rgrirarYrrr%rrrrrrrrrs  %("$D2(P+\)X)X$N>C 4*HVSl.b6S66r