+
    ‡)Ùjç=  ã                   ó‚   € ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt R	t ! R
 R4      tR# )é    N)ÚStringIO)Úapps)Úsettings)Úserializers)Úrouter)Úatomic)Úimport_stringÚtest_c                   ó´   a € ] tR t^t o RtR tR tR tRR ltR t	R t
R tR	 tR
 tRR ltRR ltRR ltR tRR ltRR ltR tR tR tR tR tRtV tR# )ÚBaseDatabaseCreationzg
Encapsulate backend-specific differences pertaining to creation and
destruction of the test database.
c                ó   € Wn         R # ©N©Ú
connection)Úselfr   s   &&ÚY/var/www/eggtrainer/venv/lib/python3.14/site-packages/django/db/backends/base/creation.pyÚ__init__ÚBaseDatabaseCreation.__init__   s   € Ø$Žó    c                ó6   € V P                   P                  4       # r   )r   Ú_nodb_cursor©r   s   &r   r   Ú!BaseDatabaseCreation._nodb_cursor   s   € Ø�‰×+Ñ+Ó-Ð-r   c                ón   € \         P                  P                  V\        P                  ,           4       R # r   )ÚsysÚstderrÚwriteÚosÚlinesep)r   Úmsgs   &&r   ÚlogÚBaseDatabaseCreation.log   s   € Ü�
‰
×Ñ˜œrŸz™zÕ)Ö*r   c                óÚ  € ^ RI Hp V P                  4       pV^8¼  d5   RpV'       d   RpV P                  V: RV P	                  W4      : R24       V P                  WV4       V P                  P                  4        V\        P                  V P                  P                  ,          R&   W`P                  P                  R&    V P                  P                  R,          R,          R	J dI   \        P                  p\        P                  ! 4        U	u/ uF  q™P                  R
bK  	  up	\        n        V! R\!        V^,
          ^ 4      R	V P                  P                  RR7       V P                  P                  R,          R,          R	J d   X\        n        T'       d    T P#                  4       T P                  n        T! RT P                  P                  R7       T P                  P'                  4        \(        P*                  P-                  R4      R8X  d   T P/                  4        T# u up	i   T P                  P                  R,          R,          R	J d   X\        n        i i ; i)z‹
Create a test database, prompting the user for confirmation if the
database already exists. Return the name of the test database created.
)Úcall_commandÚCreatingzUsing existingú test database for alias ú...ÚNAMEÚTESTÚMIGRATEFNÚmigrateT)Ú	verbosityÚinteractiveÚdatabaseÚ
run_syncdbÚcreatecachetable)r.   ÚRUNNING_DJANGOS_TEST_SUITEÚtrue)Údjango.core.managementr$   Ú_get_test_db_namer!   Ú_get_database_display_strÚ_create_test_dbr   Úcloser   Ú	DATABASESÚaliasÚsettings_dictÚMIGRATION_MODULESr   Úget_app_configsÚlabelÚmaxÚserialize_db_to_stringÚ_test_serialized_contentsÚensure_connectionr   ÚenvironÚgetÚ mark_expected_failures_and_skips)
r   r,   ÚautoclobberÚ	serializeÚkeepdbr$   Útest_database_nameÚactionÚold_migration_modulesÚapps
   &&&&&     r   Úcreate_test_dbÚ#BaseDatabaseCreation.create_test_db    sì  € õ 	8à!×3Ñ3Ó5Ðà˜Œ>ØˆFßØ)�à�H‰Hó Ø×2Ñ2°9ÖQðôð 	×Ñ˜Y°VÔ<à�‰×ÑÔØ<NŒ×Ñ˜4Ÿ?™?×0Ñ0Õ1°&Ñ9Ø0B�‰×%Ñ% fÑ-ð	CØ�‰×,Ñ,¨VÕ4°YÕ?À5ÓHä(0×(BÑ(BÐ%ä/3×/CÒ/CÔ/Eó.Ù/E¨—I‘I˜t’OÑ/Eñ.”Ô*ñ ØÜ˜i¨!�m¨QÓ/Ø!ØŸ™×.Ñ.Øõð �‰×,Ñ,¨VÕ4°YÕ?À5ÓHØ-B”Ô*÷ Ø8<×8SÑ8SÓ8UˆD�O‰OÔ5áÐ'°$·/±/×2GÑ2GÕHð 	�‰×)Ñ)Ô+ä�:‰:�>‰>Ð6Ó7¸6ÔAØ×1Ñ1Ô3à!Ð!ùòA.øð �‰×,Ñ,¨VÕ4°YÕ?À5ÓHØ-B”Õ*ð Iús   ÃAH4 ÄH/Ä)>H4 È/H4 È46I*c                óF   € VR,          V P                   P                  R&   R# )zh
Set this database up to be used in testing as a mirror of a primary
database whose settings are given.
r(   N)r   r:   )r   Úprimary_settings_dicts   &&r   Úset_as_test_mirrorÚ'BaseDatabaseCreation.set_as_test_mirrorj   s   € ð
 1FÀfÕ0Mˆ�‰×%Ñ% fÓ-r   c                ó‚   a € V 3R lp\        4       p\        P                  ! RV! 4       RVR7       VP                  4       # )z„
Serialize all data in the database into a JSON string.
Designed only for test runner usage; will not handle large
amounts of data.
c               3   ó"  <"  € ^ RI Hp  V ! SP                  4      p\        P                  ! 4        EFU  pVP
                  f   K  VP                  VP                  9   g   K1  VP                  \        P                  9  g   KR  VP                  4        Fï  pVP                  P                  SP                  4      '       g   K0  \        P                  ! SP                  P                   V4      '       g   Kc  VP"                  P%                  SP                  P                   4      P'                  VP                  P(                  P                  4      pVP*                  '       d   RMRpVP-                  VR7       Rj  x€L
  Kñ  	  EKX  	  R#  L5i)r   )ÚMigrationLoaderNiÐ  )Ú
chunk_size)Údjango.db.migrations.loaderrT   r   r   r<   Úmodels_moduler=   Úmigrated_appsÚnamer   ÚTEST_NON_SERIALIZED_APPSÚ
get_modelsÚ_metaÚcan_migrater   Úallow_migrate_modelr9   Ú_base_managerÚusingÚorder_byÚpkÚ_prefetch_related_lookupsÚiterator)rT   ÚloaderÚ
app_configÚmodelÚquerysetrU   r   s         €r   Úget_objectsÚ@BaseDatabaseCreation.serialize_db_to_string.<locals>.get_objectsy   s   øé € ÝCá$ T§_¡_Ó5ˆFÜ"×2Ò2×4�
à×,Ñ,Ô8Ø"×(Ñ(¨F×,@Ñ,@Ö@Ø"Ÿ™¬x×/PÑ/PÖPà!+×!6Ñ!6Ö!8˜Ø Ÿ;™;×2Ñ2Ø ŸO™O÷ô ä$×8Ò8¸¿¹×9NÑ9NÐPU×VÔVØ',×':Ñ':×'@Ñ'@Ø $§¡× 5Ñ 5ó(ç&™h u§{¡{§~¡~×':Ñ':Ó;ð %ð )1×(J×(JÐ(J¡ÐPTð 'ð (0×'8Ñ'8ÀJÐ'8Ó'O×OÒOô "9ó 5ñ  Pùs6   ƒ=FÁFÁ"FÂ;FÃ.FÃ6A-FÅ$FÅ=FÅ>FÚjsonN)ÚindentÚstream)r   r   rF   Úgetvalue)r   ri   Úouts   f  r   r?   Ú+BaseDatabaseCreation.serialize_db_to_stringq   s4   ø€ õ	Pô. ‹jˆÜ×Ò˜f¡k£m¸DÈÕMØ�|‰|‹~Ðr   c           
     óf  € \        V4      p\        4       p\        V P                  P                  R7      ;_uu_ 4        V P                  P                  4       ;_uu_ 4        \        P                  ! RWP                  P                  R7       FL  pVP                  4        VP                  VP                  P                  P                  P                  4       KN  	  RRR4       V P                  P                  VR7       RRR4       R#   + '       g   i     L6; i  + '       g   i     R# ; i)z_
Reload the database with data from a string generated by
the serialize_db_to_string() method.
)r`   rk   N)Útable_names)r   Úsetr   r   r9   Úconstraint_checks_disabledr   ÚdeserializeÚsaveÚaddÚobjectÚ	__class__r\   Údb_tableÚcheck_constraints)r   Údatarr   Úobjs   &&  r   Údeserialize_db_from_stringÚ/BaseDatabaseCreation.deserialize_db_from_string”   sÈ   € ô
 ˜‹~ˆÜ“eˆä˜$Ÿ/™/×/Ñ/×0Ö0ð —‘×;Ñ;×=Õ=Ü&×2Ò2Ø˜D¯©×(=Ñ(=÷�Cð —H‘H”JØ—O‘O C§J¡J×$8Ñ$8×$>Ñ$>×$GÑ$GÖHñ	÷ >ð �O‰O×-Ñ-¸+Ð-ÔF÷ 1Ñ0÷ >×=ú÷ 1×0Ð0ús$   ¾#DÁ!A=D	Ã$DÄDÄDÄD0	c                ód   € RV P                   P                  : RV^8¼  d   RV,          : 2# R: 2# )zB
Return display string for a database for use in various actions.
Ú'z ('%s')Ú )r   r9   )r   r,   Údatabase_names   &&&r   r5   Ú.BaseDatabaseCreation._get_database_display_str©   s<   � ð
 �O‰O×!Ô!Ø+4¸¬>ˆY˜Õ&ÑAð
ð 	
à?AÑAð
ð 	
r   c                óî   € V P                   P                  R,          R,          '       d%   V P                   P                  R,          R,          # \        V P                   P                  R,          ,           # )zÓ
Internal implementation - return the name of the test DB that will be
created. Only useful when called from create_test_db() and
_create_test_db() and when no external munging is done with the 'NAME'
settings.
r)   r(   )r   r:   ÚTEST_DATABASE_PREFIXr   s   &r   r4   Ú&BaseDatabaseCreation._get_test_db_name²   sR   € ð �?‰?×(Ñ(¨Õ0°×8Ô8Ø—?‘?×0Ñ0°Õ8¸Õ@Ð@Ü# d§o¡o×&CÑ&CÀFÕ&KÕKÐKr   c                ó6   € VP                  R V,          4       R# )z%CREATE DATABASE %(dbname)s %(suffix)sN)Úexecute)r   ÚcursorÚ
parametersrG   s   &&&&r   Ú_execute_create_test_dbÚ,BaseDatabaseCreation._execute_create_test_db½   s   € Ø�‰Ð>ÀÕKÖLr   c           
     ó¨  € V P                  4       pRV P                  P                  P                  V4      RV P	                  4       /pV P                  4       ;_uu_ 4       p V P                  WeV4       RRR4       T#   \         Ed4   pT'       d   Tu Rp?uuRRR4       # T P                  RT,          4       T'       g   \        RT,          4      pT'       g   XR8X  d¨    T^8¼  d&   T P                  RT P                  Y4      : R24       TP                  R	T,          4       T P                  YeT4        Rp?LÌ  \         d>   pT P                  R
T,          4       \        P                  ! ^4        Rp? Rp?ELRp?ii ; iT P                  R4       \        P                  ! ^4        Rp?ELDRp?ii ; i  + '       g   i     T# ; i)z6
Internal implementation - create the test db tables.
ÚdbnameÚsuffixNz+Got an error creating the test database: %szXType 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: Úyesz'Destroying old test database for alias r'   zDROP DATABASE %(dbname)sz-Got an error recreating the test database: %szTests cancelled.)r4   r   ÚopsÚ
quote_nameÚsql_table_creation_suffixr   rŒ   Ú	Exceptionr!   Úinputr5   r‰   r   Úexit)	r   r,   rE   rG   rH   Útest_db_paramsrŠ   ÚeÚconfirms	   &&&&     r   r6   Ú$BaseDatabaseCreation._create_test_dbÀ   s�  € ð "×3Ñ3Ó5Ðà�d—o‘o×)Ñ)×4Ñ4Ð5GÓHØ�d×4Ñ4Ó6ð
ˆð
 ×Ñ× Ô  Fð  Ø×,Ñ,¨VÀVÔL÷ !ðF "Ð!øôA õ  ÷ Ø-Ô-÷ !Ò ð —‘ÐFÈÕJÔKß"Ü#ð=Ø?QõRó�G÷  '¨UÔ"2ð$Ø$¨œ>Ø ŸHšHð %)×$BÑ$BØ(1ö%&ð!"ôð Ÿ™Ð'AÀNÕ'RÔSØ×4Ñ4°VÈV×TÑTøÜ$ô $ØŸ™Ð!PÐSTÕ!TÔUÜŸš Ÿžûð$úð —H‘HÐ/Ô0Ü—H’H˜Q—K’Kûð= ú÷ !Ö ðF "Ð!ús   Á G Á"A>Á>F=Â
	F8ÂF=ÂG Â#F8ÃF8ÃF8Ã%AE Ä;G Å F	Å.F	Å9F8Å=G ÆF	Æ*F8Æ2G Æ8F=Æ=G Ç G	c                óÚ   € V P                   P                  R,          pV^8¼  d5   RpV'       d   RpV P                  V: RV P                  W%4      : R24       V P	                  WV4       R# )z
Clone a test database.
r(   zCloning test databasezUsing existing clonez for alias r'   N)r   r:   r!   r5   Ú_clone_test_db)r   r�   r,   rE   rG   Úsource_database_namerI   s   &&&&&  r   Úclone_test_dbÚ"BaseDatabaseCreation.clone_test_dbï   sc   € ð  $Ÿ™×<Ñ<¸VÕDÐà˜Œ>Ø,ˆFßØ/�Ø�H‰Hó Ø×2Ñ2°9ÖSðôð 	×Ñ˜F¨vÖ6r   c                ól   € V P                   P                  p/ VCRRP                  VR,          V4      /C# )zH
Return a modified connection settings dict for the n-th clone of a DB.
r(   z{}_{})r   r:   Úformat)r   r�   Úorig_settings_dicts   && r   Úget_test_db_clone_settingsÚ/BaseDatabaseCreation.get_test_db_clone_settings  sA   € ð "Ÿ_™_×:Ñ:Ðð
Ø ð
à�G—N‘NÐ#5°fÕ#=¸vÓFñ
ð 	
r   c                ó   € \        R4      h)z9
Internal implementation - duplicate the test db tables.
znThe database backend doesn't support cloning databases. Disable the option to run tests in parallel processes.)ÚNotImplementedError)r   r�   r,   rG   s   &&&&r   r�   Ú#BaseDatabaseCreation._clone_test_db  s   € ô "ðEó
ð 	
r   Nc                óî  € V P                   P                  4        Vf   V P                   P                  R,          pMV P                  V4      R,          pV^8¼  d5   RpV'       d   RpV P	                  V: RV P                  W%4      : R24       V'       g   V P                  WR4       VeI   V\        P                  V P                   P                  ,          R&   WP                   P                  R&   R# R# )z^
Destroy a test database, prompting the user for confirmation if the
database already exists.
Nr(   Ú
DestroyingÚ
Preservingr&   r'   )
r   r7   r:   r¤   r!   r5   Ú_destroy_test_dbr   r8   r9   )r   Úold_database_namer,   rG   r�   rH   rI   s   &&&&&  r   Údestroy_test_dbÚ$BaseDatabaseCreation.destroy_test_db  sÎ   € ð 	�‰×ÑÔØŠ>Ø!%§¡×!>Ñ!>¸vÕ!FÑà!%×!@Ñ!@ÀÓ!HÈÕ!PÐà˜Œ>Ø!ˆFßØ%�Ø�H‰Hó Ø×2Ñ2°9ÖQðô÷ Ø×!Ñ!Ð"4Ô@ð Ò(Ø@QŒH×Ñ˜tŸ™×4Ñ4Õ5°fÑ=Ø4E�O‰O×)Ñ)¨&Ó1ñ )r   c                óæ   € V P                  4       ;_uu_ 4       pVP                  RV P                  P                  P	                  V4      ,          4       RRR4       R#   + '       g   i     R# ; i)z6
Internal implementation - remove the test db tables.
zDROP DATABASE %sN)r   r‰   r   r’   r“   )r   rH   r,   rŠ   s   &&& r   r¬   Ú%BaseDatabaseCreation._destroy_test_db>  sN   € ð ×Ñ× Ô  FØ�N‰NØ" T§_¡_×%8Ñ%8×%CÑ%CÐDVÓ%WÕWô÷ !× × Ò ús   ™<AÁA0	c           	     óœ  € ^ RI HpHp V P                  P                  P
                   Fn  pVP                  R4      w  rEpVP                  R4      ^ ,          pV\        P                  9   g   KF  \        V4      p\        W†4      p	\        W†V! V	4      4       Kp  	  V P                  P                  P                  P                  4        F  w  r«V Ft  pVP                  R4      w  rEpVP                  R4      ^ ,          pV\        P                  9   g   KF  \        V4      p\        W†4      p	\        W†V! V
4      ! V	4      4       Kv  	  K�  	  R# )zƒ
Mark tests in Django's test suite which are expected failures on this
database and test which should be skipped on this database.
)ÚexpectedFailureÚskipÚ.N)Úunittestr³   r´   r   ÚfeaturesÚdjango_test_expected_failuresÚ
rpartitionÚsplitr   ÚINSTALLED_APPSr	   ÚgetattrÚsetattrÚdjango_test_skipsÚitems)r   r³   r´   Ú	test_nameÚtest_case_nameÚ_Útest_method_nameÚtest_appÚ	test_caseÚtest_methodÚreasonÚtestss   &           r   rD   Ú5BaseDatabaseCreation.mark_expected_failures_and_skipsK  s  € ÷ 	3àŸ™×1Ñ1×OÔOˆIØ2;×2FÑ2FÀsÓ2KÑ/ˆNÐ/Ø —‘ sÓ+¨AÕ.ˆHàœ8×2Ñ2Ö2Ü)¨.Ó9�	Ü% iÓB�Ü˜	±_À[Ó5QÖRñ Pð "Ÿ_™_×5Ñ5×GÑG×MÑMÖO‰MˆFÛ"�	Ø6?×6JÑ6JÈ3Ó6OÑ3�Ð#3Ø$Ÿ?™?¨3Ó/°Õ2�àœx×6Ñ6Ö6Ü -¨nÓ =�IÜ")¨)Ó"F�KÜ˜I¹¸f¼ÀkÓ9RÖSó #ó Pr   c                ó   € R# )zA
SQL to append to the end of the test table creation statements.
r‚   © r   s   &r   r”   Ú.BaseDatabaseCreation.sql_table_creation_suffixe  s   € ñ r   c                ó€   € V P                   P                  pVR,          VR,          VR,          V P                  4       3# )z§
Return a tuple with elements of self.connection.settings_dict (a
DATABASES setting value) that uniquely identify a database
accordingly to the RDBMS particularities.
ÚHOSTÚPORTÚENGINE)r   r:   r4   )r   r:   s   & r   Útest_db_signatureÚ&BaseDatabaseCreation.test_db_signaturek  sA   € ð Ÿ™×5Ñ5ˆà˜&Õ!Ø˜&Õ!Ø˜(Õ#Ø×"Ñ"Ó$ð	
ð 	
r   c                ó¸   € V P                  \        V4      4      pV P                  P                  P	                  V4       V P                  P                  4        R # r   )r¤   Ústrr   r:   Úupdater7   )r   Ú
_worker_idr:   s   && r   Úsetup_worker_connectionÚ,BaseDatabaseCreation.setup_worker_connectiony  s@   € Ø×7Ñ7¼¸J»ÓHˆð
 	�‰×%Ñ%×,Ñ,¨]Ô;Ø�‰×ÑÖr   r   )é   FTF)F)rÙ   FF)NrÙ   FN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r!   rL   rP   r?   r~   r5   r4   rŒ   r6   rŸ   r¤   r�   r®   r¬   rD   r”   rÑ   r×   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s~   ø‡ € ñò
%ò.ò+ôH"òTNò!òFGò*
ò	LôMô-"ô^7ò,
ô
ô!FòFòTò4ò
÷ ð  r   r   )r   r   Úior   Údjango.appsr   Údjango.confr   Údjango.corer   Ú	django.dbr   Údjango.db.transactionr   Údjango.utils.module_loadingr	   r†   r   rË   r   r   Ú<module>ré      s4   ðÛ 	Û 
Ý å Ý  Ý #Ý Ý (Ý 5ð Ð ÷o ó o r   