§
    ¤”j¹  ã                   ón   — 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dS )é    N)ÚPath)ÚNotSupportedError)ÚBaseDatabaseCreationc                   óR   — e Zd Zed„ ¦   «         Zd„ Zdd„Zd„ Zdd„Zd„ Z	d„ Z
d	„ Zd
S )ÚDatabaseCreationc                 óB   — t          | t          ¦  «         o	| dk    pd| v S )Nú:memory:zmode=memory)Ú
isinstancer   )Údatabase_names    úr/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/django/db/backends/sqlite3/creation.pyÚis_in_memory_dbz DatabaseCreation.is_in_memory_db   s.   € å˜m­TÑ2Ô2Ð2ð 
Ø˜ZÒ'ÐI¨=¸MÐ+Ið	
ó    c                 ód   — | j         j        d         d         p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   s=   € Ø!œ_Ô:¸6ÔBÀ6ÔJÐXÈjÐØ Ò+Ð+Ø>ÀÄÔAVÑVÐVØ!Ð!r   Fc                 ó@  — |                       ¦   «         }|r|S |                      |¦  «        sð|dk    r-|                      d|                      ||¦  «        ›d�¦  «         t	          j        |t          j        ¦  «        rž|st          d|z  ¦  «        }|s|dk    rY	 t	          j        |¦  «         nl# t          $ r6}|                      d|z  ¦  «         t          j        d¦  «         Y d }~n1d }~ww xY w|                      d¦  «         t          j        d¦  «         |S )	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Ô5Ðàð 	&Ø%Ð%Ø×#Ò#Ð$6Ñ7Ô7ð 	 à˜AŠ~ˆ~Ø—’�à×5Ò5°iÐASÑTÔTÐTÐTðWñô ð õ ŒyÐ+­R¬WÑ5Ô5ð  Ø"ð Ý#ð=Ø?QñRñô �Gð ð   '¨UÒ"2Ð"2ð$Ýœ	Ð"4Ñ5Ô5Ð5Ð5øÝ$ð $ð $ð $ØŸšÐ!RÐUVÑ!VÑWÔWÐWÝœ ™œ˜˜˜˜˜˜øøøøð$øøøð —H’HÐ/Ñ0Ô0Ð0Ý”H˜Q‘K”K�KØ!Ð!s   ÂB2 Â2
C2Â<,C-Ã-C2c                 óR  — | j         j        }|d         pd}|                      |¦  «        s1t          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Úspawnú.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Ô9ð 	KÝœ×(Ò(Ð)=Ñ>Ô>‰IˆD�#ØJÐ(ÐJ¨&°TÐ2IÐ2I¸FÐ2IÀCÐ2IÐ2IÐJÐJÐJå&Ô7Ñ9Ô9ˆØ˜6Ò!Ð!Ø%Ð%Ø˜7Ò"Ð"ðØ$ðà˜4œ?Ô0ÐCÐC°6ÐCÐCÐCðð ð õ  ØK¨ÐKÐKÐKñ
ô 
ð 	
r   c                 óf  — | j         j        d         }|                      |¦  «        d         }|                      |¦  «        �st	          j        |t          j        ¦  «        r�|rd S |dk    r-|                      d|                      ||¦  «        ›d�¦  «         	 t	          j	        |¦  «         nC# t          $ r6}|                      d|z  ¦  «         t          j        d¦  «         Y d }~nd }~ww xY w	 t          j        ||¦  «         d S # t          $ r7}|                      d|z  ¦  «         t          j        d¦  «         Y d }~d S d }~ww xY wt          j        ¦   «         dk    rKt#          j        |d	¬
¦  «        }| j         j                              |¦  «         |                     ¦   «          d S d S )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Úcopyr6   r7   Úsqlite3ÚconnectÚbackupÚclose)r   r8   r)   r+   r:   Útarget_database_namer-   Ú	ondisk_dbs           r   Ú_clone_test_dbzDatabaseCreation._clone_test_dbJ   sê  € Ø#œÔ<¸VÔDÐØ#×>Ò>¸vÑFÔFÀvÔNÐØ×#Ò#Ð$8Ñ9Ô9ñ 	åŒyÐ-­r¬wÑ7Ô7ð  Øð Ø�FØ ’>�>Ø—H’H�Hð !×:Ò:Ø )Ð+?ñô ð ð ðñô ð ð Ý”IÐ2Ñ3Ô3Ð3Ð3øÝ ð  ð  ð  Ø—H’HÐNÐQRÑRÑSÔSÐSÝ”H˜Q‘K”K�K�K�K�K�K�Køøøøð øøøðÝ”Ð0Ð2FÑGÔGÐGÐGÐGøÝð ð ð Ø—’ÐEÈÑIÑJÔJÐJÝ”˜‘”�������øøøøðøøøõ Ô-Ñ/Ô/°7Ò:Ð:ÝœÐ(<À$ÐGÑGÔGˆIØŒOÔ&×-Ò-¨iÑ8Ô8Ð8Ø�OŠOÑÔÐÐÐð ;Ð:s0   ÂB0 Â0
C0Â:,C+Ã+C0Ã4D Ä
EÄ,EÅEc                 ód   — |r+|                       |¦  «        st          j        |¦  «         d S d S d S )N)r   r!   r%   )r   r   r)   s      r   Ú_destroy_test_dbz!DatabaseCreation._destroy_test_dbm   sK   € Øð 	* d×&:Ò&:Ð;MÑ&NÔ&Nð 	*åŒIÐ(Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*ð 	*ð 	*r   c                 ó  — |                       ¦   «         }| j        j        d         g}|                      |¦  «        r |                     | j        j        ¦  «         n|                     |¦  «         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   sx   € ð "×3Ò3Ñ5Ô5ÐØŒÔ,¨VÔ4Ð5ˆØ×ÒÐ 2Ñ3Ô3ð 	+Ø�JŠJ�t”Ô,Ñ-Ô-Ð-Ð-à�JŠJÐ)Ñ*Ô*Ð*Ý�S‰zŒzÐr   c                 ó  — |                       |¦  «        }t          j        ¦   «         }|dk    r:| j        j                             |¦  «         | j                             ¦   «          d S |dk    �r| j        j        }d|› d|› d�}| j        j         	                    d|› d|› d�d¬	¦  «        }t          j	        |d¬	¦  «        }|                     |¦  «         |                     ¦   «          | j        j                             |¦  «         || j        j        d
<   | j         	                    ¦   «          |                     ¦   «          t          j                             d¦  «        dk    r|                      ¦   «          d S d S d S )Nr1   r2   zfile:memorydb_r0   z?mode=memory&cache=sharedzfile:r3   Tr@   r   ÚRUNNING_DJANGOS_TEST_SUITEÚtrue)r>   r6   r7   r   r   ÚupdaterG   r   ÚDatabaserE   rD   rF   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‚   s—  € Ø×7Ò7¸
ÑCÔCˆõ 'Ô7Ñ9Ô9ˆØ˜6Ò!Ð!àŒOÔ)×0Ò0°Ñ?Ô?Ð?ØŒO×!Ò!Ñ#Ô#Ð#Ð#Ð#Ø˜WÒ$Ñ$Ø”OÔ)ˆEàN ÐNÐN¨ÐNÐNÐNð ð œÔ0×8Ò8Ø4˜Ð4Ð4 
Ð4Ð4Ð4¸$ð 9ñ ô ˆIõ  œ¨¸DÐAÑAÔAˆIØ×Ò˜YÑ'Ô'Ð'Ø�OŠOÑÔÐàŒOÔ)×0Ò0°Ñ?Ô?Ð?Ø4BˆDŒOÔ)¨&Ñ1ð ŒO×#Ò#Ñ%Ô%Ð%Ø�OŠOÑÔÐÝŒz�~Š~Ð:Ñ;Ô;¸vÒEÐEØ×5Ò5Ñ7Ô7Ð7Ð7Ð7ð' %Ð$ð$ FÐEr   N)F)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r.   r>   rJ   rL   rQ   r^   © r   r   r   r      s¡   € € € € € Øð
ð 
ñ „\ð
ð
"ð "ð "ð"ð "ð "ð "ð:
ð 
ð 
ð(!ð !ð !ð !ðF*ð *ð *ð
ð ð ð 8ð 8ð 8ð 8ð 8r   r   )r6   r!   rB   rD   r'   Úpathlibr   Ú	django.dbr   Ú django.db.backends.base.creationr   r   rc   r   r   ú<module>rg      sª   ðØ Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø AÐ AÐ AÐ AÐ AÐ AðS8ð S8ð S8ð S8ð S8Ð+ñ S8ô S8ð S8ð S8ð S8r   