Ë
    q^ëiÁ  ã                   óØ   — d Z ddlmZ  G d„ d«      Z G d„ de«      Z G d„ de«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z	 G d„ de«      Z
 G d„ de«      Zy)z~
Helpers to manipulate deferred DDL statements that might need to be adjusted or
discarded within when executing a migration.
é    )Údeepcopyc                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú	Referencez0Base class that defines the reference interface.c                  ó   — y)zU
        Return whether or not this instance references the specified table.
        F© ©ÚselfÚtables     úR/var/www/eb/venv/lib/python3.12/site-packages/django/db/backends/ddl_references.pyÚreferences_tablezReference.references_table   ó   € ð ó    c                  ó   — y)zV
        Return whether or not this instance references the specified column.
        Fr   ©r	   r
   Úcolumns      r   Úreferences_columnzReference.references_column   r   r   c                  ó   — y)zI
        Rename all references to the old_name to the new_table.
        Nr   ©r	   Ú	old_tableÚ	new_tables      r   Úrename_table_referencesz!Reference.rename_table_references   ó   € ð 	r   c                  ó   — y)zL
        Rename all references to the old_column to the new_column.
        Nr   )r	   r
   Ú
old_columnÚ
new_columns       r   Úrename_column_referencesz"Reference.rename_column_references   r   r   c                 óN   — d| j                   j                  ›dt        | «      ›d�S )Nú<ú ú>)Ú	__class__Ú__name__Ústr©r	   s    r   Ú__repr__zReference.__repr__#   s   � Ø ŸN™N×3Ó3´S¸µYÐ?Ð?r   c                 ó   — t        d«      ‚)Nz>Subclasses must define how they should be converted to string.)ÚNotImplementedErrorr$   s    r   Ú__str__zReference.__str__&   s   € Ü!ØLó
ð 	
r   N)
r"   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r%   r(   r   r   r   r   r      s$   „ Ù:òòòòò@ó
r   r   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚTablezHold a reference to a table.c                 ó    — || _         || _        y ©N)r
   Ú
quote_name)r	   r
   r0   s      r   Ú__init__zTable.__init__/   s   € ØˆŒ
Ø$ˆ�r   c                 ó    — | j                   |k(  S r/   ©r
   r   s     r   r   zTable.references_table3   s   € Ø�z‰z˜UÑ"Ð"r   c                 ó2   — | j                   |k(  r|| _         y y r/   r3   r   s      r   r   zTable.rename_table_references6   s   € Ø�:‰:˜Ò"Ø"ˆD�Jð #r   c                 ó8   — | j                  | j                  «      S r/   )r0   r
   r$   s    r   r(   zTable.__str__:   s   € Ø�‰˜tŸz™zÓ*Ð*r   N)r"   r)   r*   r+   r1   r   r   r(   r   r   r   r-   r-   ,   s   „ Ù&ò%ò#ò#ó+r   r-   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚTableColumnsz9Base class for references to multiple columns of a table.c                 ó    — || _         || _        y r/   ©r
   Úcolumns)r	   r
   r:   s      r   r1   zTableColumns.__init__A   s   € ØˆŒ
Øˆ�r   c                 ó@   — | j                   |k(  xr || j                  v S r/   r9   r   s      r   r   zTableColumns.references_columnE   s   € Ø�z‰z˜UÑ"Ò= v°·±Ð'=Ð=r   c                 óˆ   — | j                   |k(  r3t        | j                  «      D ]  \  }}||k(  sŒ|| j                  |<   Œ y y r/   )r
   Ú	enumerater:   )r	   r
   r   r   Úindexr   s         r   r   z%TableColumns.rename_column_referencesH   sE   € Ø�:‰:˜ÒÜ!*¨4¯<©<Ó!8ò 5‘��vØ˜ZÓ'Ø*4�D—L‘L Ò'ñ5ð r   N)r"   r)   r*   r+   r1   r   r   r   r   r   r7   r7   >   s   „ ÙCòò>ó5r   r7   c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚColumnsz(Hold a reference to one or many columns.c                 óB   •— || _         || _        t        ‰| �  ||«       y r/   )r0   Úcol_suffixesÚsuperr1   )r	   r
   r:   r0   rB   r!   s        €r   r1   zColumns.__init__R   s!   ø€ Ø$ˆŒØ(ˆÔÜ‰Ñ˜ Õ(r   c                 ój   ‡ ‡— ˆ fd„Šdj                  ˆfd„t        ‰ j                  «      D «       «      S )Nc                 ó’   •— ‰j                  | «      }	 ‰j                  |   }|rdj                  ||«      }|S # t        $ r Y |S w xY w©Nz{} {})r0   rB   ÚformatÚ
IndexError©r   ÚidxÚcolÚsuffixr	   s       €r   Úcol_strz Columns.__str__.<locals>.col_strX   sY   ø€ Ø—/‘/ &Ó)ˆCðØ×*Ñ*¨3Ñ/�ÙØ!Ÿ.™.¨¨fÓ5�Cð ˆJøô ò ØØˆJðús   ”#9 ¹	AÁAú, c              3   ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wr/   r   ©Ú.0rJ   r   rM   s      €r   ú	<genexpr>z"Columns.__str__.<locals>.<genexpr>b   ó!   øè ø€ ò 
Ù%0 S¨&‰G�F˜C× ñ
ùó   ƒ©Újoinr=   r:   ©r	   rM   s   `@r   r(   zColumns.__str__W   s1   ù€ ô	ð �y‰yó 
Ü4=¸d¿l¹lÓ4Kô
ó 
ð 	
r   )r   ©r"   r)   r*   r+   r1   r(   Ú__classcell__©r!   s   @r   r@   r@   O   s   ø„ Ù2õ)ö

r   r@   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )Ú	IndexNamez"Hold a reference to an index name.c                 óB   •— || _         || _        t        ‰| �  ||«       y r/   )rL   Úcreate_index_namerC   r1   )r	   r
   r:   rL   r^   r!   s        €r   r1   zIndexName.__init__j   s!   ø€ ØˆŒØ!2ˆÔÜ‰Ñ˜ Õ(r   c                 ód   — | j                  | j                  | j                  | j                  «      S r/   )r^   r
   r:   rL   r$   s    r   r(   zIndexName.__str__o   s#   € Ø×%Ñ% d§j¡j°$·,±,ÀÇÁÓLÐLr   rX   rZ   s   @r   r\   r\   g   s   ø„ Ù,ô)ö
Mr   r\   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚIndexColumnsc                 ó8   •— || _         t        ‰| �	  ||||«       y r/   )Ú	opclassesrC   r1   )r	   r
   r:   r0   rB   rc   r!   s         €r   r1   zIndexColumns.__init__t   s   ø€ Ø"ˆŒÜ‰Ñ˜ ¨°\ÕBr   c                 ój   ‡ ‡— ˆ fd„Šdj                  ˆfd„t        ‰ j                  «      D «       «      S )Nc                 óÌ   •— dj                  ‰j                  | «      ‰j                  |   «      }	 ‰j                  |   }|rdj                  ||«      }|S # t        $ r Y |S w xY wrF   )rG   r0   rc   rB   rH   rI   s       €r   rM   z%IndexColumns.__str__.<locals>.col_stry   so   ø€ ð —.‘. §¡°Ó!8¸$¿.¹.ÈÑ:MÓNˆCðØ×*Ñ*¨3Ñ/�ÙØ!Ÿ.™.¨¨fÓ5�Cð ˆJøô ò ØØˆJðús   ±#A Á	A#Á"A#rN   c              3   ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wr/   r   rP   s      €r   rR   z'IndexColumns.__str__.<locals>.<genexpr>…   rS   rT   rU   rW   s   `@r   r(   zIndexColumns.__str__x   s1   ù€ ô
	ð �y‰yó 
Ü4=¸d¿l¹lÓ4Kô
ó 
ð 	
r   )r   r   )r"   r)   r*   r1   r(   rY   rZ   s   @r   ra   ra   s   s   ø„ õCö
r   ra   c                   óP   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zd„ Z	ˆ xZ
S )ÚForeignKeyNamez'Hold a reference to a foreign key name.c                 ód   •— t        ||«      | _        || _        || _        t        ‰| �  ||«       y r/   )r7   Úto_referenceÚsuffix_templateÚcreate_fk_namerC   r1   )r	   Ú
from_tableÚfrom_columnsÚto_tableÚ
to_columnsrk   rl   r!   s          €r   r1   zForeignKeyName.__init__�   s7   ø€ ô )¨°:Ó>ˆÔØ.ˆÔØ,ˆÔÜ‰ÑØØõ	
r   c                 ó\   •— t         ‰| �  |«      xs | j                  j                  |«      S r/   )rC   r   rj   )r	   r
   r!   s     €r   r   zForeignKeyName.references_tablež   s0   ø€ Ü‰wÑ'¨Ó.ò 
°$×2CÑ2C×2TÑ2TØó3
ð 	
r   c                 ó`   •— t         ‰| �  ||«      xs | j                  j                  ||«      S r/   )rC   r   rj   )r	   r
   r   r!   s      €r   r   z ForeignKeyName.references_column£   s7   ø€ Ü‰wÑ(Ø�6ó
ò @à×Ñ×0Ñ0°¸Ó?ð	@r   c                 ó^   •— t         ‰| �  ||«       | j                  j                  ||«       y r/   )rC   r   rj   ©r	   r   r   r!   s      €r   r   z&ForeignKeyName.rename_table_references¨   s(   ø€ Ü‰Ñ'¨	°9Ô=Ø×Ñ×1Ñ1°)¸YÕGr   c                 ób   •— t         ‰| �  |||«       | j                  j                  |||«       y r/   )rC   r   rj   )r	   r
   r   r   r!   s       €r   r   z'ForeignKeyName.rename_column_references¬   s,   ø€ Ü‰Ñ(¨°
¸JÔGØ×Ñ×2Ñ2°5¸*ÀjÕQr   c                 óÊ   — | j                   | j                  j                  | j                  j                  d   dœz  }| j	                  | j                  | j                  |«      S )Nr   )ro   Ú	to_column)rk   rj   r
   r:   rl   )r	   rL   s     r   r(   zForeignKeyName.__str__°   sY   € Ø×%Ñ%Ø×)Ñ)×/Ñ/Ø×*Ñ*×2Ñ2°1Ñ5ñ)
ñ 
ˆð ×"Ñ" 4§:¡:¨t¯|©|¸VÓDÐDr   )r"   r)   r*   r+   r1   r   r   r   r   r(   rY   rZ   s   @r   rh   rh   Š   s(   ø„ Ù1ô
ô"
ô
@ô
HôRöEr   rh   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú	Statementzò
    Statement template and formatting parameters container.

    Allows keeping a reference to a statement without interpolating identifiers
    that might have to be adjusted if they're referencing a table or column
    that is removed
    c                 ó    — || _         || _        y r/   ©ÚtemplateÚparts)r	   r|   r}   s      r   r1   zStatement.__init__Á   s   € Ø ˆŒØˆ�
r   c                 ó\   ‡— t        ˆfd„| j                  j                  «       D «       «      S )Nc              3   ó\   •K  — | ]#  }t        |d «      xr |j                  ‰«      –— Œ% y­w)r   N)Úhasattrr   )rQ   Úpartr
   s     €r   rR   z-Statement.references_table.<locals>.<genexpr>Æ   s4   øè ø€ ò 
àô �DÐ,Ó-ÒN°$×2GÑ2GÈÓ2NÓNñ
ùs   ƒ),©Úanyr}   Úvaluesr   s    `r   r   zStatement.references_tableÅ   s*   ø€ Üó 
àŸ
™
×)Ñ)Ó+ô
ó 
ð 	
r   c                 ó`   ‡‡— t        ˆˆfd„| j                  j                  «       D «       «      S )Nc              3   ó^   •K  — | ]$  }t        |d «      xr |j                  ‰‰«      –— Œ& y­w)r   N)r€   r   )rQ   r�   r   r
   s     €€r   rR   z.Statement.references_column.<locals>.<genexpr>Ì   s7   øè ø€ ò 
àô �DÐ-Ó.ÒX°4×3IÑ3IÈ%ÐQWÓ3XÓXñ
ùs   ƒ*-r‚   r   s    ``r   r   zStatement.references_columnË   s*   ù€ Üô 
àŸ
™
×)Ñ)Ó+ô
ó 
ð 	
r   c                 ó€   — | j                   j                  «       D ]!  }t        |d«      sŒ|j                  ||«       Œ# y )Nr   )r}   r„   r€   r   )r	   r   r   r�   s       r   r   z!Statement.rename_table_referencesÑ   s;   € Ø—J‘J×%Ñ%Ó'ò 	CˆDÜ�tÐ6Õ7Ø×,Ñ,¨Y¸	ÕBñ	Cr   c                 ó‚   — | j                   j                  «       D ]"  }t        |d«      sŒ|j                  |||«       Œ$ y )Nr   )r}   r„   r€   r   )r	   r
   r   r   r�   s        r   r   z"Statement.rename_column_referencesÖ   s=   € Ø—J‘J×%Ñ%Ó'ò 	MˆDÜ�tÐ7Õ8Ø×-Ñ-¨e°ZÀÕLñ	Mr   c                 ó4   — | j                   | j                  z  S r/   r{   r$   s    r   r(   zStatement.__str__Û   s   € Ø�}‰}˜tŸz™zÑ)Ð)r   N)
r"   r)   r*   r+   r1   r   r   r   r   r(   r   r   r   ry   ry   ¸   s'   „ ñòò
ò
òCò
Mó
*r   ry   c                   ó4   ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚExpressionsc                 óü   •— || _         || _        || _        | j                   j                  j	                  | j                  g«      D �cg c]  }|j
                  j                  ‘Œ }}t        ‰| �!  ||«       y c c}w r/   )	ÚcompilerÚexpressionsÚquote_valueÚqueryÚ	_gen_colsÚtargetr   rC   r1   )r	   r
   rŽ   r�   r�   rK   r:   r!   s          €r   r1   zExpressions.__init__à   sw   ø€ Ø ˆŒØ&ˆÔØ&ˆÔð —}‘}×*Ñ*×4Ñ4°d×6FÑ6FÐ5GÓHö
àð �J‰J×Óð
ˆð 
ô 	‰Ñ˜ Õ(ùò	
s   Á	A9c                 óŠ   •— | j                   |k7  ry | j                  j                  ||i«      | _        t        ‰| �  ||«       y r/   )r
   rŽ   Úrelabeled_clonerC   r   rt   s      €r   r   z#Expressions.rename_table_referencesê   s?   ø€ Ø�:‰:˜Ò"ØØ×+Ñ+×;Ñ;¸YÈ	Ð<RÓSˆÔÜ‰Ñ'¨	°9Õ=r   c                 ór  — | j                   |k7  ry t        | j                  «      }g | _        | j                  j
                  j                  |g«      D ][  }|j                  j                  |k(  r||j                  _        | j                  j                  |j                  j                  «       Œ] || _        y r/   )
r
   r   rŽ   r:   r�   r�   r‘   r’   r   Úappend)r	   r
   r   r   rŽ   rK   s         r   r   z$Expressions.rename_column_referencesð   s’   € Ø�:‰:˜ÒØÜ˜t×/Ñ/Ó0ˆØˆŒØ—=‘=×&Ñ&×0Ñ0°+°Ó?ò 	3ˆCØ�z‰z× Ñ  JÒ.Ø$.�—
‘
Ô!Ø�L‰L×Ñ §
¡
× 1Ñ 1Õ2ð	3ð 'ˆÕr   c                 óš   — | j                   j                  | j                  «      \  }}t        | j                  |«      }|t        |«      z  S r/   )r�   ÚcompilerŽ   Úmapr�   Útuple)r	   ÚsqlÚparamss      r   r(   zExpressions.__str__û   sA   € Ø—m‘m×+Ñ+¨D×,<Ñ,<Ó=‰ˆˆVÜ�T×%Ñ% vÓ.ˆØ”U˜6“]Ñ"Ð"r   )r"   r)   r*   r1   r   r   r(   rY   rZ   s   @r   r‹   r‹   ß   s   ø„ ô)ô>ò	'ö#r   r‹   N)r+   Úcopyr   r   r-   r7   r@   r\   ra   rh   ry   r‹   r   r   r   ú<module>rž      s€   ðñõ ÷!
ñ !
ôH+ˆIô +ô$5�5ô 5ô"
ˆlô 
ô0	M�ô 	Mô
�7ô 
ô.+E�\ô +Eô\$*�	ô $*ôN#�,õ #r   