Ë
    ¹ûàg  ã                   ób   — d dl mZ ddlmZmZ  G d„ de«      Z G d„ de«      Z G d„ d	e«      Zy
)é    )Úrouteré   )Ú	OperationÚOperationCategoryc                   óV   — e Zd ZdZej
                  ZddgZdd„Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)ÚSeparateDatabaseAndStatea!  
    Take two lists of operations - ones that will be used for the database,
    and ones that will be used for the state change. This allows operations
    that don't support state change to have it applied, or have operations
    that affect the state or not the database, or so on.
    Údatabase_operationsÚstate_operationsNc                 ó0   — |xs g | _         |xs g | _        y ©N)r	   r
   )Úselfr	   r
   s      úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/db/migrations/operations/special.pyÚ__init__z!SeparateDatabaseAndState.__init__   s   € Ø#6Ò#<¸"ˆÔ Ø 0Ò 6°BˆÕó    c                 ó¤   — i }| j                   r| j                   |d<   | j                  r| j                  |d<   | j                  j                  g |fS )Nr	   r
   )r	   r
   Ú	__class__Ú__qualname__©r   Úkwargss     r   Údeconstructz$SeparateDatabaseAndState.deconstruct   sR   € ØˆØ×#Ò#Ø,0×,DÑ,DˆFÐ(Ñ)Ø× Ò Ø)-×)>Ñ)>ˆFÐ%Ñ&Ø—‘×+Ñ+¨R°Ð8Ð8r   c                 óJ   — | j                   D ]  }|j                  ||«       Œ y r   ©r
   Ústate_forwards©r   Ú	app_labelÚstateÚstate_operations       r   r   z'SeparateDatabaseAndState.state_forwards   ó'   € Ø#×4Ñ4ò 	=ˆOØ×*Ñ*¨9°eÕ<ñ	=r   c                 ó–   — | j                   D ]:  }|j                  «       }|j                  ||«       |j                  ||||«       |}Œ< y r   )r	   Úcloner   Údatabase_forwards)r   r   Úschema_editorÚ
from_stateÚto_stateÚdatabase_operations         r   r!   z*SeparateDatabaseAndState.database_forwards!   sT   € à"&×":Ñ":ò 	"ÐØ!×'Ñ'Ó)ˆHØ×-Ñ-¨i¸ÔBØ×0Ñ0Ø˜=¨*°hôð "‰Jñ	"r   c                 óâ   — i }| j                   D ])  }|||<   |j                  «       }|j                  ||«       Œ+ t        | j                   «      D ]  }|}||   }|j	                  ||||«       Œ y r   )r	   r    r   ÚreversedÚdatabase_backwards)r   r   r"   r#   r$   Ú	to_statesÚdbopr%   s           r   r(   z+SeparateDatabaseAndState.database_backwards+   s…   € àˆ	Ø×,Ñ,ò 	5ˆDØ&ˆI�d‰OØ—~‘~Ó'ˆHØ×Ñ 	¨8Õ4ð	5ô #+¨4×+CÑ+CÓ"Dò 	ÐØ!ˆJØ Ð!3Ñ4ˆHØ×1Ñ1Ø˜=¨*°hõñ	r   c                  ó   — y)Nz(Custom state/database change combination© ©r   s    r   Údescribez!SeparateDatabaseAndState.describe<   s   € Ø9r   )NN)Ú__name__Ú
__module__r   Ú__doc__r   ÚMIXEDÚcategoryÚserialization_expand_argsr   r   r   r!   r(   r.   r,   r   r   r   r      s>   „ ñð !×&Ñ&€HØ!6Ð8JÐ KÐó7ò9ò=ò"òó":r   r   c                   ój   — e Zd ZdZej
                  ZdZ	 dd„Zd„ Z	e
d„ «       Zd„ Zd„ Zd	„ Zd
„ Zd„ Zy)ÚRunSQLzß
    Run some raw SQL. A reverse SQL statement may be provided.

    Also accept a list of operations that represent the state change effected
    by this SQL change, in case it's custom column/table creation/deletion.
    Ú Nc                 óZ   — || _         || _        |xs g | _        |xs i | _        || _        y r   )ÚsqlÚreverse_sqlr
   ÚhintsÚelidable)r   r9   r:   r
   r;   r<   s         r   r   zRunSQL.__init__K   s2   € ð ˆŒØ&ˆÔØ 0Ò 6°BˆÔØ’[˜bˆŒ
Ø ˆ�r   c                 óò   — d| j                   i}| j                  �| j                  |d<   | j                  r| j                  |d<   | j                  r| j                  |d<   | j                  j
                  g |fS )Nr9   r:   r
   r;   )r9   r:   r
   r;   r   r   r   s     r   r   zRunSQL.deconstructT   su   € à�4—8‘8ð
ˆð ×ÑÐ'Ø$(×$4Ñ$4ˆF�=Ñ!Ø× Ò Ø)-×)>Ñ)>ˆFÐ%Ñ&Ø�:Š:Ø"Ÿj™jˆF�7‰OØ—‘×+Ñ+¨R°Ð8Ð8r   c                 ó   — | j                   d uS r   )r:   r-   s    r   Ú
reversiblezRunSQL.reversible`   s   € à×Ñ tÐ+Ð+r   c                 óJ   — | j                   D ]  }|j                  ||«       Œ y r   r   r   s       r   r   zRunSQL.state_forwardsd   r   r   c                 ó¨   — t        j                  |j                  j                  |fi | j                  ¤Žr| j                  || j                  «       y y r   )r   Úallow_migrateÚ
connectionÚaliasr;   Ú_run_sqlr9   ©r   r   r"   r#   r$   s        r   r!   zRunSQL.database_forwardsh   sF   € Ü×ÑØ×$Ñ$×*Ñ*¨Iñ
Ø9=¿¹ò
ð �M‰M˜-¨¯©Õ2ð
r   c                 óÖ   — | j                   €t        d«      ‚t        j                  |j                  j
                  |fi | j                  ¤Žr| j                  || j                   «       y y ©Nz!You cannot reverse this operation)r:   ÚNotImplementedErrorr   rB   rC   rD   r;   rE   rF   s        r   r(   zRunSQL.database_backwardsn   s`   € Ø×ÑÐ#Ü%Ð&IÓJÐJÜ×ÑØ×$Ñ$×*Ñ*¨Iñ
Ø9=¿¹ò
ð �M‰M˜-¨×)9Ñ)9Õ:ð
r   c                  ó   — y)NzRaw SQL operationr,   r-   s    r   r.   zRunSQL.describev   s   € Ø"r   c                 ó„  — t        |t        t        f«      rW|D ]Q  }d }t        |t        t        f«      r$t        |«      }|dk(  r|\  }}nt	        d|z  «      ‚|j                  ||¬«       ŒS y |t        j                  k7  r@|j                  j                  j                  |«      }|D ]  }|j                  |d ¬«       Œ y y )Né   zExpected a 2-tuple but got %d)Úparams)Ú
isinstanceÚlistÚtupleÚlenÚ
ValueErrorÚexecuter6   ÚnooprC   ÚopsÚprepare_sql_script)r   r"   Úsqlsr9   rM   ÚelementsÚ
statementsÚ	statements           r   rE   zRunSQL._run_sqly   sÀ   € Ü�dœT¤5˜MÔ*Øò :�Ø�Ü˜c¤D¬% =Ô1Ü" 3›x�HØ 1’}Ø&)™˜™Vä(Ð)HÈ8Ñ)SÓTÐTØ×%Ñ% c°&Ð%Õ9ñ:ð ”V—[‘[Ò Ø&×1Ñ1×5Ñ5×HÑHÈÓNˆJØ'ò >�	Ø×%Ñ% i¸Ð%Õ=ñ>ð !r   ©NNNF)r/   r0   r   r1   r   ÚSQLr3   rT   r   r   Úpropertyr?   r   r!   r(   r.   rE   r,   r   r   r6   r6   @   sW   „ ñð !×$Ñ$€HØ€Dð RWó!ò
9ð ñ,ó ð,ò=ò3ò;ò#ó>r   r6   c                   ót   — e Zd ZdZej
                  ZdZ	 dd„Zd„ Z	e
d„ «       Zd„ Zd„ Zd	„ Zd
„ Zed„ «       Zy)Ú	RunPythonzS
    Run Python code in a context suitable for doing versioned ORM operations.
    FNc                 ó¾   — || _         t        |«      st        d«      ‚|| _        |€d | _        nt        |«      st        d«      ‚|| _        |xs i | _        || _        y )Nz*RunPython must be supplied with a callablez2RunPython must be supplied with callable arguments)ÚatomicÚcallablerR   ÚcodeÚreverse_coder;   r<   )r   rc   rd   ra   r;   r<   s         r   r   zRunPython.__init__’   sa   € ð ˆŒä˜Œ~ÜÐIÓJÐJØˆŒ	àÐØ $ˆDÕä˜LÔ)Ü Ð!UÓVÐVØ ,ˆDÔØ’[˜bˆŒ
Ø ˆ�r   c                 óò   — d| j                   i}| j                  �| j                  |d<   | j                  �| j                  |d<   | j                  r| j                  |d<   | j                  j
                  g |fS )Nrc   rd   ra   r;   )rc   rd   ra   r;   r   r   r   s     r   r   zRunPython.deconstruct¤   ss   € à�D—I‘Ið
ˆð ×ÑÐ(Ø%)×%6Ñ%6ˆF�>Ñ"Ø�;‰;Ð"Ø#Ÿ{™{ˆF�8ÑØ�:Š:Ø"Ÿj™jˆF�7‰OØ—‘×+Ñ+¨R°Ð8Ð8r   c                 ó   — | j                   d uS r   )rd   r-   s    r   r?   zRunPython.reversible°   s   € à× Ñ ¨Ð,Ð,r   c                  ó   — y r   r,   )r   r   r   s      r   r   zRunPython.state_forwards´   s   € ð 	r   c                 óÈ   — |j                  «        t        j                  |j                  j                  |fi | j
                  ¤Žr| j                  |j                  |«       y y r   )Úclear_delayed_apps_cacher   rB   rC   rD   r;   rc   ÚappsrF   s        r   r!   zRunPython.database_forwards¹   sT   € ð 	×+Ñ+Ô-Ü×ÑØ×$Ñ$×*Ñ*¨Iñ
Ø9=¿¹ò
ð �I‰I�j—o‘o }Õ5ð
r   c                 óÖ   — | j                   €t        d«      ‚t        j                  |j                  j
                  |fi | j                  ¤Žr| j                  |j                  |«       y y rH   )rd   rI   r   rB   rC   rD   r;   rj   rF   s        r   r(   zRunPython.database_backwardsÆ   s`   € Ø×ÑÐ$Ü%Ð&IÓJÐJÜ×ÑØ×$Ñ$×*Ñ*¨Iñ
Ø9=¿¹ò
ð ×Ñ˜jŸo™o¨}Õ=ð
r   c                  ó   — y)NzRaw Python operationr,   r-   s    r   r.   zRunPython.describeÎ   s   € Ø%r   c                  ó   — y r   r,   )rj   r"   s     r   rT   zRunPython.noopÑ   s   € àr   r[   )r/   r0   r   r1   r   ÚPYTHONr3   Úreduces_to_sqlr   r   r]   r?   r   r!   r(   r.   ÚstaticmethodrT   r,   r   r   r_   r_   Š   sf   „ ñð !×'Ñ'€HØ€Nð JOó!ò$
9ð ñ-ó ð-òò
6ò>ò&ð ñó ñr   r_   N)Ú	django.dbr   Úbaser   r   r   r6   r_   r,   r   r   ú<module>rs      s5   ðÝ ç .ô7:˜yô 7:ôtG>ˆYô G>ôTI�	õ Ir   