
    -jiw/                     D   S SK rS SKrS SKrS SKJr  S SKrS SKrS SKJ	r	  S SKJ
r
  SSKJr  SSKJr  SS	KJr  SSKJr  SS
KJr  SSKJr  S rSqS rS rS#S jrS rS rS rS$S jrS%S jrS&S jrS'S jrS'S jrS rS r S r! S(S jr"S r#S r$S r%S r&S \'S!\'4S" jr(g))    N)Path)config)	provision   )util   )command)script)Script)ScriptDirectoryc                  T    [         R                  (       a  S[         R                   3$ g)Nscratch_scratch)r   FOLLOWER_IDENT     M/home/james-whalen/.local/lib/python3.13/site-packages/alembic/testing/env.py_get_staging_directoryr      s"    )22344r   c                  v   [         c  [        R                  [        R                  R                  4q [        R
                  " [        R                  5      [        l        [        R                  [        R                  l        [        R                  " [        R                  5      [        R                  l        g g N)_restore_logloggingrootLoggermanager
RootLoggerWARNINGManagerr   r   r   _replace_loggerr      sd    gnn&<&<=))'//:%ll!(!>	 r   c                      [         bK  [         u  [        l        [        R                  l        [        R                  [        R                  l        S q g g r   )r   r   r   r   r   r   r   r   _restore_loggerr!   &   s7     /;,gnn,%ll  r   c                    [        5         [        5       nU (       a  [        [        5       S5      n[        R
                  R                  U5      (       a
   SU-  5       e[        R                  " X4US9  U(       aC   [        R                  " US5        US;   d   U5       e[        [        US5      SU;   a  SOS5        [        R                  R                  U5      nU$ ! [         a     NXf = f)Nscriptsz2staging directory %s already exists; poor cleanup?)templateenv.py)pep3147_envonlysimplepep3147_everythingpep3147r'   )r   _testing_config
_join_pathr   ospathexistsr	   initr   load_python_fileAttributeErrormake_sourcelessr
   r   from_config)creater$   
sourcelesscfgr-   scs         r   staging_envr8   /   s    

C02I>77>>$'' 	
@4G	
' 	S2	%%dH5  "   	 
 4*&*4	(
 
			+	+C	0BI% "  s   ;C 
C+*C+c                      SSK Jn   U R                  R                  5         [        R
                  " [        5       S5        [        5         g )Nr   enginesT)sqlalchemy.testingr;   testing_reaper	close_allshutilrmtreer   r!   r:   s    r   clear_staging_envrA   R   s/    *$$&
MM(*D1r   c                     [        [        5       S5      n[        US5      n[        US5       nUR                  U 5        S S S 5        g ! , (       d  f       g = f)Nr#   zscript.py.makow)r+   r   openwrite)txtdir_r-   fs       r   script_file_fixturerI   Z   s?    ,.	:Dd,-D	dCA	 
s   A
Ac                 "   [        [        5       S5      nSU -   n [        US5      n[        R                  " U5      nU(       a  [        R
                  " U5        [        US5       nUR                  U 5        S S S 5        g ! , (       d  f       g = f)Nr#   z6
from alembic import context

config = context.config
r%   rC   )r+   r   r   pyc_file_from_pathr,   unlinkrD   rE   )rF   rG   r-   pyc_pathrH   s        r   env_file_fixturerN   a   ss    ,.	:D	
 	  dH%D&&t,H
		(	dCA	 
s   %B  
Bc                 ~    [        [        5       S5      nSU< SU < 3nU(       a  X#S'   [        R                  " XQUS9$ )Nr#   
sqlite:////scope)urlfutureoptions)r+   r   testing_utiltesting_engine)tempnamerT   rR   rU   rG   rS   s         r   _sqlite_file_dbrY   u   s:    ,.	:D#X
.C &&3wOOr   c                     [        [        5       S5      nSU S3nU=(       d'    S[        R                  R                  R
                  ;   n[        SU SU SU (       a  SOS	 S
U(       a  SOS S3	5      $ )Nr#   rP   z/foo.dbrT   
[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   db	__class__
__module___write_config_file)r5   rT   rG   rS   sqlalchemy_futures        r   _sqlite_testing_configrh   }   s    ,.	:DtfG
$CN8vyy/B/B/M/M#M&  "f0 10b 9 :#	% %r   c                     [        [        5       S5      nS[        R                  R                  R
                  ;   nSU-  n[        SU SU SU(       a  SOS S	U (       a  SOS S
U S35      $ )Nr#   rT   zsqlite:///%s/foo.dbr[   r\   z
sqlalchemy.future = r^   r_   r]   z_
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
    rb   )r5   extra_version_locationrG   rg   rS   s        r   _multi_dir_testing_configrk      s    ,.	:D FII$7$7$B$BB
$
&C&  0Vg> ?"f0 1   !	# #r   c                     [        [        5       S5      n[        SU S[        R                  " U5       S3SU  S35      $ )Huse a postgresql url with no host so that
connections guaranteed to failr#   z"
[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

)r+   r   _write_toml_configtextwrapdedentdialect
directivesrG   s      r   _no_sql_pyproject_configrt      s]     ,.	:D& 	  		 	$ $r   c           	      T    [        [        5       S5      n[        SU SU  SU S35      $ )rm   r#   z
[alembic]
script_location =r\   z://
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

)r+   r   rf   rq   s      r   _no_sql_testing_configrv     sI     ,.	:D   		   r   c                     [        U5      n[        UR                  S5       nUR                  U 5        S S S 5        U$ ! , (       d  f       U$ = fNrC   )rf   rD   toml_file_namerE   )tomltextinitextr6   rH   s       r   rn   rn   *  sB    
W
%C	c  #	&!	 
'J 
'	&Js	   >
Ac                     [        5       n[        UR                  S5       nUR                  U 5        S S S 5        U$ ! , (       d  f       U$ = frx   )r*   rD   config_file_namerE   )textr6   rH   s      r   rf   rf   1  s?    

C	c""C	(A	 
)J 
)	(Js	   =
Ac                     SSK Jn   [        R                  " [	        5       [        R
                  5      (       d  [        R                  " [	        5       5        U " [        [	        5       S5      [        [	        5       S5      5      $ )Nr   Configztest_alembic.inizpyproject.toml)alembic.configr   r,   accessr   F_OKmkdirr+   r   s    r   r*   r*   8  sY    %99+-rww77
')*)+-?@)+-=> r   c                    U R                   R                  U5      nUR                  n[        R                  " U5      nU(       a  UR                  U5      n[        US5       nUR                  U5        S S S 5        [        R                  " U5      nU(       a  [        R                  " U5        [        R                  " X5      n	U R                   R                  U	R                  5      nUR                  U	R                  :w  a  [!        S5      eU R                   R#                  U	SS9  U(       a  [%        XdS:X  a  SOS5        g g ! , (       d  f       N= f)Nwbz2Can't change down_revision on a refresh operation.T)_replacer(   r)   r'   )revision_mapget_revisionr-   ro   rp   encoderD   rE   r   rK   r,   rL   r   
_from_pathrevisiondown_revision	Exceptionadd_revisionr2   )
	scriptdirrev_idcontentencodingr5   oldr-   fprM   r
   s
             r   write_scriptr   C  s    
 
 
-
-f
5C88Doog&G..*	dD	R
 
&&t,H
		(y/F

 
 
-
-foo
>C
F000LMM'''>-AA)x	
  
	s   "E
Ec                    SS K nUR                  U 5        US:X  aq  [        R                  " U 5      n[        R
                  R                  S   n[        R                  R                  U 5      u  pVXT-   n[        R                  " X75        UnOUS;   d   e[        R                  " U 5      n[        R                  " U[        R                  5      (       d   e[        R                  " U 5        g )Nr   r'   )r)   r'   )
py_compilecompiler   rK   	importlib	machineryBYTECODE_SUFFIXESr,   r-   splitextr?   mover   r   rL   )r-   styler   rM   suffixfilepathextsimple_pyc_paths           r   r2   r2   ]  s    t**40$$66q9((."+H."----**4099Xrww''''IIdOr   c           	         [         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[        R                  " U 5      nUR                  " USSSS9  [        UUSU S35        UR                  " USSUS9  [        UUSU S	U S
3SS9  UR                  " USSUS9  [        UUSU S	U S35        XU4$ )Nz
revision aTbase)refreshheadz"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")

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   r3   generate_revisionr   )r6   abcr
   s        r   three_rev_fixturer   r  s    AAA((-F
QdH	C 	* QdC	C  	  ', QdC	C  	( 7Nr   c           	         [         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[        R                  " U 5      nUR                  " USUSSS9  [        UUSU SU S35        UR                  " USUSSS9  [        UUSU SU S	35        UR                  " US
USSS9  [        UUSU SU S35        XEU4$ )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   )r6   r   r   r   derH   r
   s           r   multi_heads_fixturer     s    	AAA((-F
	QtT 	C  	* 	QtT 	C  	* 	QtT 	C  	* 7Nr   c                 D   [        [        5       S5      nS[        R                  R                  R
                  ;   nSR                  U R                  5       5      nSR                  S U R                  5        5       5      n [        SU SU(       a  SOS	 S
U SU  S3	5      $ )z?alembic.ini fixture to work exactly with the 'multidb' templater#   rT   z, z

c              3   J   #    U  H  u  pS U SUR                    3v   M     g7f)[z]
sqlalchemy.url = N)rS   ).0keyvalues      r   	<genexpr>*_multidb_testing_config.<locals>.<genexpr>  s+      )JC C5$UYYK0)s   !#r[   z(
sourceless = false
sqlalchemy.future = r^   r_   z
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
    )
r+   r   r   rc   rd   re   joinkeysitemsrf   )r;   rG   rg   	databasess       r   _multidb_testing_configr     s     ,.	:D FII$7$7$B$BB		',,.)Ikk !--/ G
 & 0Vg> ?K 	 
	! !r   r   morec                 `    [        [        U 5      R                  " U6 R                  5       5      $ r   )strr   joinpathas_posix)r   r   s     r   r+   r+   D  s%    tDz""D)22455r   )TgenericF)zfoo.dbFN)FF)Fra   )
postgresqlra   )asciiF))importlib.machineryr   r   r,   pathlibr   r?   ro   r<   r   r   ra   r   rV   r	   r
   r   r   r   r   r   r!   r8   rA   rI   rN   rY   rh   rk   rt   rv   rn   rf   r*   r   r2   r   r   r   r   r+   r   r   r   <module>r      s      	    % ( "     $ ? F(P+\)X)X$N >C
4*HVSl.b6S 6 6r   