
    +hD                         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dlmZ ddlmZ ddlmZ h dZ ej$                  d      d        Z e
j$                  d      d        Z ej$                  d      d        Z ej$                  d      d        Z e	j$                  d      d        Z ej$                  d      d        Z ej$                  d      d        Z ej$                  d      d        Zy)    N   )exc)url)	create_db)drop_db)follower_url_from_main)generate_driver_url)log)post_configure_engine)run_reap_dbs) stop_test_class_outside_fixtures)temp_table_keyword_args>   pysqlite	aiosqlitepysqlciphersqlitec                 .   |dk(  rP| j                         dk7  r=| j                  r| j                  | j                  dz         } | j                  d      } | j                  d|      } 	 | j                          | S # t        j
                  $ r Y y w xY w)Nr   z.enc)databasetest)passwordsqlite+)
drivername)get_driver_namer   setget_dialectr   NoSuchModuleError)r   driver	query_strs      W/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/provision.pyr	   r	      s    3#6#6#8M#I<<''3<<&#8'9Cggvg&
''F4'
5C 
    s   ,A> >BBc           
      2   t        j                  |       } | j                  r| j                  dk(  r| S t        j                  d| j                        }|j                  dd      \  }}| j                         }t        j                  d|d|d|d|      S )	Nz:memory:z(.+?)\.(.+)$      r   z:///_.)sa_urlmake_urlr   rematchgroupr   )r   identmnameextr   s         r   _sqlite_follower_url_from_mainr.   $   s{    
//#
C<<3<<:5
 HH_cll3GGAqM	c((*
'1:ucJ
 	
    c                 J    ddl m} |j                  d      fd       }y )Nr   )eventconnectc                     s | j                  dj                  d       y | j                  ddj                  d       y )NzATTACH DATABASE "z_test_schema.db" AS test_schemar#   )executer   )dbapi_connectionconnection_recordenginefollower_idents     r   r2   z._sqlite_post_configure_engine.<locals>.connect8   sB      $$==#
 $$!6==2r/   )
sqlalchemyr1   listens_for)r   r7   r8   r1   r2   s    ``  r   _sqlite_post_configure_enginer;   4   s%     
vy) *r/   c                      y )N )cfgengr*   s      r   _sqlite_create_dbr@   M   s    r/   c                     d|z  |d|j                   dfD ]O  }t        j                  j                  |      s#t	        j
                  d|z         t        j                  |       Q y )Nz%s.dbr#   z_test_schema.db!deleting SQLite database file: %s)r   ospathexistsr
   inforemove)r>   r?   r*   rD   s       r   _sqlite_drop_dbrH   R   sW     	%"'4  77>>$HH84?@IIdOr/   c                 d   |j                         5 }|j                  d      D cg c]  }|j                  r|j                   }}d d d        rP|j                          |D ]:  }|st        j
                  j                  |      s&t	        j                  |       < y y c c}w # 1 sw Y   axY w)NzPRAGMA database_list)r2   exec_driver_sqlfiledisposerC   rD   rE   rG   )configdbclsconnrowfilesfile_s          r   r   r   ]   s    	 
 ++,BC
xx HH
 

 


  	!E.		% 	!	 

 
s   B&B!B&!B&&B/c                     ddgiS )Nprefixes	TEMPORARYr=   )r>   r?   s     r   _sqlite_temp_table_keyword_argsrW   o   s    &&r/   c                    t        j                  d|        t        j                  ddj                  |             |D ]  }dD ]  }|d|gt        D cg c]  }|d|d| c}z   t        D cg c]	  }|d| c}z   t        D cg c]  }|d|d| c}z   D ]O  }t        j
                  j                  |      s#t        j                  d|z         t	        j                  |       Q   y c c}w c c}w c c}w )	Nzdb reaper connecting to %rzidentifiers in file: %sz, )rN   zdb.encr$   r#   z_test_schema.rB   )r
   rF   join_drivernamesrC   rD   rE   rG   )r   identsr*   r-   r   rD   s         r   _reap_sqlite_dbsr\   t   s   HH)3/HH&		&(9: $ $ 	$C!3'( '3" #-eS9 '3" ,6s; '3" /4ZE$ 77>>$'HH@4GHIIdO#$	$$s   C9
2C>
D
)rC   r'    r   r7   r   r%   testing.provisionr   r   r   r	   r
   r   r   r   r   rZ   for_dbr.   r;   r@   rH   rW   r\   r=   r/   r   <module>r`      s>   	 	  # * ( 7 4 $ 6 - A 8 8 H% & x(
 )
 h' (0 (	 	   )!((2! 3!"  )' *' X$ $r/   