Ë
    ¹ûàg7<  ã                   óÖ   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlmZ d dlmZmZ d dlmZmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ  G d„ de«      Zy)é    N)Ú	find_spec)Úbuild_opener)Úsettings)ÚBaseCommandÚCommandError)Úfind_formattersÚhandle_extensionsÚrun_formatters)ÚContextÚEngine)Úarchive)Úparse_header_parameters)Úget_docs_versionc                   ó`   — e Zd ZdZg Zg d¢ZdZd„ Zdd„Zd„ Z	dd„Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTemplateCommandaÛ  
    Copy either a Django application layout template or a Django project
    layout template into the specified directory.

    :param style: A color style object (see django.core.management.color).
    :param app_or_project: The string 'app' or 'project'.
    :param name: The name of the application or project.
    :param directory: The directory to which the template should be copied.
    :param options: The additional variables passed to project or app templates
    )ÚhttpÚhttpsÚftp))z.py-tplz.pyc           	      ó"  — |j                  dd¬«       |j                  ddd¬«       |j                  dd	¬«       |j                  d
ddddgd¬«       |j                  ddddg d¬«       |j                  dddt        j                  ddd¬«       y )NÚnamez#Name of the application or project.)ÚhelpÚ	directoryú?zOptional destination directory)Únargsr   z
--templatez*The path or URL to load the template from.z--extensionz-eÚ
extensionsÚappendÚpyztThe file extension(s) to render (default: "py"). Separate multiple extensions with commas, or use -e multiple times.)ÚdestÚactionÚdefaultr   z--namez-nÚfilesz_The file name(s) to render. Separate multiple file names with commas, or use -n multiple times.z	--excludez-xÚ zbThe directory name(s) to exclude, in addition to .git and __pycache__. Can be used multiple times.)r   r    r   Úconstr   )Úadd_argumentÚargparseÚSUPPRESS)ÚselfÚparsers     ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/core/management/templates.pyÚadd_argumentszTemplateCommand.add_arguments.   sÒ   € Ø×Ñ˜FÐ)NÐÔOØ×ÑØ˜sÐ)Ið 	ô 	
ð 	×ÑØÐKð 	ô 	
ð 	×ÑØØØØØ�Fð!ð 	ô 		
ð 	×ÑØØØØØð5ð 	ô 	
ð 	×ÑØØØÜ×%Ñ%ØØð;ð 	õ 	
ó    Nc                 ó\  — || _         |dk(  rdnd| _        g | _        |d   | _        | j	                  |«       |€It
        j                  j                  t        j                  «       |«      }	 t        j                  |«       n�t
        j                  j                  t
        j                  j                  |«      «      }|dk(  r/| j	                  t
        j                  j                  |«      d«       t
        j                  j!                  |«      st        d|z  «      ‚t#        «       }t%        t'        |d   «      «      }g }	d	d
g}
|d   D ]-  }|	j)                  t+        d„ |j-                  d«      «      «       Œ/ |j/                  d«      x}r&|D ]!  }|
j1                  |j3                  «       «       Œ# | j                  dk\  r`| j4                  j7                  d|›ddj                  |«      ›�«       | j4                  j7                  d|›ddj                  |	«      ›�«       d|z  }d|z  }d|z  }d|z  }dj                  d„ |j9                  «       D «       «      }t;        i |¥||||||dt=        «       dt>        j@                  i¥d¬«      }tB        jD                  s(tC        jF                  «        t?        jH                  «        | jK                  |d   |«      }tM        |«      dz   }t        jN                  |«      D �]}  \  }}}||d  }|jQ                  ||«      }|r7t
        j                  j                  ||«      }t        j                  |d ¬!«       |d d  D ]E  }d|vr)|jS                  d"«      s|d
k(  sŒ|jU                  |«       Œ0||
v sŒ5|jU                  |«       ŒG |D �]Ó  }|jW                  d#«      rŒt
        j                  j                  ||«      }t
        j                  j                  |||jQ                  ||«      «      }| jX                  D ],  \  } }!|jW                  | «      sŒ|j[                  | «      |!z   } n t
        j                  j!                  |«      rt        |›d$| j                  ›d%|›d&�«      ‚|jW                  |«      s||	v ryt]        |d'¬(«      5 }"|"j_                  «       }#d d d «       ta        «       jc                  #«      }$|$je                  |«      }#t]        |d)d'¬(«      5 }%|%j7                  |#«       d d d «       ntg        jh                  ||«       | j                  dk\  r| j4                  j7                  d*|z  «       	 | jk                  ||«       | jm                  |«       �ŒÖ �Œ€ | j                  r…| j                  dk\  r| j4                  j7                  d,«       | j                  D ]L  }&t
        j                  ju                  |&«      rt        jT                  |&«       Œ8tg        jv                  |&«       ŒN ty        |gfi |¤Ž y # t        $ r t        d|z  «      ‚t        $ r}t        |«      ‚d }~ww xY w# 1 sw Y   �Œ›xY w# 1 sw Y   �Œ?xY w# t        $ r7 | jn                  j7                  d+|z  | jp                  jr                  «       Y �Œw xY w)-NÚappÚanÚaÚ	verbosityz'%s' already existsr   zBDestination directory '%s' does not exist, please create it first.r   z.gitÚ__pycache__r!   c                 ó"   — | j                  «       S ©N)Ústrip)Úxs    r)   ú<lambda>z(TemplateCommand.handle.<locals>.<lambda>y   s   € ¨Q¯W©W«Y€ r+   ú,Úexcludeé   z
Rendering z! template files with extensions: z, z  template files with filenames: z%s_namez%s_templatez%s_directoryzcamel_case_%s_namer"   c              3   ó,   K  — | ]  }|d k7  sŒ	|–— Œ y­w)Ú_N© )Ú.0r5   s     r)   ú	<genexpr>z)TemplateCommand.handle.<locals>.<genexpr>Š   s   è ø€ Ò"G¨¸aÀ3»h¤1Ñ"Gùs   ‚
�Údocs_versionÚdjango_versionF)Ú
autoescapeÚtemplateé   T)Úexist_okú.)z.pyoz.pycz	.py.classz already exists. Overlaying ú z< into an existing directory won't replace conflicting files.zutf-8)ÚencodingÚwzCreating %szkNotice: Couldn't set permission bits on %s. You're probably using an uncommon filesystem setup. No problem.zCleaning up temporary files.)=Úapp_or_projectÚa_or_anÚpaths_to_remover0   Úvalidate_nameÚosÚpathÚjoinÚgetcwdÚmakedirsÚFileExistsErrorr   ÚOSErrorÚabspathÚ
expanduserÚbasenameÚexistsr   Útupler	   ÚextendÚmapÚsplitÚgetr   r4   ÚstdoutÚwriteÚtitler   r   ÚdjangoÚ__version__r   Ú
configuredÚ	configureÚsetupÚhandle_templateÚlenÚwalkÚreplaceÚ
startswithÚremoveÚendswithÚrewrite_template_suffixesÚremovesuffixÚopenÚreadr   Úfrom_stringÚrenderÚshutilÚcopyfileÚapply_umaskÚmake_writeableÚstderrÚstyleÚNOTICEÚisfileÚrmtreer
   )'r'   rI   r   ÚtargetÚoptionsÚtop_dirÚeÚformatter_pathsr   Úextra_filesÚexcluded_directoriesÚfiler8   r   Ú	base_nameÚbase_subdirÚbase_directoryÚcamel_case_nameÚcamel_case_valueÚcontextÚtemplate_dirÚprefix_lengthÚrootÚdirsr!   Ú	path_restÚrelative_dirÚ
target_dirÚdirnameÚfilenameÚold_pathÚnew_pathÚ
old_suffixÚ
new_suffixÚtemplate_fileÚcontentrB   Únew_fileÚpath_to_removes'                                          r)   ÚhandlezTemplateCommand.handleV   s
  € Ø,ˆÔØ-°Ò6‘t¸CˆŒØ!ˆÔØ  Ñ-ˆŒà×Ñ˜4Ô ð ˆ>Ü—g‘g—l‘l¤2§9¡9£;°Ó5ˆGð&Ü—‘˜GÕ$ô —g‘g—o‘o¤b§g¡g×&8Ñ&8¸Ó&@ÓAˆGØ Ò&Ø×"Ñ"¤2§7¡7×#3Ñ#3°GÓ#<¸kÔJÜ—7‘7—>‘> 'Ô*Ü"ð5Ø7>ñ?óð ô *Ó+ˆäÔ,¨W°\Ñ-BÓCÓDˆ
ØˆØ &¨Ð6ÐØ˜GÑ$ò 	JˆDØ×ÑœsÑ#6¸¿
¹
À3»ÓHÕIð	Jà—k‘k )Ó,Ð,ˆ7Ð,Ø$ò ?�	Ø$×+Ñ+¨I¯O©OÓ,=Õ>ð?à�>‰>˜QÒØ�K‰K×Òâ! 4§9¡9¨ZÔ#8ð:ôð �K‰K×Òâ! 4§9¡9¨[Ô#9ð;ôð  Ñ.ˆ	Ø# nÑ4ˆØ'¨.Ñ8ˆØ.°Ñ?ˆØŸ7™7Ñ"G¨d¯j©j«lÔ"GÓGÐäðØðà˜4Ø ØÐ!1ØÔ 0Ó 2Ø ¤&×"4Ñ"4ñð ô

ˆô ×"Ò"Ü×ÑÔ Ü�L‰LŒNà×+Ñ+¨G°JÑ,?ÀÓMˆÜ˜LÓ)¨AÑ-ˆä!#§¡¨Ó!6ó =	ÑˆD�$˜Ø˜]˜^Ð,ˆIØ$×,Ñ,¨Y¸Ó=ˆLÙÜŸW™WŸ\™\¨'°<Ó@�
Ü—‘˜J°Õ6à¡˜7ò )�Ø GÑ+Ø×)Ñ)¨#Ô.°'¸]Ó2JØŸ™ GÕ,ØÐ 4Ò4Ø—K‘K Õ(ð)ð "ó /�Ø×$Ñ$Ð%BÔCàÜŸ7™7Ÿ<™<¨¨hÓ7�ÜŸ7™7Ÿ<™<Ø˜\¨8×+;Ñ+;¸IÀtÓ+Ló�ð /3×.LÑ.Lò Ñ*�J 
Ø×(Ñ(¨Õ4Ø#+×#8Ñ#8¸Ó#DÀzÑ#Q˜Ùðô
 —7‘7—>‘> (Ô+Ü&ò %Ø ŸL›LÚ*ðóð ð ×$Ñ$ ZÔ0°HÀÑ4KÜ˜h°Ô9ð 7¸]Ø"/×"4Ñ"4Ó"6˜÷7ä%›x×3Ñ3°GÓ<�HØ&Ÿo™o¨gÓ6�GÜ˜h¨°gÔ>ð 0À(Ø Ÿ™ wÔ/÷0ð 0ô —O‘O H¨hÔ7à—>‘> QÒ&Ø—K‘K×%Ñ% m°hÑ&>Ô?ð	Ø×$Ñ$ X¨xÔ8Ø×'Ñ'¨Ö1òQ/ð=	ð~ ×ÒØ�~‰~ Ò"Ø—‘×!Ñ!Ð"@ÔAØ"&×"6Ñ"6ò 2�Ü—7‘7—>‘> .Ô1Ü—I‘I˜nÕ-ä—M‘M .Õ1ð	2ô 	˜�yÑ4 OÓ4øôK #ò DÜ"Ð#8¸7Ñ#BÓCÐCÜò &Ü" 1“oÐ%ûð&ú÷H7ñ 7ú÷0ñ 0ûô ò Ø—K‘K×%Ñ%ð#à%-ñ.ð Ÿ
™
×)Ñ)÷	ðúsB   Á-X Ò'YÓ8YÕ#Y+ØYØ>Y	Ù	YÙYÙY(Ù+<Z+Ú*Z+c                 óf  — |€2t         j                  j                  t        j                  d   d|«      S |j                  d«      }t         j                  j                  |«      }t         j                  j                  |«      }t         j                  j                  |«      r|S | j                  |«      r| j                  |«      }nt         j                  j                  |«      }t         j                  j                  |«      r| j                  |«      S t        d| j                  ›d|›d�«      ‚)z«
        Determine where the app or project templates are.
        Use django.__path__[0] as the default because the Django install
        directory isn't known.
        r   Úconfzfile://zcouldn't handle z
 template rE   )rM   rN   rO   r`   Ú__path__ÚremoveprefixrU   ÚnormpathÚisdirÚis_urlÚdownloadrT   rW   Úextractr   rI   )r'   rB   ÚsubdirÚexpanded_templateÚabsolute_paths        r)   re   zTemplateCommand.handle_templateê   sã   € ð ÐÜ—7‘7—<‘<¤§¡°Ñ 2°F¸FÓCÐCà×,Ñ,¨YÓ7ˆHÜ "§¡× 2Ñ 2°8Ó <ÐÜ "§¡× 0Ñ 0Ð1BÓ CÐÜ�w‰w�}‰}Ð.Ô/Ø(Ð(Ø�{‰{˜8Ô$à $§¡¨hÓ 7‘ä "§¡§¡Ð0AÓ B�Ü�w‰w�~‰~˜mÔ,Ø—|‘| MÓ2Ð2åØ15×1DÓ1DÂhÐOó
ð 	
r+   c                 óP  — |€0t        dj                  | j                  | j                  ¬«      «      ‚|j	                  «       s't        dj                  || j                  |¬«      «      ‚t        |«      �2t        dj                  || j                  | j                  |¬«      «      ‚y )Nz you must provide {an} {app} name)r.   r-   zX'{name}' is not a valid {app} {type}. Please make sure the {type} is a valid identifier.)r   r-   Útypez�'{name}' conflicts with the name of an existing Python module and cannot be used as {an} {app} {type}. Please try another {type}.)r   r.   r-   r¨   )r   ÚformatrJ   rI   Úisidentifierr   )r'   r   Úname_or_dirs      r)   rL   zTemplateCommand.validate_name  s½   € Øˆ<ÜØ2×9Ñ9Ø—|‘|Ø×+Ñ+ð :ó óð ð × Ñ Ô"Üð0ß06±ØØ×+Ñ+Ø$ð 17ó 1óð ô �T‹?Ð&Üð"ç"(¡&ØØ—|‘|Ø×+Ñ+Ø$ð	 #)ó #ó	ð 	ð 'r+   c           	      ó.  — d„ }d| j                   z  }t        j                  |d¬«      }| j                  j	                  |«        ||«      \  }}| j
                  dk\  r| j                  j                  d|z  «       t        j                  j                  ||«      }t        «       }ddt        j                  › �fg|_        	 |j                  |«      5 }	t        |d	«      5 }
|	j!                  «       }|
j                  |	j#                  «       «       d
d
d
«       d
d
d
«       |j)                  d«      d   }d   }|r$t+        |«      \  }}|j-                  d«      xs |}n|}| j/                  |«      d   }|d   }|s|rt1        j2                  |«      }|r||z  }||k7  r8t        j                  j                  ||«      }t5        j6                  ||«       |S |S # 1 sw Y   ŒÊxY w# 1 sw Y   ŒÎxY w# t$        $ r}t'        d|›d|›d|›�«      ‚d
}~ww xY w)zB
        Download the given URL and return the file name.
        c                 óŒ   — | j                  d«      }|j                  d«      d   }| j                  d«      r	|dz   }||fS | }||fS )Nú/éÿÿÿÿ)Úrstripr[   rk   )ÚurlÚtmpr‘   Údisplay_urls       r)   Úcleanup_urlz-TemplateCommand.download.<locals>.cleanup_url(  sU   € Ø—*‘*˜S“/ˆCØ—y‘y “~ bÑ)ˆHØ�|‰|˜CÔ Ø! C™i�ð ˜[Ð(Ð(ð "�Ø˜[Ð(Ð(r+   údjango_%s_template_Ú	_download©ÚprefixÚsuffixr9   zDownloading %sz
User-AgentzDjango/ÚwbNzcouldn't download URL ú to ú: r®   r¯   zcontent-dispositionr‘   rC   zcontent-type)rI   ÚtempfileÚmkdtemprK   r   r0   r]   r^   rM   rN   rO   r   r`   ra   Ú
addheadersrn   Úinforo   rS   r   r[   r   r\   ÚsplitextÚ	mimetypesÚguess_extensionrr   Úmove)r'   r±   r´   r¸   Útempdirr‘   r³   Úthe_pathÚopenerÚsourcer{   Úheadersr~   Ú	used_nameÚcontent_dispositionr;   ÚparamsÚguessed_filenameÚextÚcontent_typeÚguessed_paths                        r)   r¢   zTemplateCommand.download#  s  € ò
	)ð '¨×)<Ñ)<Ñ<ˆÜ×"Ñ"¨&¸ÔEˆØ×Ñ×#Ñ# GÔ,Ù +¨CÓ 0Ñˆ�+à�>‰>˜QÒØ�K‰K×ÑÐ.°Ñ<Ô=ä—7‘7—<‘< ¨Ó2ˆÜ“ˆØ*¨g´f×6HÑ6HÐ5IÐ,JÐKÐLˆÔð	Ø—‘˜SÓ!ð , V¬T°(¸DÓ-Að ,ÀVØ Ÿ+™+›-�Ø—‘˜VŸ[™[›]Ô+÷,÷ ,ð —N‘N 3Ó'¨Ñ+ˆ	ð &Ð&;Ñ<ÐÙÜ/Ð0CÓD‰IˆAˆvØ%Ÿz™z¨*Ó5ÒB¸Ñà(Ðð �m‰mÐ,Ó-¨aÑ0ˆØ˜~Ñ.ˆÙ‘|Ü×+Ñ+¨LÓ9ˆCÙØ  CÑ'Ð ð Ð(Ò(ÜŸ7™7Ÿ<™<¨Ð1AÓBˆLÜ�K‰K˜ ,Ô/ØÐð ˆ÷E,ð ,ú÷ ,ð ,ûô ò 	ÝÚ8;ºXÁqÐIóð ûð	úsH   ÃG2 ÃG&Ã!0GÄG&ÄG2 ÇG#	ÇG&Ç&G/Ç+G2 Ç2	HÇ;HÈHc                 ó’   — t        j                  |«      \  }}|j                  «       j                  d«      r|dd |z   }|dd }||fS )z@
        Like os.path.splitext, but takes off .tar, too
        z.taréüÿÿÿN)Ú	posixpathrÁ   Úlowerrk   )r'   rÆ   ÚbaserÎ   s       r)   rÁ   zTemplateCommand.splitexta  sP   € ô ×&Ñ& xÓ0‰	ˆˆcØ�:‰:‹<× Ñ  Ô(Ø�r�s�)˜c‘/ˆCØ˜˜�9ˆDØ�SˆyÐr+   c           	      óz  — d| j                   z  }t        j                  |d¬«      }| j                  j	                  |«       | j
                  dk\  r| j                  j                  d|z  «       	 t        j                  ||«       |S # t        j                  t        f$ r}t        d|›d|›d|›�«      ‚d	}~ww xY w)
zŠ
        Extract the given file to a temporary directory and return
        the path of the directory with the extracted content.
        rµ   Ú_extractr·   r9   zExtracting %szcouldn't extract file r»   r¼   N)rI   r½   r¾   rK   r   r0   r]   r^   r   r£   ÚArchiveExceptionrS   r   )r'   r‘   r¸   rÅ   r~   s        r)   r£   zTemplateCommand.extractk  s§   € ð
 '¨×)<Ñ)<Ñ<ˆÜ×"Ñ"¨&¸ÔDˆØ×Ñ×#Ñ# GÔ,Ø�>‰>˜QÒØ�K‰K×Ñ˜o°Ñ8Ô9ð	Ü�O‰O˜H gÔ.ØˆNøÜ×(Ñ(¬'Ð2ò 	ÝÚ8@Â'É1ÐMóð ûð	ús   Á0B ÂB:Â!B5Â5B:c                 ón   — d|vry|j                  dd«      d   j                  «       }|| j                  v S )z)Return True if the name looks like a URL.ú:FrC   r   )r[   rÔ   Úurl_schemes)r'   rB   Úschemes      r)   r¡   zTemplateCommand.is_url}  s<   € à�hÑØØ—‘  QÓ'¨Ñ*×0Ñ0Ó2ˆØ˜×)Ñ)Ð)Ð)r+   c                 óð   — t        j                  d«      }t        j                  |«       t        j                  t        j                  |«      j                  «      }t        j
                  ||| z  «       y )Nr   )rM   ÚumaskÚstatÚS_IMODEÚst_modeÚchmod)r'   r’   r“   Úcurrent_umaskÚcurrent_modes        r)   rt   zTemplateCommand.apply_umask„  sM   € ÜŸ™ ›ˆÜ
�‰�ÔÜ—|‘|¤B§G¡G¨HÓ$5×$=Ñ$=Ó>ˆÜ
�‰�˜<¨=¨.Ñ8Õ9r+   c                 ó  — t        j                  |t         j                  «      s\t        j                  |«      }t        j                  |j
                  «      t        j                  z  }t        j                  ||«       yy)zb
        Make sure that the file is writeable.
        Useful if our source is read-only.
        N)rM   ÚaccessÚW_OKrß   rà   rá   ÚS_IWUSRrâ   )r'   r‘   ÚstÚnew_permissionss       r)   ru   zTemplateCommand.make_writeableŠ  sR   € ô
 �y‰y˜¤2§7¡7Ô+Ü—‘˜Ó"ˆBÜ"Ÿl™l¨2¯:©:Ó6¼¿¹ÑEˆOÜ�H‰H�X˜Õ/ð ,r+   r3   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úrequires_system_checksrÛ   rl   r*   rš   re   rL   r¢   rÁ   r£   r¡   rt   ru   r<   r+   r)   r   r      sR   „ ñ	ð  Ðâ*€Kð!Ðò
&
óPR5òh
ó4ò><ò|òò$*ò:ó0r+   r   )r%   rÂ   rM   rÓ   rr   rß   r½   Úimportlib.utilr   Úurllib.requestr   r`   Údjango.confr   Údjango.core.management.baser   r   Údjango.core.management.utilsr   r	   r
   Údjango.templater   r   Údjango.utilsr   Údjango.utils.httpr   Údjango.utils.versionr   r   r<   r+   r)   ú<module>rù      sO   ðÛ Û Û 	Û Û Û Û Ý $Ý 'ã Ý  ß A÷ñ ÷
 ,Ý  Ý 5Ý 1ôy0�kõ y0r+   