ó
    ¼Rjn_  ã                   ó‚   • 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\5      rg)é    N)ÚDecimal)ÚApps)ÚNotSupportedError)ÚBaseDatabaseSchemaEditor)Ú	Statement)Ústrip_quotes)ÚUniqueConstraint)Úatomicc                   óî   ^ • \ rS rSrSrSrSr\rSrSr	Sr
U 4S jrU 4S	 jrS
 rS r SS jr SU 4S jjrSU 4S jjr SS jrSU 4S jjrU 4S jrU 4S jr SS jrS rU 4S jrU 4S jrS rSrU =r$ )ÚDatabaseSchemaEditoré   zDROP TABLE %(table)sNzEREFERENCES %(to_table)s (%(to_column)s) DEFERRABLE INITIALLY DEFERREDz,ALTER TABLE %(table)s DROP COLUMN %(column)sz7CREATE UNIQUE INDEX %(name)s ON %(table)s (%(columns)s)zDROP INDEX %(name)sc                 ót   >• U R                   R                  5       (       d  [        S5      e[        TU ]  5       $ )NzüSQLite schema editor cannot be used while foreign key constraint checks are enabled. Make sure to disable them before entering a transaction.atomic() context because SQLite does not support disabling them in the middle of a multi-statement transaction.)Ú
connectionÚdisable_constraint_checkingr   ÚsuperÚ	__enter__)ÚselfÚ	__class__s    €ÚMD:\diplom_project\venv\Lib\site-packages\django/db/backends/sqlite3/schema.pyr   ÚDatabaseSchemaEditor.__enter__   s:   ø€ ð �‰×:Ñ:×<Ñ<Ü#ð1óð ô ‰wÑ Ó"Ð"ó    c                 óŽ   >• U R                   R                  5         [        TU ]  XU5        U R                   R	                  5         g ©N)r   Úcheck_constraintsr   Ú__exit__Úenable_constraint_checking)r   Úexc_typeÚ	exc_valueÚ	tracebackr   s       €r   r   ÚDatabaseSchemaEditor.__exit__%   s2   ø€ Ø�‰×)Ñ)Ô+Ü‰Ñ˜¨iÔ8Ø�‰×2Ñ2Õ4r   c                 ó  •  SS K nUR                  U5      n[	        U[
        5      (       a  [        [        U5      5      $ [	        U[        [        [        45      (       a  [        U5      $ [	        U[        5      (       a  SUR                  SS5      -  $ Uc  g[	        U[        [        [        45      (       a  SUR                  5       -  $ [        SU< S[!        U5      < 35      e! [         a     NÝWR                   a     Nîf = f)	Nr   z'%s'Ú'z''ÚNULLzX'%s'zCannot quote parameter value z	 of type )Úsqlite3ÚadaptÚImportErrorÚProgrammingErrorÚ
isinstanceÚboolÚstrÚintr   ÚfloatÚreplaceÚbytesÚ	bytearrayÚ
memoryviewÚhexÚ
ValueErrorÚtype)r   Úvaluer$   s      r   Úquote_valueÚ DatabaseSchemaEditor.quote_value*   sã   € ð	Ûà—M‘M %Ó(ˆEô �eœT×"Ñ"Ü”s˜5“z“?Ð"Ü˜¤¬´Ð4×5Ñ5Ü�u“:ÐÜ˜œs×#Ñ#Ø˜EŸM™M¨#¨tÓ4Ñ4Ð4Ø‰]ØÜ˜¤¤y´*Ð=×>Ñ>ð ˜UŸY™Y›[Ñ(Ð(åÛ@EÄtÈEÅ{ÐSóð øô' ó 	ÙØ×'Ñ'ó 	Ùð	ús   ‚C( Ã(
DÃ4DÄDc                 ó$   • U R                  U5      $ r   )r5   )r   r4   s     r   Úprepare_defaultÚ$DatabaseSchemaEditor.prepare_defaultI   s   € Ø×Ñ Ó&Ð&r   c                 óº  • U R                   R                  5        nU R                   R                  R                  U5       H~  nU(       a  UR                  U:X  a  M  U R                   R                  R                  XER                  5      nUR                  5        H  u  pxX�:X  d  M  Ub  Xr:X  d  M      SSS5        g   M€     SSS5        g! , (       d  f       g= f)zè
Return whether or not the provided table name is referenced by another
one. If `column_name` is specified, only references pointing to that
column are considered. If `ignore_self` is True, self-referential
constraints are ignored.
NTF)r   ÚcursorÚintrospectionÚget_table_listÚnameÚget_relationsÚvalues)	r   Ú
table_nameÚcolumn_nameÚignore_selfr;   Úother_tableÚ	relationsÚconstraint_columnÚconstraint_tables	            r   Ú_is_referenced_by_fk_constraintÚ4DatabaseSchemaEditor._is_referenced_by_fk_constraintL   s¼   € ð �_‰_×#Ñ#Ô%¨Ø#Ÿ™×<Ñ<×KÑKÈFÖS�Þ ;×#3Ñ#3°zÓ#AÙØ ŸO™O×9Ñ9×GÑGØ×,Ñ,ó�	ð <E×;KÑ;KÖ;MÑ7Ð%Ø'Õ5Ø#Ñ+Ð/@Õ/Oá#÷ &Ð%ó <Nñ  T÷ &ð ÷ &Ô%ð ús   ›B	CÂ(CÂ2CÂ=CÃ
Cc                 ó†  >• U R                   R                  R                  (       d‹  U(       a„  U R                  U5      (       an  U R                   R                  (       a  [        SU-  5      eU R                   R                  5         [        TU ]!  XU5        U R                   R                  5         g [        TU ]!  XU5        g )Nz°Renaming the %r table while in a transaction is not supported on SQLite < 3.26 because it would break referential integrity. Try adding `atomic = False` to the Migration class.)
r   ÚfeaturesÚ!supports_atomic_references_renamerH   Úin_atomic_blockr   r   r   Úalter_db_tabler   )r   ÚmodelÚold_db_tableÚnew_db_tableÚdisable_constraintsr   s        €r   rN   Ú#DatabaseSchemaEditor.alter_db_tablec   s–   ø€ ð —‘×(Ñ(×J×JÞ#Ø×4Ñ4°\×BÑBà�‰×.×.Ü'ðYð #ñ#óð ð �O‰O×6Ñ6Ô8Ü‰GÑ" 5¸ÔEØ�O‰O×7Ñ7Õ9ä‰GÑ" 5¸ÕEr   c                 ó˜  >• U R                  X#5      (       d  g UR                  nUR                  R                  nUR	                  5       u  pxUR                  U:w  Ga¬  U R
                  R                  R                  (       Gd†  U R                  XhSS9(       Gap  U R
                  R                  (       a(  [        SUR                  R                  < SU< S35      e[        U R
                  R                  5         [        TU ]9  XX4S9  U R
                  R                  5        n	U	R!                  S5      R#                  5       S   n
U	R!                  S	5        S
U-  nUR	                  5       S   nX¸-  nX¼-  nU	R!                  SXÞ45        U	R!                  SU
S-   -  5        U	R!                  S5        U	R!                  S5        S S S 5        S S S 5        U R
                  R                  5        n	U	R!                  S5        S S S 5        g [        TU ]9  XX4S9  g ! , (       d  f       NZ= f! , (       d  f       Nc= f! , (       d  f       g = f)NT)rC   zRenaming the Ú.z¢ column while in a transaction is not supported on SQLite < 3.26 because it would break referential integrity. Try adding `atomic = False` to the Migration class.)ÚstrictzPRAGMA schema_versionr   zPRAGMA writable_schema = 1z REFERENCES "%s" ("%%s") é   z3UPDATE sqlite_master SET sql = replace(sql, %s, %s)zPRAGMA schema_version = %dzPRAGMA writable_schema = 0zPRAGMA integrity_checkÚVACUUM)Ú_field_should_be_alteredr>   Ú_metaÚdb_tableÚget_attname_columnr   rK   rL   rH   rM   r   r
   Úaliasr   Úalter_fieldr;   ÚexecuteÚfetchone)r   rO   Ú	old_fieldÚ	new_fieldrV   Úold_field_namerA   Ú_Úold_column_namer;   Úschema_versionÚreferences_templateÚnew_column_nameÚsearchÚreplacementr   s                  €r   r^   Ú DatabaseSchemaEditor.alter_fieldz   sï  ø€ Ø×,Ñ,¨Y×BÑBØØ"Ÿ™ˆØ—[‘[×)Ñ)ˆ
Ø&×9Ñ9Ó;Ñˆà�N‰N˜nÔ,Ø—O‘O×,Ñ,×N×NÐNØ×4Ñ4Ø¸ð 5÷ ð �‰×.×.Ý'ð —{‘{×+Ô+«^ð=óð ô ˜Ÿ™×-Ñ-Õ.Ü‘Ñ# E°iÐ#ÑOð —_‘_×+Ñ+Ô-°Ø%+§^¡^Ð4KÓ%L×%UÑ%UÓ%WØñ&�Nð —N‘NÐ#?Ô@Ø*EÈ
Ñ*RÐ'Ø&/×&BÑ&BÓ&DÀQÑ&G�OØ0ÑB�FØ"5Ñ"G�KØ—N‘NØMØÐ-ôð —N‘NÐ#?À>ÐTUÑCUÑ#VÔWØ—N‘NÐ#?Ô@ð —N‘NÐ#;Ô<÷% .÷ /ð4 —‘×'Ñ'Ô)¨VØ—‘˜xÔ(÷ *Ð)ô ‰GÑ °)ÐÒK÷1 .Õ-ú÷ /Õ.ú÷4 *Õ)ús1   Ã<)H*Ä%B HÇH*Ç/H;È
H'	È#H*È*
H8È;
I	c                 óª  ^ ^^• U4S jnTR                   R                   Vs0 s H-  nUR                  U" U5      (       a  UR                  5       OU_M/     nnTR                   R                   Vs0 s H)  nUR                  T R                  UR                  5      _M+     nn0 n	Sn
U=(       d    / n[        USS5      (       d  [        S U 5       5      (       a}  [        UR                  5       5       H`  u  mnUR                  (       d  M  [        U4S jU 5       5      (       a  M5  SUl
        Un
UR                  (       d  MQ  UT	 X‹R                  	 Mb     U(       a\  X'UR                  '   UR                  (       d=  UR                  (       a,  T R                  T R                  U5      5      X‚R                  '   U Hü  nUu  pÞUR!                  UR                  S5        UR!                  UR                  S5        XçUR                  '   UR"                  (       a_  UR"                  (       dN  ST R                  UR                  5      T R                  T R                  U5      5      S.-  nXøUR                  '   O'T R                  UR                  5      XŽR                  '   UR                  X�R                  '   Mþ     U(       a}  XsR                  	 XƒR                  	 UR                  (       aT  UR$                  R&                  R                   R                  (       a%  T R)                  UR$                  R&                  5      $ [+        5       nTR                   R,                   VVs/ s H&  nU Vs/ s H  nU	R/                  UU5      PM     snPM(     nnnTR                   R0                   VVs/ s H&  nU Vs/ s H  nU	R/                  UU5      PM     snPM(     nnnTR                   R2                  nU(       a.  U Vs/ s H!  nUR                  UR4                  ;  d  M  UPM#     nn[        TR                   R6                  5      n[8        R:                  " U5      nTR                   R<                  TR                   R>                  UUUUUS	.n[A        S
SU5      nUUS
'   TRB                  US'   [A        TR                   RD                  TRF                  U5        [8        R:                  " U5      nTR                   R<                  S[I        TR                   R>                  5      -  UUUUUS	.n[A        S
SU5      nUUS
'   TRB                  US'   [A        STR                   RD                  -  TRF                  U5      nT RK                  U5        T RM                  ST R                  UR                   R>                  5      < SSRO                  U 4S jU 5       5      < SSRO                  URQ                  5       5      < ST R                  TR                   R>                  5      < 35        T R)                  TSS9  T RS                  UUR                   R>                  TR                   R>                  SS9  T RT                   H  nT RM                  U5        M     / T l*        U
(       a  SU
l
        ggs  snf s  snf s  snf s  snnf s  snf s  snnf s  snf )a$  
Shortcut to transform a model from old_model into new_model

This follows the correct procedure to perform non-rename or column
addition operations based on SQLite's documentation

https://www.sqlite.org/lang_altertable.html#caution

The essential steps are:
  1. Create a table with the updated definition called "new__app_model"
  2. Copy the data from the existing "app_model" table to the new table
  3. Drop the "app_model" table
  4. Rename the "new__app_model" table to "app_model"
  5. Restore any index of the previous "app_model" table.
c                 óZ   >• U R                   =(       a    U R                  R                  TL $ r   )Úis_relationÚremote_fieldrO   )ÚfrO   s    €r   Úis_self_referentialÚ?DatabaseSchemaEditor._remake_table.<locals>.is_self_referentialÅ   s!   ø€ Ø—=‘=×B Q§^¡^×%9Ñ%9¸UÐ%BÐBr   NÚprimary_keyFc              3   ó@   #   • U  H  u  p[        US S5      v •  M     g7f)rs   FN)Úgetattr)Ú.0rd   rb   s      r   Ú	<genexpr>Ú5DatabaseSchemaEditor._remake_table.<locals>.<genexpr>Ù   s!   é € ð >
ÚIU¹¸ŒG�I˜}¨e×4Ð4Êùs   ‚c              3   óF   >#   • U  H  u  pTUR                   :H  v •  M     g 7fr   )r>   )rv   rd   rb   r>   s      €r   rw   rx   Ý   s%   øé € ð 1ò )5™˜ð ˜IŸN™NÖ*Ú(4ùó   ƒ!zcoalesce(%(col)s, %(default)s))ÚcolÚdefault)Ú	app_labelr[   Úunique_togetherÚindex_togetherÚindexesÚconstraintsÚappsÚMeta© Ú
__module__znew__%szNew%súINSERT INTO ú (ú, c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr   )Ú
quote_name)rv   Úxr   s     €r   rw   rx   R  s   øé € Ð>²g°˜$Ÿ/™/¨!×,Ð,²gùrz   ú	) SELECT ú FROM )Úhandle_autom2m)rR   T)+rZ   Úlocal_concrete_fieldsr>   ÚcloneÚcolumnrŠ   ru   ÚanyÚlistÚitemsrs   Úauto_createdÚmany_to_manyÚconcreter8   Úeffective_defaultÚpopÚnullro   ÚthroughÚdelete_modelr   r~   Úgetr   r€   Úfieldsr�   ÚcopyÚdeepcopyr}   r[   r3   r…   Úobject_nameÚ	__bases__r   Úcreate_modelr_   Újoinr@   rN   Údeferred_sql)r   rO   Úcreate_fieldÚdelete_fieldÚalter_fieldsrq   rp   ÚbodyÚmappingÚrename_mappingÚrestore_pk_fieldÚfieldr^   ra   rb   Úcase_sqlr‚   ÚuniqueÚnr~   Úindexr   r€   r�   Ú	body_copyÚmeta_contentsÚmetaÚ	new_modelÚsqlr>   s   ``                           @r   Ú_remake_tableÚ"DatabaseSchemaEditor._remake_table¯   sÝ  ú€ õ,	Cð —[‘[×6Ò6ó
â6�ð �F‰FÑ!4°Q×!7Ñ!7�A—G‘G”I¸QÒ>Ù6ð 	ð 
ð —[‘[×6Ò6ó
â6�ð �H‰H�d—o‘o a§h¡hÓ/Ò/Ù6ð 	ð 
ð
 ˆð  ÐØ#×) rˆÜ�< °×6Ñ6¼#ñ >
ÙIUó>
÷ ;
ñ ;
ô  $ D§J¡J£LÖ1‘��eØ×$×$Ñ$¬Sô 1ñ )5ó	1÷ .ó .ð ).�EÔ%Ø',Ð$Ø×)×)Ñ)Ø  ˜JØ#§L¡LÒ1ñ  2ö Ø&2�×"Ñ"Ñ#à×,×,°×1F×1FØ/3×/CÑ/CØ×*Ñ*¨<Ó8ó0�×+Ñ+Ñ,ó (ˆKØ#.Ñ ˆIØ�H‰H�Y—^‘^ TÔ*Ø�K‰K˜	×(Ñ(¨$Ô/Ø#,�—‘Ñ Ø�~�~ i§n§nØ;ØŸ?™?¨9×+;Ñ+;Ó<Ø#×3Ñ3°D×4JÑ4JÈ9Ó4UÓVñ?ñ �ð -5˜	×(Ñ(Ò)à,0¯O©O¸I×<LÑ<LÓ,M�×(Ñ(Ñ)Ø-6¯^©^ˆNŸ>™>Ó*ñ (ö Ø×&Ñ&Ð'Ø×+Ñ+Ð,ð ×)×)Ø ×-Ñ-×5Ñ5×;Ñ;×H×Hà×(Ñ(¨×)BÑ)B×)JÑ)JÓKÐKä‹vˆð  Ÿ+™+×5Ò5ô
â5�ñ 06Ó6ªv¨!ˆ^×Ñ  1Ö%©vÔ6Ù5ð 	ñ 
ð Ÿ™×3Ò3ô
â3�ñ 05Ó5ªu¨!ˆ^×Ñ  1Ö%©uÔ5Ù3ð 	ñ 
ð
 —+‘+×%Ñ%ˆÞá#*óÚ#*˜%¨l×.?Ñ.?ÀuÇ|Á|Ñ.S—¡7ð ð ô ˜5Ÿ;™;×2Ñ2Ó3ˆô
 —M’M $Ó'ˆ	ð Ÿ™×.Ñ.ØŸ™×,Ñ,Ø.Ø,ØØ&Øñ
ˆô �F˜B Ó.ˆØ ˆ	�&ÑØ"'×"2Ñ"2ˆ	�,ÑÜˆU�[‰[×$Ñ$ e§o¡o°yÔAô —M’M $Ó'ˆ	àŸ™×.Ñ.Ø!¤L°·±×1EÑ1EÓ$FÑFØ.Ø,ØØ&Øñ
ˆô �F˜B Ó.ˆØ ˆ	�&ÑØ"'×"2Ñ"2ˆ	�,ÑÜ˜ 5§;¡;×#:Ñ#:Ñ:¸E¿O¹OÈYÓWˆ	ð 	×Ñ˜)Ô$ð 	�Šð —‘ 	§¡× 8Ñ 8Ö9Ø—	‘	Ô>±gÓ>Ö>Ø—	‘	˜'Ÿ.™.Ó*Ö+Ø—‘ §¡× 4Ñ 4Õ5ðô	
ð 	×Ñ˜%°ÐÑ6ð 	×ÑØØ�O‰O×$Ñ$Ø�K‰K× Ñ Ø %ð	 	ñ 	
ð ×$Ô$ˆCØ�L‰L˜Öñ %àˆÔæØ+/ÐÕ(ð ùò
ùò
ùò@ 7ùó
ùò 6ùó
ùòsG   ¢4Z0Á00Z5Í#
Z?Í-Z:Î	Z?Î,
[
Î6[Ï[
Ï=[Ð[Ú:Z?Û[
c                 ó®  >• U(       a  [         TU ]  U5        g U R                  U R                  SU R	                  UR
                  R                  5      0-  5        [        U R                  5       Ha  n[        U[        5      (       d  M  UR                  UR
                  R                  5      (       d  MF  U R                  R                  U5        Mc     g )NÚtable)r   rœ   r_   Úsql_delete_tablerŠ   rZ   r[   r“   r¥   r(   r   Úreferences_tableÚremove)r   rO   rŽ   r¶   r   s       €r   rœ   Ú!DatabaseSchemaEditor.delete_modelk  s¥   ø€ ÞÜ‰GÑ  Õ'ð �L‰LØ×%Ñ%à˜TŸ_™_¨U¯[©[×-AÑ-AÓBðñôô ˜D×-Ñ-Ö.�Ü˜c¤9×-Ó-°#×2FÑ2FØ—K‘K×(Ñ(÷3ó 3ð ×%Ñ%×,Ñ,¨SÖ1ò	 /r   c                 óš  >• UR                   (       aU  UR                  R                  R                  R                  (       a&  U R                  UR                  R                  5        gUR                  (       d4  UR                  (       d#  UR                  (       a  U R                  U5      b  U R                  XS9  g[        TU ]1  X5        g)zCreate a field on a model.N)r¦   )r–   ro   r›   rZ   r•   r£   rs   r¯   rš   r˜   r·   r   Ú	add_field©r   rO   r­   r   s      €r   rÀ   ÚDatabaseSchemaEditor.add_field}  sŒ   ø€ ð ×× %×"4Ñ"4×"<Ñ"<×"BÑ"B×"O×"OØ×Ñ˜e×0Ñ0×8Ñ8Õ9ð ××Ø�|�|ð
 —
—
Ø×%Ñ% eÓ,Ñ8à×Ñ˜uÐÒ9ä‰GÑ˜eÕ+r   c                 óB  >• UR                   (       aV  UR                  R                  R                  R                  (       a&  U R                  UR                  R                  5        ggU R                  R                  R                  (       ae  UR                  (       dT  UR                  (       dC  UR                  (       d2  UR                  (       a  UR                  (       d  [        TU ]9  X5        gUR                  U R                  S9S   c  gU R!                  XS9  g)zm
Remove a field from a model. Usually involves deleting a column,
but for M2Ms may involve deleting a table.
)r   r3   N)r§   )r–   ro   r›   rZ   r•   rœ   r   rK   Úcan_alter_table_drop_columnrs   r¯   Údb_indexÚdb_constraintr   Úremove_fieldÚdb_parametersr·   rÁ   s      €r   rÇ   Ú!DatabaseSchemaEditor.remove_field’  sÇ   ø€ ð ××à×!Ñ!×)Ñ)×/Ñ/×<×<Ø×!Ñ! %×"4Ñ"4×"<Ñ"<Õ=ð =ð �O‰O×$Ñ$×@×@ð ×%×%Ø—L—LØ—N—NØ×'×'¨E×,?×,?ä‰GÑ  Õ.ð ×"Ñ"¨d¯o©oÐ"Ð>¸vÑFÑNØØ×Ñ˜uÐÒ9r   c	                 óx  • U R                   R                  R                  (       a¸  UR                  UR                  :w  až  U R	                  X5      U R	                  X5      :X  az  UR
                  (       a  UR                  (       dX  UR
                  (       a  UR                  (       d6  U R                  U R                  UR                  R                  X#U5      5      $ U R                  XU4/S9  UR                  S5      n	UR                  S5      n
UR                  (       Ga—  XE:w  d  Xš:w  Ga‹  [        5       nUR                  R                  nUR                    H´  nUR"                  U:X  a  M  UR$                  (       d9  UR&                  UR(                  :X  a  UR+                  UR"                  5        M]  M_  UR,                  (       d  Mr  UR.                  R                  R0                  (       d  M™  UR+                  UR.                  5        M¶     UR,                  (       a{  UR$                   Hk  nUR"                  U:X  a  M  UR
                  R.                  R                  R0                  (       d  MF  UR+                  UR
                  R.                  5        Mm     U H  nU R                  U5        M     ggg)z3Perform a "physical" (non-ManyToMany) field update.©r¨   Ú	collationN)r   rK   Úcan_alter_table_rename_columnr‘   Ú
column_sqlro   rÆ   r_   Ú_rename_field_sqlrZ   r[   r·   r�   r¯   ÚsetrO   Úrelated_objectsÚrelated_modelr–   Ú
field_namer>   Úaddrs   r›   r•   )r   rO   ra   rb   Úold_typeÚnew_typeÚold_db_paramsÚnew_db_paramsrV   Úold_collationÚnew_collationÚrelated_modelsÚoptsro   r–   rÒ   s                   r   Ú_alter_fieldÚ!DatabaseSchemaEditor._alter_field®  s  € ð �O‰O×$Ñ$×B×BØ× Ñ  I×$4Ñ$4Ó4Ø—‘ Ó1°T·_±_ÀUÓ5VÓVà×&×&Ø×+×+Ø×)×)Ø×+×+ð —<‘<Ø×&Ñ&Ø—K‘K×(Ñ(¨)Àóóð ð 	×Ñ˜5¸IÐ0FÐ/GÐÑHà%×)Ñ)¨+Ó6ˆØ%×)Ñ)¨+Ó6ˆØ××ÐØÓ  MÔ$Bä ›UˆNØ—?‘?×(Ñ(ˆDØ $× 4Ô 4�à×-Ñ-°Ó6ÙØ#×0×0Ø#×.Ñ.°)·.±.Ó@Ø&×*Ñ*¨<×+EÑ+EÖFñ Aà×*×*Ñ*¨|×/CÑ/C×/IÑ/I×/V×/VÑ/VØ"×&Ñ& |×';Ñ';Ö<ñ !5ð ×$×$Ø$(×$5Ô$5�Là#×1Ñ1°UÓ:Ù Ø#×0Ñ0×8Ñ8×>Ñ>×K×KÑKØ&×*Ñ*¨<×+DÑ+D×+LÑ+LÖMñ %6ó "0�Ø×"Ñ" =Ö1ò "0ð) %Cð r   c                 óJ  • UR                   R                  R                  R                  UR                   R                  R                  R                  :X  Ga  U R	                  UR                   R                  UR                   R                  R                  R                  UR                  5       5      UR                   R                  R                  R                  UR                  5       5      4UR                   R                  R                  R                  UR                  5       5      UR                   R                  R                  R                  UR                  5       5      4/S9  gU R                  UR                   R                  5        U R                  SU R                  UR                   R                  R                  R                  5      < SSR                  SUR                  5       UR                  5       /5      < SSR                  SUR                  5       UR                  5       /5      < SU R                  UR                   R                  R                  R                  5      < 35        U R                  UR                   R                  5        g)	z*Alter M2Ms to repoint their to= endpoints.rË   Nr†   r‡   rˆ   ÚidrŒ   r�   )ro   r›   rZ   r[   r·   Ú	get_fieldÚm2m_reverse_field_nameÚm2m_field_namer£   r_   rŠ   r¤   Úm2m_column_nameÚm2m_reverse_namerœ   )r   rO   ra   rb   rV   s        r   Ú_alter_many_to_manyÚ(DatabaseSchemaEditor._alter_many_to_manyé  s  € ð ×"Ñ"×*Ñ*×0Ñ0×9Ñ9Ø×%Ñ%×-Ñ-×3Ñ3×<Ñ<ô=ð
 ×ÑØ×&Ñ&×.Ñ.ð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×<Ñ<Ó>óð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×<Ñ<Ó>óð
ð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×4Ñ4Ó6óð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×4Ñ4Ó6óð
ðð ñ ð6 ð 	×Ñ˜)×0Ñ0×8Ñ8Ô9à�Šð —‘ 	× 6Ñ 6× >Ñ >× DÑ D× MÑ MÖNØ—	‘	àØ!×1Ñ1Ó3Ø!×2Ñ2Ó4ðöð —	‘	àØ!×1Ñ1Ó3Ø!×2Ñ2Ó4ðöð —‘ 	× 6Ñ 6× >Ñ >× DÑ D× MÑ MÕNð#ô	
ð, 	×Ñ˜)×0Ñ0×8Ñ8Õ9r   c                 óú   >• [        U[        5      (       aT  UR                  (       d3  UR                  (       d"  UR                  (       d  UR
                  (       a  [        TU ]  X5        g U R                  U5        g r   )	r(   r	   Ú	conditionÚcontains_expressionsÚincludeÚ
deferrabler   Úadd_constraintr·   ©r   rO   Ú
constraintr   s      €r   rí   Ú#DatabaseSchemaEditor.add_constraint)  sP   ø€ Ü�jÔ"2×3Ñ3Ø× × Ø×.×.Ø×!×!Ø×$×$ä‰GÑ" 5Õ5à×Ñ˜uÕ%r   c                 óú   >• [        U[        5      (       aT  UR                  (       d3  UR                  (       d"  UR                  (       d  UR
                  (       a  [        TU ]  X5        g U R                  U5        g r   )	r(   r	   ré   rê   rë   rì   r   Úremove_constraintr·   rî   s      €r   rò   Ú&DatabaseSchemaEditor.remove_constraint4  sP   ø€ Ü�jÔ"2×3Ñ3Ø× × Ø×.×.Ø×!×!Ø×$×$ä‰GÑ% eÕ8à×Ñ˜uÕ%r   c                 ó   • SU-   $ )NzCOLLATE r„   )r   rÌ   s     r   Ú_collate_sqlÚ!DatabaseSchemaEditor._collate_sql?  s   € Ø˜IÑ%Ð%r   )r¥   )NF)T)F)NNN)Ú__name__r…   Ú__qualname__Ú__firstlineno__r»   Úsql_create_fkÚsql_create_inline_fkÚsql_create_column_inline_fkÚsql_delete_columnÚsql_create_uniqueÚsql_delete_uniquer   r   r5   r8   rH   rN   r^   r·   rœ   rÀ   rÇ   rÝ   ræ   rí   rò   rõ   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s¥   ø† Ø-ÐØ€MàOð ð #7ÐØFÐØQÐØ-Ðõ#õ5ò
ò>'ð 9>ôð0 FJ÷F÷.3Lðl IMôz0÷x2õ$,õ*:ðJ ô92òv>:õ@	&õ	&÷&ð &r   r   )rŸ   Údecimalr   Údjango.apps.registryr   Ú	django.dbr   Údjango.db.backends.base.schemar   Ú!django.db.backends.ddl_referencesr   Údjango.db.backends.utilsr   Údjango.db.modelsr	   Údjango.db.transactionr
   r   r„   r   r   Ú<module>r
     s/   ðÛ Ý å %Ý 'Ý CÝ 7Ý 1Ý -Ý (ôs&Ð3õ s&r   