Ë
    r™ãj½)  ã                   ó°  — 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 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j4                  d«      d„ «       Z e
j4                  d«      d„ «       Z e	j4                  d«      d„ «       Zd„ Z ej4                  d«      d„ «       Z ej4                  d«      d„ «       Z  ej4                  d«      d„ «       Z! ej4                  d«      d„ «       Z"d)d „Z#d!„ Z$ ej4                  d«      d"„ «       Z% ej4                  d«      d#„ «       Z& ej4                  d«      d$„ «       Z' ej4                  d«      d%„ «       Z( ej4                  d«      d&„ «       Z) ej4                  d«      d'„ «       Z* ej4                  d«      d(„ «       Z+y)*é    Né   )Úcreate_engine)Úexc)Úinspect)Úurl)Úconfigure_follower)Ú	create_db)Ú#drop_all_schema_objects_post_tables)Ú"drop_all_schema_objects_pre_tables)Údrop_db)Úfollower_url_from_main)Úgenerate_driver_url)Úlog)Úpost_configure_engine)Úpost_configure_testing_engine)Úrun_reap_dbs)Ú set_default_schema_on_connection)Ú stop_test_class_outside_fixtures)Útemp_table_keyword_args)Úupdate_db_opts)Úwarn_test_suiteÚoraclec                 óþ   — | j                  «       }| j                  |›d|›�¬«      }|dv r|j                  ddg«      }n|j                  ddg«      }	 |j	                  «        |S # t
        j                  $ r Y y w xY w)Nú+)Ú
drivername)ÚoracledbÚoracledb_async)Úretry_countÚ5)Úretry_delayÚ2r   r    )Úget_backend_nameÚsetÚupdate_query_pairsÚdifference_update_queryÚget_dialectr   ÚNoSuchModuleError)r   ÚdriverÚ	query_strÚbackendÚnew_urls        úo/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/dialects/oracle/provision.pyÚ_oracle_generate_driver_urlr-   !   sŸ   € ð ×"Ñ"Ó$€Gà�g‰gÚ%¡vÐ.ð ó €Gð Ð/Ñ/ð ×,Ñ,Ø!Ð#7Ð8ó
‰ð ×1Ñ1Ø˜MÐ*ó
ˆðØ×ÑÔð ˆøô × Ñ ò Ùðús   ÁA& Á&A<Á;A<c                 óÞ  — |j                  «       5 }|j                  d|z  «       |j                  d|z  «       |j                  d|z  «       |j                  d|›�«       |j                  d|z  «       |j                  d|z  «       |j                  d|z  «       |j                  d|z  «       |j                  d	|z  «       |j                  d
|z  «       d d d «       y # 1 sw Y   y xY w)Nzcreate user %s identified by xez#create user %s_ts1 identified by xez#create user %s_ts2 identified by xezgrant dba to z grant unlimited tablespace to %sz$grant unlimited tablespace to %s_ts1z$grant unlimited tablespace to %s_ts2zgrant create table to %szgrant create table to %s_ts1zgrant create table to %s_ts2)ÚbeginÚexec_driver_sql©ÚcfgÚengÚidentÚconns       r,   Ú_oracle_create_dbr6   B   sí   € ð
 
�‰‹ð E˜Ø×ÑÐ>ÀÑFÔGØ×ÑÐBÀUÑJÔKØ×ÑÐBÀUÑJÔKØ×Ò±%Ð9Ô:Ø×ÑÐ?À%ÑGÔHØ×ÑÐCÀeÑKÔLØ×ÑÐCÀeÑKÔLà×ÑÐ7¸%Ñ?Ô@Ø×ÑÐ;¸eÑCÔDØ×ÑÐ;¸eÑCÔD÷E÷ Eñ Eús   ‘C	C#Ã#C,c                 ó,   — d|z  | _         d|z  | _        y ©Nú%s_ts1ú%s_ts2)Útest_schemaÚtest_schema_2)Úconfigr4   s     r,   Ú_oracle_configure_followerr>   U   s   € à! EÑ)€FÔØ# eÑ+€FÕó    c                 óÆ   — 	 | j                  d|z  «       t        j                  d|«       y# t        j                  $ r }t        j
                  d|«       Y d }~yd }~ww xY w)Nzdrop user %s cascadezReaped db: %sTzcouldn't drop db: %sF)r0   r   Úinfor   ÚDatabaseErrorÚwarning)r5   ÚdbnameÚerrs      r,   Ú_ora_drop_ignorerF   [   sT   € ðØ×ÑÐ3°fÑ<Ô=Ü�‰� &Ô)ØøÜ×Ñò Ü�‰Ð*¨CÔ0Üûðús   ‚*- ­A Á AÁA c                 óF   — t        |«       t        || j                  «       y ©N)Ú_purge_recyclebinr;   ©r2   r3   s     r,   Ú'_ora_drop_all_schema_objects_pre_tablesrK   e   s   € ä�cÔÜ�c˜3Ÿ?™?Õ+r?   c           	      óÊ  — |j                  «       5 }|j                  j                  |d d d «      D ]  }|j                  d|d   › �«       Œ |j                  j                  || j                  d d «      D ]&  }|j                  d| j                  › d|d   › �«       Œ( t        |«      j                  «       D ]  }|j                  d|› �«       Œ 	 d d d «       y # 1 sw Y   y xY w)Nzdrop synonym Úsynonym_nameú.zdrop table )r/   ÚdialectÚ_get_synonymsr0   r;   r   Úget_temp_table_names)r2   r3   r5   ÚsynÚ	tmp_tables        r,   Ú(_ora_drop_all_schema_objects_post_tablesrT   k   sî   € à	�‰‹ð <˜Ø—<‘<×-Ñ-¨d°D¸$ÀÓEò 	HˆCØ× Ñ  =°°^Ñ1DÐ0EÐ!FÕGð	Hð —<‘<×-Ñ-Ø�#—/‘/ 4¨ó
ò 	ˆCð × Ñ Ø §¡Ð0°°#°nÑ2EÐ1FÐGõð	ô ! ›×;Ñ;Ó=ò 	<ˆIØ× Ñ  ;¨y¨kÐ!:Õ;ñ	<÷<÷ <ñ <ús   ‘B>CÃC"c                 ó¢   — |j                  «       5 }t        ||«       t        |d|z  «       t        |d|z  «       d d d «       y # 1 sw Y   y xY wr8   )r/   rF   r1   s       r,   Ú_oracle_drop_dbrV   |   sL   € à	�‰‹ð 1˜ô 	˜˜uÔ%Ü˜˜x¨%Ñ/Ô0Ü˜˜x¨%Ñ/Ô0÷1÷ 1ñ 1ús   ‘+AÁAc                 óˆ   — 	 t        |«       y # t        j                  $ r }t        j                  d|«       Y d }~y d }~ww xY w)Nz#purge recyclebin command failed: %s)rI   r   rB   r   rC   )r=   ÚdbÚclsrE   s       r,   Ú%_ora_stop_test_class_outside_fixturesrZ   ‰   s:   € ð@Ü˜"ÕøÜ×Ñò @Ü�‰Ð9¸3×?Ñ?ûð@ús   ‚ ŽA¡<¼Ac                 ó4  — | j                  «       5 }|€|j                  d«       n_|j                  dd|j                  j                  |«      i«      j	                  «       D ]!  \  }}}|j                  d|› d|› d|› d�«       Œ# d d d «       y # 1 sw Y   y xY w)Nzpurge recyclebinzWselect owner, object_name,type from dba_recyclebin where owner=:schema and type='TABLE'Úschemazpurge ú z."ú")r/   r0   rO   Údenormalize_nameÚall)r3   r\   r5   ÚownerÚobject_nameÚtype_s         r,   rI   rI   ‘   s¬   € Ø	�‰‹ð O˜Øˆ>ð × Ñ Ð!3Õ4ð .2×-AÑ-AðFà˜4Ÿ<™<×8Ñ8¸Ó@ÐAó.÷ ‰c‹eò	OÑ)��{ Eð
 ×$Ñ$ v¨e¨W°A°e°W¸B¸{¸mÈ1Ð%MÕNðO÷O÷ Oñ Oús   ‘A4BÂBc                 óv  — | j                   dk(  sJ ‚d„ }d }t        d«      D ]   }	  | j                  j                  |i |¤Žc S  |�t        d«      |‚y # | j                  j                  | j                  j
                  f$ r5}|} ||«      r%t        d«       t        j                  d«       Y d }~Œ�‚ d }~ww xY w)NÚ	cx_oraclec                 ó:   — dt        | «      v xs dt        | «      v S )NzDPY-6005z	ORA-12516)Ústr)rE   s    r,   Ú_is_couldnt_connectz0_connect_with_retry.<locals>._is_couldnt_connect¤   s   € ØœS ›XÐ%Ò@¨¼¸C»Ð)@Ð@r?   é   zOracle database reconnecting...é   z"connect failed after five attempts)
r(   ÚrangeÚloaded_dbapiÚconnectrB   ÚOperationalErrorr   ÚtimeÚsleepÚ	Exception)rO   Úconn_recÚcargsÚcparamsrh   Úerr_Ú_rE   s           r,   Ú_connect_with_retryrw   ¡   sÍ   € Ø�>‰>˜[Ò(Ð(Ð(òAð €DÜ�1‹Xò ˆð	Ø/�7×'Ñ'×/Ñ/°ÐB¸'ÑBÒBðð ÐÜÐ<Ó=À4ÐGð øð × Ñ ×.Ñ.Ø× Ñ ×1Ñ1ð
ò 
	ð ˆDÙ" 3Ô'ÜÐ AÔBÜ—
‘
˜1”Üàûð
	ús   ¦AÁ/B8Â*B3Â2B3Â3B8c                 ór   — ddl m} |j                  j                  dk(  r|j	                  |dt
        «       y y )Nr   ©Úeventre   Ú
do_connect)Ú rz   rO   r(   Úlistenrw   )r   ÚengineÚoptionsÚscoperz   s        r,   Ú%_oracle_post_configure_testing_enginer�   º   s-   € åà‡~�~×Ñ Ò+Ø�‰�V˜\Ô+>Õ?ð ,r?   c                 ó@   — ddl m} |j                  |d«      d„ «       }y )Nr   ry   Úcheckinc                 óH   — 	 | j                   }d| _         || _         y #  Y y xY w)Nr   )Ústmtcachesize)Údbapi_connectionÚconnection_recordÚscs      r,   rƒ   z._oracle_post_configure_engine.<locals>.checkinÇ   s0   € ð 	0Ø!×/Ñ/ˆBð
 ./ÐÔ*Ø-/ÐÕ*øð	áús   ‚ �!)r|   rz   Úlistens_for)r   r~   Úfollower_identrz   rƒ   s        r,   Ú_oracle_post_configure_enginer‹   Â   s&   € õ à
×Ñ�v˜yÓ)ñ0ó *ñ0r?   c                 óÈ  — t        j                  d| «       t        | «      }|j                  «       5 }t        j                  ddj	                  |«      «       |j                  d«      }|D �ch c]  \  }|j                  «       ’Œ }}t        «       }|D ]r  }|j                  d«      s|j                  d«      rŒ&||v sŒ+|j                  |«       d|z  |v r|j                  d|z  «       d|z  |v sŒ_|j                  d|z  «       Œt d	x}	}
t        |d
«      D ]  \  }
}t        ||«      sŒ|	d
z  }	Œ t        j                  d|	|
«       d d d «       y c c}w # 1 sw Y   y xY w)Nzdb reaper connecting to %rzidentifiers in file: %sz, z‰select u.username from all_users u where username like 'TEST_%' and not exists (select username from v$session where username=u.username)Ú_ts1Ú_ts2r9   r:   r   é   z-Dropped %d out of %d stale databases detected)r   rA   r   r/   Újoinr0   Úlowerr#   ÚendswithÚaddÚ	enumeraterF   )r   Úidentsr3   r5   Úto_reapÚusernameÚ	all_namesÚto_dropÚnameÚdroppedÚtotals              r,   Ú_reap_oracle_dbsr�   á   s[  € ä‡H�HÐ)¨3Ô/Ü
˜Ó
€CØ	�‰‹ð 
˜Ü�‰Ð*¨D¯I©I°fÓ,=Ô>à×&Ñ&ð8ó
ˆð
 :AÖA©+¨8�X—^‘^Õ%ÐAˆ	ÐAÜ“%ˆØò 	1ˆDØ�}‰}˜VÔ$¨¯©°fÔ(=ØØ˜’Ø—‘˜DÔ!Ø˜d‘? iÑ/Ø—K‘K ¨4¡Ô0Ø˜d‘? iÒ/Ø—K‘K ¨4¡Õ0ð	1ð Ðˆ�%Ü(¨°!Ó4ò 	‰OˆE�8Ü  hÕ/Ø˜1‘‘ð	ô 	�‰Ø;¸WÀeô	
÷1
ð 
ùò B÷
ð 
ús/   ²;EÁ-EÂ8EÂ?3EÃ38EÄ,EÅEÅE!c                 óR   — t        j                  | «      } | j                  |d¬«      S )NÚxe)r—   Úpassword)Úsa_urlÚmake_urlr#   )r   r4   s     r,   Ú_oracle_follower_url_from_mainr£     s#   € ä
�/‰/˜#Ó
€CØ�7‰7˜E¨Dˆ7Ó1Ð1r?   c                 ó   — dgddœS )NzGLOBAL TEMPORARYzPRESERVE ROWS)ÚprefixesÚoracle_on_commit© rJ   s     r,   Ú_oracle_temp_table_keyword_argsr¨     s   € ð (Ð(Ø+ñð r?   c                 ól   — |j                  «       }|j                  d|z  «       |j                  «        y )Nz#ALTER SESSION SET CURRENT_SCHEMA=%s)ÚcursorÚexecuteÚclose)r2   r†   Úschema_namerª   s       r,   Ú(_oracle_set_default_schema_on_connectionr®     s-   € ð ×$Ñ$Ó&€FØ
‡N�NÐ8¸;ÑFÔGØ
‡L�L…Nr?   c                 óv   — |j                   r-t        j                  | «      j                  «       dk(  rd|d<   yyy)zCSet database options (db_opts) for a test database that we created.r   TÚ
thick_modeN)Úoracledb_thick_moder¡   r¢   Úget_driver_name)Údb_urlÚdb_optsr   s      r,   Ú_update_db_optsrµ     s<   € ð 	×#Ò#Ü�O‰O˜FÓ#×3Ñ3Ó5¸ÒCà $ˆ�Òð Dð 	$r?   rH   ),ro   r|   r   r   r   r~   r   r¡   Útesting.provisionr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Útesting.warningsr   Úfor_dbr-   r6   r>   rF   rK   rT   rV   rZ   rI   rw   r�   r‹   r�   r£   r¨   r®   rµ   r§   r?   r,   ú<module>r¹      s5  ðó å Ý Ý Ý #Ý 3Ý *Ý DÝ CÝ (Ý 7Ý 4Ý $Ý 6Ý >Ý -Ý AÝ AÝ 8Ý /Ý /ð Ð×Ñ˜HÓ%ñó &ðð@ €×Ñ�(ÓñEó ðEð$ Ð×Ñ˜8Ó$ñ,ó %ð,ò
ð +Ð#×*Ñ*¨8Ó4ñ,ó 5ð,ð
 ,Ð$×+Ñ+¨HÓ5ñ<ó 6ð<ð  €‡��Óñ	1ó ð	1ð )Ð!×(Ñ(¨Ó2ñ@ó 3ð@óOò Hð2 &Ð×%Ñ% hÓ/ñ@ó 0ð@ð Ð×Ñ˜hÓ'ñ0ó (ð0ð< €×Ñ�XÓñ
ó ð
ð@ Ð×Ñ˜xÓ(ñ2ó )ð2ð
  Ð×Ñ Ó)ñó *ðð )Ð!×(Ñ(¨Ó2ñó 3ðð €×Ñ�xÓ ñ%ó !ñ%r?   