Ë
    qûàgI  ã                   ó�   — d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl	m
Z
mZ  ej                  d«      ZdZd„ Z G d„ d	e«      Zy)
é    N)ÚBaseCommandÚCommandError)ÚDEFAULT_DB_ALIASÚconnections)ÚAmbiguityErrorÚMigrationLoaderz\s+replaces\s*=\s*\[[^\]]+\]\s*z.pycc                 ó.   — | d t        t        «        dz   S )Nz.py)ÚlenÚPYC)Úpyc_fns    ú~/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django_extensions/management/commands/delete_squashed_migrations.pyÚpy_from_pycr      s   € Ø�*”Cœ“H�9Ð Ñ%Ð%ó    c                   ó,   — e Zd ZdZ	 	 d„ Zd„ Zd„ Zd„ Zy)ÚCommandz:Deletes left over migrations that have been replaced by a c                 óê   — |j                  dd¬«       |j                  dd dd¬«       |j                  dd	d
ddd¬«       |j                  dddd¬«       |j                  dt        dt        z  ¬«       y )NÚ	app_labelz@App label of the application to delete replaced migrations from.)ÚhelpÚsquashed_migration_nameú?zPThe squashed migration to replace. If not specified defaults to the first found.)ÚdefaultÚnargsr   z	--noinputz
--no-inputÚstore_falseÚinteractiveTz:Tells Django to NOT prompt the user for input of any kind.)ÚactionÚdestr   r   z	--dry-runÚ
store_trueFz*Do not actually delete or change any files)r   r   r   z
--databasezGNominates a database to run command for. Defaults to the "%s" database.)r   r   )Úadd_argumentr   )ÚselfÚparsers     r   Úadd_argumentszCommand.add_arguments   s¤   € Ø×ÑØØSð 	ô 	
ð 	×ÑØ%¨t¸3ðAð 	ô 	
ð
 	×ÑØ˜¨mÀ-ÐY]ØMð 	ô 	
ð 	×ÑØ °eØ=ð 	ô 	?ð 	×ÑØÔ"2ØZÔ]mÑmð 	õ 	
r   c                 óð	  — |d   | _         |d   | _        |d   | _        |d   }|d   }|d   }t        t        |   «      }||j
                  vrt        d|z  «      ‚d }|rE| j                  |||«      }|j                  sãt        d|j                  ›d	|j                  ›d
�«      ‚|j                  j                  |¬«      } |j                  |d   Ž }|j                  j                  |j                  |j                  f«      D �	�
cg c]&  \  }	}
|	|j                  k(  r|j                  |	|
«      ‘Œ( }}	}
||gz   }|D ]  }|j                  sŒ|} n |st        d|z  «      ‚g }|j                  D ]y  \  }	}
	 |j                  |	|
f   }t!        j"                  |j$                  «      }|j'                  |«       |j)                  t*        «      sŒ^t-        |«      }|j'                  |«       Œ{ | j                   dkD  s| j                  rj| j4                  j3                  | j6                  j9                  d«      «       |D ]   }| j4                  j3                  d|z  «       Œ" | j;                  «       sy |D ]$  }	 | j                  st=        j>                  |«       Œ& t!        j"                  |j$                  «      }|j)                  t*        «      rt-        |«      }tC        |«      5 }tE        |«      }d d d «       g }tG        «      D ]`  \  }}tH        jK                  |«      sŒ|j'                  |«       |dkD  r.||dz
     jM                  «       dk(  r|jO                  d|dz
  «        n |st        d|›d�«      ‚| j                   dkD  s| j                  ro| j4                  j3                  | j6                  j9                  d|d   ›tQ        |«      dkD  rdtS        |d   «      z   nd›d|›�«      «       | j;                  «       sy tU        |d¬«      D ]  }||= Œ tC        |d«      5 }| j                  s |j3                  djW                  |«      «       d d d «       y c c}
}	w # t.        $ r5 | j                   dkD  r"| j0                  j3                  d|	›d	|
›d�«       Y �Œ-w xY w# t@        $ r2 | j                   dkD  r| j0                  j3                  d|›d�«       Y �Œhw xY w# 1 sw Y   �ŒñxY w# 1 sw Y   y xY w)NÚ	verbosityr   Údry_runr   r   ÚdatabasezVApp '%s' does not have migrations (so delete_squashed_migrations on it makes no sense)zThe migration ú z is not a squashed migration.)Úappr   z-Cannot find a squashed migration in app '%s'.z!Couldn't find migration file for ú
z Will delete the following files:z - %szCouldn't delete é   Ú z(Couldn't find 'replaces =' line in file z%. Please finish cleaning up manually.zWill delete line z and z from file T)ÚreverseÚw),r#   r   r$   r   r   Úmigrated_appsr   Úfind_migrationÚreplacesr   ÚnameÚgraphÚ
leaf_nodesÚget_migrationÚforwards_planÚdisk_migrationsÚinspectÚgetfileÚ	__class__ÚappendÚendswithr   r   ÚKeyErrorÚstderrÚwriteÚstdoutÚstyleÚMIGRATE_HEADINGÚconfirmÚosÚremoveÚOSErrorÚopenÚlistÚ	enumerateÚREPLACES_REGEXÚmatchÚstripÚinsertr
   ÚstrÚsortedÚjoin)r   Úoptionsr   r   r%   ÚloaderÚsquashed_migrationr2   Ú	migrationÚalÚmnÚprevious_migrationsÚ
migrationsÚfiles_to_deleteÚpyc_fileÚpy_fileÚfnÚsquashed_migration_fnÚfpÚsquashed_migration_linesÚdelete_linesÚiÚlineÚline_nums                           r   ÚhandlezCommand.handle-   sú  € Ø  Ñ-ˆŒØ" =Ñ1ˆÔØ˜yÑ)ˆŒØ˜KÑ(ˆ	Ø")Ð*CÑ"DÐØ˜:Ñ&ˆô !¤¨XÑ!6Ó7ˆØ˜F×0Ñ0Ñ0Üð%Ø'0ñ1óð ð
 "ÐÙ"Ø!%×!4Ñ!4°V¸YÐH_Ó!`ÐØ%×.Ò.Ý"à'×1Ó1Ð3E×3JÓ3JðLóð ð
  Ÿ™×0Ñ0°YÐ0Ó?ˆJØ,˜×,Ñ,¨j¸©mÐ<ˆIð %Ÿl™l×8Ñ8¸)×:MÑ:MÈyÏ~É~Ð9^Ó_÷#á�B˜Ø˜×,Ñ,Ò,ð ×$Ñ$ R¨Õ,ð#Ðñ #ð
 -°	¨{Ñ:ˆJØ'ò �	Ø×%Ó%Ø)2Ð&Ùðñ
 &Ü"ØCØñ óð ð
 ˆØ(×1Ñ1ò 	4‰FˆB�ð4Ø"×2Ñ2°2°r°6Ñ:�	ô #Ÿ?™?¨9×+>Ñ+>Ó?�Ø×&Ñ& xÔ0Ø×$Ñ$¤SÕ)Ü)¨(Ó3�GØ#×*Ñ*¨7Õ3ð	4ð �>‰>˜AÒ ×!1Ò!1Ø�K‰K×Ñ˜dŸj™j×8Ñ8Ð9[Ó\Ô]Ø%ò 0�Ø—‘×!Ñ! '¨B¡,Õ/ð0ð —<‘<”>Øà!ò 	FˆBðFØ—|’|Ü—I‘I˜b”Møð	Fô !(§¡Ð0B×0LÑ0LÓ MÐØ ×)Ñ)¬#Ô.Ü$/Ð0EÓ$FÐ!ÜÐ'Ó(ð 	0¨BÜ'+¨B£xÐ$÷	0ð ˆÜ Ð!9Ó:ò 	‰GˆAˆtÜ×#Ñ# DÕ)Ø×#Ñ# AÔ&Ø�q’5Ð5°a¸!±eÑ<×BÑBÓDÈÒJØ ×'Ñ'¨¨1¨q©5Ô1Ùð	ñ Ýâ;PðSóð ð
 �>‰>˜AÒ ×!1Ò!1Ø�K‰K×Ñ˜dŸj™j×8Ò8à˜a’Ü36°|Ó3DÀqÒ3H�œ3˜|¨A™Ó/Ò/ÈbÑPÙ&ð(ó)ô *ð —<‘<”>Øä˜|°TÔ:ò 	3ˆHØ(¨Ñ2ð	3ô Ð'¨Ó-ð 	<°Ø—<’<Ø—‘˜Ÿ™Ð!9Ó:Ô;÷	<ð 	<ùóe#øô* ò 2Ø—>‘> AÒ%Ø—K‘K×%Ò%Ú)+ªRð'1ô 2úð2ûô0 ò FØ—>‘> AÒ%Ø—K‘K×%Ò%ÂÐ&DÔEúðFú÷	0ñ 	0ú÷:	<ð 	<úsB   Ä+QÅ7Q É7!R!Ë$SÐ$-S,Ñ :RÒRÒ!7SÓSÓS)Ó,S5c                 ó–   — | j                   r=d }|r|dvr0t        d«      }|sd}	 |dk(  S |d   j                  «       }|sŒ+|dvrŒ0|dk(  S y)NÚynzDo you wish to proceed? [yN] Únr   ÚyT)r   ÚinputÚlower)r   Úanswers     r   rA   zCommand.confirmž   si   € Ø×ÒØˆFÙ ¨dÑ 2ÜÐ>Ó?�ÙØ �FØð ˜S‘=Ð ð $ A™YŸ_™_Ó.�Fò  ¨dÒ 2ð ˜S‘=Ð Ør   c                 óš   — 	 |j                  ||«      S # t        $ r t        d|›d|›d�«      ‚t        $ r t        d|›d|›d�«      ‚w xY w)Nz!More than one migration matches 'z
' in app 'z'. Please be more specific.z"Cannot find a migration matching 'z' from app 'z'.)Úget_migration_by_prefixr   r   r;   )r   rP   r   r0   s       r   r.   zCommand.find_migration«   sa   € ð	Ø×1Ñ1°)¸TÓBÐBøÜò 	Ýâ$(ª)ð5óð ô ò 	Ýâ’yð"óð ð	ús	   ‚ ”6A
N)Ú__name__Ú
__module__Ú__qualname__r   r!   rb   rA   r.   © r   r   r   r      s#   „ ØG€DØGØ:ò
ò,o<òbór   r   )rB   r6   ÚreÚdjango.core.management.baser   r   Ú	django.dbr   r   Údjango.db.migrations.loaderr   r   ÚcompilerH   r   r   r   ro   r   r   ú<module>ru      s@   ðã 	Û Û 	ç Aß 3ß Gà�—‘Ð>Ó?€Ø€ò&ôeˆkõ er   