Ë
    ¹ûàgÁ  ã                   óf   — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
  G d„ de
«      Zy)é    N)ÚPath)ÚNotSupportedError)ÚBaseDatabaseCreationc                   óJ   — e Zd Zed„ «       Zd„ Zd
d„Zd„ Zd
d„Zd„ Z	d„ Z
d„ Zy	)ÚDatabaseCreationc                 ó>   — t        | t        «       xr | dk(  xs d| v S )Nú:memory:zmode=memory)Ú
isinstancer   )Údatabase_names    úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/creation.pyÚis_in_memory_dbz DatabaseCreation.is_in_memory_db   s+   € ä˜m¬TÓ2Ð2ò 
Ø˜ZÑ'ÒI¨=¸MÐ+Ið	
ó    c                 ó‚   — | j                   j                  d   d   xs d}|dk(  rd| j                   j                  z  S |S )NÚTESTÚNAMEr	   z)file:memorydb_%s?mode=memory&cache=shared)Ú
connectionÚsettings_dictÚalias)ÚselfÚtest_database_names     r   Ú_get_test_db_namez"DatabaseCreation._get_test_db_name   sD   € Ø!Ÿ_™_×:Ñ:¸6ÑBÀ6ÑJÒXÈjÐØ Ò+Ø>ÀÇÁ×AVÑAVÑVÐVØ!Ð!r   c                 ó  — | j                  «       }|r|S | j                  |«      s£|dk\  r%| j                  d| j                  ||«      ›d�«       t	        j
                  |t        j                  «      rU|st        d|z  «      }|sdk(  r	 t	        j                  |«       |S | j                  d«       t        j                  d«       |S # t        $ r4}| j                  d|z  «       t        j                  d«       Y d }~|S d }~ww xY w)	Né   ú'Destroying old test database for alias ú...zXType 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: Úyesú/Got an error deleting the old test database: %sé   zTests cancelled.)r   r   ÚlogÚ_get_database_display_strÚosÚaccessÚF_OKÚinputÚremoveÚ	ExceptionÚsysÚexit)r   Ú	verbosityÚautoclobberÚkeepdbr   ÚconfirmÚes          r   Ú_create_test_dbz DatabaseCreation._create_test_db   s  € Ø!×3Ñ3Ó5ÐáØ%Ð%Ø×#Ñ#Ð$6Ô7à˜AŠ~Ø—’à×5Ñ5°iÐASÕTðWôô �y‰yÐ+¬R¯W©WÔ5Ù"Ü#ð=Ø?QñRó�Gñ  '¨UÒ"2ð$ÜŸ	™	Ð"4Ô5ð "Ð!ð —H‘HÐ/Ô0Ü—H‘H˜Q”KØ!Ð!øô %ò $ØŸ™Ð!RÐUVÑ!VÔWÜŸ™ Ÿ˜ð "Ð!ûð$ús   ÂC Ã	DÃ)DÄDc                 óf  — | j                   j                  }|d   xs d}| j                  |«      s1t        j                  j                  |«      \  }}i |¥d|› d|› |› �i¥S t        j                  «       }|dk(  r|S |dk(  r"i |¥d| j                   j                  › d|› d�i¥S t        d|›d�«      ‚)	Nr   r	   Ú_ÚforkÚspawnz.sqlite3zCloning with start method z is not supported.)
r   r   r   r!   ÚpathÚsplitextÚmultiprocessingÚget_start_methodr   r   )r   ÚsuffixÚorig_settings_dictÚsource_database_nameÚrootÚextÚstart_methods          r   Úget_test_db_clone_settingsz+DatabaseCreation.get_test_db_clone_settings6   sá   € Ø!Ÿ_™_×:Ñ:ÐØ1°&Ñ9ÒG¸ZÐà×#Ñ#Ð$8Ô9ÜŸ™×(Ñ(Ð)=Ó>‰IˆD�#ØJÐ(ÐJ¨&°T°F¸!¸F¸8ÀCÀ5Ð2IÑJÐJä&×7Ñ7Ó9ˆØ˜6Ò!Ø%Ð%Ø˜7Ò"ðØ$ðà˜4Ÿ?™?×0Ñ0Ð1°°6°(¸(ÐCñð ô  Ø(¨Ð(8Ð8JÐKó
ð 	
r   c                 óB  — | j                   j                  d   }| j                  |«      d   }| j                  |«      st	        j
                  |t        j                  «      rC|ry |dk\  r%| j                  d| j                  ||«      ›d�«       	 t	        j                  |«       	 t        j                  ||«       y t        j                   «       dk(  rMt#        j$                  |d	¬
«      }| j                   j                   j'                  |«       |j)                  «        y y # t        $ r3}| j                  d|z  «       t        j                  d«       Y d }~Œ´d }~ww xY w# t        $ r3}| j                  d|z  «       t        j                  d«       Y d }~y d }~ww xY w)Nr   r   r   r   r   r   z*Got an error cloning the test database: %sr2   T©Úuri)r   r   r=   r   r!   r"   r#   r   r    r%   r&   r'   r(   ÚshutilÚcopyr5   r6   Úsqlite3ÚconnectÚbackupÚclose)r   r7   r)   r+   r9   Útarget_database_namer-   Ú	ondisk_dbs           r   Ú_clone_test_dbzDatabaseCreation._clone_test_dbJ   sW  € Ø#Ÿ™×<Ñ<¸VÑDÐØ#×>Ñ>¸vÓFÀvÑNÐØ×#Ñ#Ð$8Ô9ä�y‰yÐ-¬r¯w©wÔ7ÙØØ ’>Ø—H’Hð !×:Ñ:Ø )Ð+?õðôð Ü—I‘IÐ2Ô3ðÜ—‘Ð0Ð2FÕGô ×-Ñ-Ó/°7Ò:ÜŸ™Ð(<À$ÔGˆIØ�O‰O×&Ñ&×-Ñ-¨iÔ8Ø�O‰OÕð ;øô !ò  Ø—H‘HÐNÐQRÑRÔSÜ—H‘H˜Q—K‘Kûð ûô
 ò Ø—‘ÐEÈÑIÔJÜ—‘˜—‘ûðús0   ÂD# Â'E" Ä#	EÄ,)EÅEÅ"	FÅ+)FÆFc                 óX   — |r(| j                  |«      st        j                  |«       y y y )N)r   r!   r%   )r   r   r)   s      r   Ú_destroy_test_dbz!DatabaseCreation._destroy_test_dbm   s)   € Ù d×&:Ñ&:Ð;MÔ&Nä�I‰IÐ(Õ)ð 'OÐr   c                 ó  — | j                  «       }| j                  j                  d   g}| j                  |«      r0|j	                  | j                  j
                  «       t        |«      S |j	                  |«       t        |«      S )a   
        Return a tuple that uniquely identifies a test database.

        This takes into account the special cases of ":memory:" and "" for
        SQLite since the databases will be distinct despite having the same
        TEST NAME. See https://www.sqlite.org/inmemorydb.html
        r   )r   r   r   r   Úappendr   Útuple)r   r   Úsigs      r   Útest_db_signaturez"DatabaseCreation.test_db_signaturer   st   € ð "×3Ñ3Ó5ÐØ�‰×,Ñ,¨VÑ4Ð5ˆØ×ÑÐ 2Ô3Ø�J‰J�t—‘×,Ñ,Ô-ô �S‹zÐð �J‰JÐ)Ô*Ü�S‹zÐr   c                 ó&  — | j                  |«      }t        j                  «       }|dk(  r@| j                  j                  j                  |«       | j                  j                  «        y |dk(  �r!| j                  j                  }d|› d|› d�}| j                  j                  j                  d|› d|› d�d¬	«      }t        j                  |d¬	«      }|j                  |«       |j                  «        | j                  j                  j                  |«       || j                  j                  d
<   | j                  j                  «        |j                  «        t        j                  j                  d«      dk(  r| j                  «        y y y )Nr1   r2   zfile:memorydb_r0   z?mode=memory&cache=sharedzfile:z.sqlite3?mode=roTr?   r   ÚRUNNING_DJANGOS_TEST_SUITEÚtrue)r=   r5   r6   r   r   ÚupdaterF   r   ÚDatabaserD   rC   rE   r!   ÚenvironÚgetÚ mark_expected_failures_and_skips)r   Ú
_worker_idr   r<   r   Úconnection_strÚ	source_dbÚ	target_dbs           r   Úsetup_worker_connectionz(DatabaseCreation.setup_worker_connection‚   sV  € Ø×7Ñ7¸
ÓCˆô '×7Ñ7Ó9ˆØ˜6Ò!à�O‰O×)Ñ)×0Ñ0°Ô?Ø�O‰O×!Ñ!Õ#Ø˜WÓ$Ø—O‘O×)Ñ)ˆEà    q¨¨Ð4MÐNð ð Ÿ™×0Ñ0×8Ñ8Ø˜�w˜a 
˜|Ð+;Ð<À$ð 9ó ˆIô  Ÿ™¨¸DÔAˆIØ×Ñ˜YÔ'Ø�O‰OÔà�O‰O×)Ñ)×0Ñ0°Ô?Ø4BˆD�O‰O×)Ñ)¨&Ñ1ð �O‰O×#Ñ#Ô%Ø�O‰OÔÜ�z‰z�~‰~Ð:Ó;¸vÒEØ×5Ñ5Õ7ð Fð% %r   N)F)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r.   r=   rI   rK   rP   r]   © r   r   r   r      s8   „ Øñ
ó ð
ò
"ó"ò:
ó(!òF*ò
ó 8r   r   )r5   r!   rA   rC   r'   Úpathlibr   Ú	django.dbr   Ú django.db.backends.base.creationr   r   rb   r   r   ú<module>rf      s,   ðÛ Û 	Û Û Û 
Ý å 'Ý AôS8Ð+õ S8r   