ó
    øÞ j+  ã                   óî  • 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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SKJr  SSKJr  SSKJr  SSKJr  SSKJr  \R6                  " S5      S 5       r\
R6                  " S5      S 5       r\	R6                  " S5      S 5       rS r\R6                  " S5      S 5       r \R6                  " S5      S 5       r!\R6                  " S5      S 5       r"\R6                  " S5      S  5       r#S+S! jr$\R6                  " S5      S" 5       r%S# r&\R6                  " S5      S$ 5       r'\R6                  " S5      S% 5       r(\R6                  " S5      S& 5       r)\R6                  " S5      S' 5       r*\R6                  " S5      S( 5       r+\R6                  " S5      S) 5       r,\R6                  " S5      S* 5       r-g),é    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)Úis_preferred_driver)Ú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                 ó  • U R                  5       nU R                  U< SU< 3S9nUS;   a  UR                  SS/5      nOUR                  SS/5      n UR	                  5         U$ ! [
        R                   a     g f = f)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        Ú^/var/www/html/gaurav/venv/lib/python3.13/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                 óê  • UR                  5        nUR                  SU-  5        UR                  SU-  5        UR                  SU-  5        UR                  SU< 35        UR                  SU-  5        UR                  SU-  5        UR                  SU-  5        UR                  SU-  5        UR                  S	U-  5        UR                  S
U-  5        S S S 5        g ! , (       d  f       g = f)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_dbr7   C   sÞ   € ð
 
�‰Œ˜Ø×ÑÐ>ÀÑ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÷ 
�Žús   ‘C
C$Ã$
C2c                 ó,   • SU-  U l         SU-  U l        g ©Nú%s_ts1ú%s_ts2)Útest_schemaÚtest_schema_2)Úconfigr5   s     r-   Ú_oracle_configure_followerr?   V   s   € à! EÑ)€FÔØ# eÑ+€FÕó    c                 óÌ   •  U R                  SU-  5        [        R                  " SU5        g! [        R                   a!  n[        R
                  " SU5         S nAgS nAff = f)Nzdrop user %s cascadezReaped db: %sTzcouldn't drop db: %sF)r1   r   Úinfor   ÚDatabaseErrorÚwarning)r6   ÚdbnameÚerrs      r-   Ú_ora_drop_ignorerG   \   sT   € ðØ×ÑÐ3°fÑ<Ô=Ü�Š� &Ô)ØøÜ×Ñó Ü�ŠÐ*¨CÔ0Üûðús   ‚+. ®A#ÁAÁA#c                 óD   • [        U5        [        XR                  5        g ©N)Ú_purge_recyclebinr<   ©r3   r4   s     r-   Ú'_ora_drop_all_schema_objects_pre_tablesrL   f   s   € ä�cÔÜ�cŸ?™?Õ+r@   c           	      óÜ  • UR                  5        nUR                  R                  US S S 5       H  nUR                  SUS    35        M     UR                  R                  X R                  S S 5       H'  nUR                  SU R                   SUS    35        M)     [        U5      R                  5        H  nUR                  SU 35        M     S S S 5        g ! , (       d  f       g = f)Nzdrop synonym Úsynonym_nameÚ.zdrop table )r0   ÚdialectÚ_get_synonymsr1   r<   r   Úget_temp_table_names)r3   r4   r6   ÚsynÚ	tmp_tables        r-   Ú(_ora_drop_all_schema_objects_post_tablesrU   l   sÑ   € à	�‰Œ˜Ø—<‘<×-Ñ-¨d°D¸$ÀÖEˆCØ× Ñ  =°°^Ñ1DÐ0EÐ!FÖGñ Fð —<‘<×-Ñ-Ø—/‘/ 4¨ö
ˆCð × Ñ Ø §¡Ð0°°#°nÑ2EÐ1FÐGöñ
ô ! ›×;Ñ;Ö=ˆIØ× Ñ  ;¨y¨kÐ!:Ö;ñ >÷ 
�Žús   ‘CCÃ
C+c                 óª   • UR                  5        n[        X25        [        USU-  5        [        USU-  5        S S S 5        g ! , (       d  f       g = fr9   )r0   rG   r2   s       r-   Ú_oracle_drop_dbrW   }   s?   € à	�‰Œ˜ô 	˜Ô%Ü˜˜x¨%Ñ/Ô0Ü˜˜x¨%Ñ/Ô0÷ 
�Žús   ‘*AÁ
Ac                 óŒ   •  [        U5        g ! [        R                   a!  n[        R                  " SU5         S nAg S nAff = f)Nz#purge recyclebin command failed: %s)rJ   r   rC   r   rD   )r>   ÚdbÚclsrF   s       r-   Ú%_ora_stop_test_class_outside_fixturesr[   Š   s:   € ð@Ü˜"ÕøÜ×Ñó @Ü�ŠÐ9¸3×?Ñ?ûð@ús   ‚ ŽA¢>¾Ac                 óB  • U R                  5        nUc  UR                  S5        O`UR                  SSUR                  R                  U5      05      R	                  5        H!  u  p4nUR                  SU SU SU S35        M#     S S S 5        g ! , (       d  f       g = f)Nzpurge recyclebinzWselect owner, object_name,type from dba_recyclebin where owner=:schema and type='TABLE'Úschemazpurge Ú z."Ú")r0   r1   rP   Údenormalize_nameÚall)r4   r]   r6   ÚownerÚobject_nameÚtype_s         r-   rJ   rJ   ’   s™   € Ø	�‰Œ˜Ø‰>ð × Ñ Ð!3Õ4ð .2×-AÑ-AðFà˜4Ÿ<™<×8Ñ8¸Ó@ÐAó.÷ ‰c‹eò	.Ñ)� Eð
 ×$Ñ$ v¨e¨W°A°e°W¸B¸{¸mÈ1Ð%MÖNñ.÷ 
�Žús   ‘A6BÂ
Bc                 óx   • UR                   R                  S:H  =(       a    UR                   R                  (       + $ )zpestablish oracledb as the preferred driver to use for tests, even
though cx_Oracle is still the "default" driverr   )rP   r)   Úis_async)r3   Úengines     r-   Ú_oracle_is_preferred_driverrh   ¢   s+   € ð
 �>‰>× Ñ  JÑ.×N°v·~±~×7NÑ7NÔ3NÐNr@   c                 óŒ  • U R                   S:X  d   eS nS n[        S5       H   n U R                  R                  " U0 UD6s  $    Ub  [        S5      Ueg ! U R                  R                  U R                  R
                  4 a<  nUnU" U5      (       a'  [        S5        [        R                  " S5         S nAMš  e S nAff = f)NÚ	cx_oraclec                 óH   • S[        U 5      ;   =(       d    S[        U 5      ;   $ )NzDPY-6005z	ORA-12516)Ústr)rF   s    r-   Ú_is_couldnt_connectÚ0_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ÚconnectrC   ÚOperationalErrorr   ÚtimeÚsleepÚ	Exception)rP   Úconn_recÚcargsÚcparamsrm   Úerr_Ú_rF   s           r-   Ú_connect_with_retryr}   ª   sÉ   € Ø�>‰>˜[Ó(Ð(Ð(òAð €DÜ�1ŽXˆð	Ø×'Ñ'×/Ò/°ÐB¸'ÑBÒBñ ð ÑÜÐ<Ó=À4ÐGð øð × Ñ ×.Ñ.Ø× Ñ ×1Ñ1ð
ó 
	ð ˆDÙ" 3×'Ñ'ÜÐ AÔBÜ—
’
˜1”Ýàûð
	ús   §AÁ0CÂ0B>Â=B>Â>Cc                 ót   • SSK Jn  UR                  R                  S:X  a  UR	                  US[
        5        g g )Nr   ©Úeventrj   Ú
do_connect)Ú r€   rP   r)   Úlistenr}   )r   rg   ÚoptionsÚscoper€   s        r-   Ú%_oracle_post_configure_testing_enginer†   Ã   s-   € åà‡~�~×Ñ Ó+Ø�‰�V˜\Ô+>Õ?ð ,r@   c                 ó@   • SSK Jn  UR                  US5      S 5       ng )Nr   r   Úcheckinc                 óF   •  U R                   nSU l         X l         g !    g = f)Nr   )Ústmtcachesize)Údbapi_connectionÚconnection_recordÚscs      r-   rˆ   Ú._oracle_post_configure_engine.<locals>.checkinÐ   s-   € ð 	0Ø!×/Ñ/ˆBð
 ./ÐÔ*Ø-/Õ*øð	áús   ‚ œ )r‚   r€   Úlistens_for)r   rg   Úfollower_identr€   rˆ   s        r-   Ú_oracle_post_configure_enginer‘   Ë   s&   € õ à
×Ñ�v˜yÓ)ñ0ó *ñ0r@   c                 ó
  • [         R                  " SU 5        [        U 5      nUR                  5        n[         R                  " SSR	                  U5      5        UR                  S5      nU Vs1 sH  u  oUR                  5       iM     nn[        5       nU H…  nUR                  S5      (       d  UR                  S5      (       a  M1  X�;   d  M8  UR                  U5        SU-  U;   a  UR                  SU-  5        SU-  U;   d  Mq  UR                  SU-  5        M‡     S	=pš[        US
5       H  u  p¥[        X55      (       d  M  U	S
-  n	M     [         R                  " SXš5        S S S 5        g s  snf ! , (       d  f       g = f)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Ú_ts2r:   r;   r   é   z-Dropped %d out of %d stale databases detected)r   rB   r   r0   Újoinr1   Úlowerr$   ÚendswithÚaddÚ	enumeraterG   )r   Úidentsr4   r6   Úto_reapÚusernameÚ	all_namesÚto_dropÚnameÚdroppedÚtotals              r-   Ú_reap_oracle_dbsr£   ê   sD  € ä‡H‚HÐ)¨3Ô/Ü
˜Ó
€CØ	�‰Œ˜Ü�ŠÐ*¨D¯I©I°fÓ,=Ô>à×&Ñ&ð8ó
ˆñ
 :AÓA¹©+¨8—^‘^Ö%¹ˆ	ÐAÜ“%ˆÛˆDØ�}‰}˜V×$Ñ$¨¯©°f×(=Ñ(=ÙØ•Ø—‘˜DÔ!Ø˜d‘? iÓ/Ø—K‘K ¨4¡Ô0Ø˜d‘? iÕ/Ø—K‘K ¨4¡Ö0ñ ð ÐˆÜ(¨°!Ö4‰OˆEÜ ×/Ó/Ø˜1‘’ñ  5ô 	�ŠØ;¸Wô	
÷1 
ˆùò B÷ 
�ús0   ³<E4Á/E/Â	AE4Ã5E4Ä:E4Å E4Å/E4Å4
Fc                 óN   • [         R                  " U 5      n U R                  USS9$ )NÚxe)r�   Úpassword)Úsa_urlÚmake_urlr$   )r   r5   s     r-   Ú_oracle_follower_url_from_mainr©     s#   € ä
�/Š/˜#Ó
€CØ�7‰7˜E¨Dˆ7Ð1Ð1r@   c                 ó   • S/SS.$ )NzGLOBAL TEMPORARYzPRESERVE ROWS)ÚprefixesÚoracle_on_commit© rK   s     r-   Ú_oracle_temp_table_keyword_argsr®     s   € ð (Ð(Ø+ñð r@   c                 ól   • UR                  5       nUR                  SU-  5        UR                  5         g )Nz#ALTER SESSION SET CURRENT_SCHEMA=%s)ÚcursorÚexecuteÚclose)r3   r‹   Úschema_namer°   s       r-   Ú(_oracle_set_default_schema_on_connectionr´     s-   € ð ×$Ñ$Ó&€FØ
‡N�NÐ8¸;ÑFÔGØ
‡L�L…Nr@   c                 ó„   • UR                   (       a/  [        R                  " U 5      R                  5       S:X  a  SUS'   ggg)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@   rI   ).ru   r‚   r   r   r   rg   r   r§   Útesting.provisionr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Útesting.warningsr   Úfor_dbr.   r7   r?   rG   rL   rU   rW   r[   rJ   rh   r}   r†   r‘   r£   r©   r®   r´   r»   r­   r@   r-   Ú<module>r¿      s3  ðó å Ý Ý Ý #Ý 3Ý *Ý DÝ CÝ (Ý 7Ý 4Ý 4Ý $Ý 6Ý >Ý -Ý AÝ AÝ 8Ý /Ý /ð ×Ò˜HÓ%ñó &ðð@ ×Ò�(ÓñEó ðEð$ ×Ò˜8Ó$ñ,ó %ð,ò
ð $×*Ò*¨8Ó4ñ,ó 5ð,ð
 %×+Ò+¨HÓ5ñ<ó 6ð<ð  	‡‚�Óñ	1ó ð	1ð "×(Ò(¨Ó2ñ@ó 3ð@ôOð  ×Ò˜HÓ%ñOó &ðOòHð2 ×%Ò% hÓ/ñ@ó 0ð@ð ×Ò˜hÓ'ñ0ó (ð0ð< ×Ò�XÓñ
ó ð
ð@ ×Ò˜xÓ(ñ2ó )ð2ð
 ×Ò Ó)ñó *ðð "×(Ò(¨Ó2ñó 3ðð ×Ò�xÓ ñ%ó !ñ%r@   