§
    >xÅjh  ã            	       ó4  — d dl Z d dlZd dlmZmZ d dlmZ d dlZd dlZd dl	m
Z
  e j        e¦  «        Zdedz  dedz  fd„Zeedz   e
e¦  «        f         Zdedefd	„Zdedefd
„Zdedej        fd„Zdededefd„Zdededeeeef                  fd„ZdS )é    N)ÚPathÚPurePosixPath)Ú	Annotated)ÚAfterValidatorÚvÚreturnc                 óŠ  — | €d S |                       ¦   «         } | sd S |                      d¦  «        rt          d¦  «        ‚t          | ¦  «        }|                     ¦   «         rt          d¦  «        ‚d|j        v rt          d¦  «        ‚|                     ¦   «         }t          j        d|¦  «        st          d¦  «        ‚|S )Nú~zcannot start with '~'z%must be a relative path, not absolutez..z!cannot contain '..' path segmentsz[A-Za-z0-9._/ -]+zGcontains invalid characters (allowed: letters, numbers, space, / . _ -))	ÚstripÚ
startswithÚ
ValueErrorr   Úis_absoluteÚpartsÚas_posixÚreÚ	fullmatch)r   ÚpathÚ
normalizeds      úZC:\Projects\Historical\venv\Lib\site-packages\fastapi_cloud_cli/commands/deploy/archive.pyÚvalidate_app_directoryr      sÕ   € Ø€yØˆtà	�Š‰	Œ	€Aàð Øˆtà‡|‚|�CÑÔð 2ÝÐ0Ñ1Ô1Ð1å˜ÑÔ€Dà×ÒÑÔð BÝÐ@ÑAÔAÐAàˆtŒzÐÐÝÐ<Ñ=Ô=Ð=à—’‘”€JåŒ<Ð,¨jÑ9Ô9ð 
ÝØUñ
ô 
ð 	
ð Ðó    r   c                 ó   — | j         S ©N)Úname©r   s    r   Ú_get_app_namer   .   s
   € àŒ9Ðr   c                 ó²   ‡ — g d¢}t          ˆ fd„|D ¦   «         ¦  «        rdS ‰ j        dk    rdS ‰ j        dk    s‰ j                             d¦  «        rdS dS )N)z.venvÚ__pycache__z.mypy_cachez.pytest_cachez.gitz
.gitignoreú.fastapicloudignorec              3   ó*   •K  — | ]}|‰j         v V — Œd S r   )r   )Ú.0Úpartr   s     €r   ú	<genexpr>z(_should_exclude_entry.<locals>.<genexpr>>   s*   øè è € Ð
;Ð
; $ˆ4�4”:ÐÐ
;Ð
;Ð
;Ð
;Ð
;Ð
;r   Tz.pycz.envz.env.F)ÚanyÚsuffixr   r   )r   Úparts_to_excludes   ` r   Ú_should_exclude_entryr'   3   s€   ø€ ðð ð Ðõ Ð
;Ð
;Ð
;Ð
;Ð*:Ð
;Ñ
;Ô
;Ñ;Ô;ð Øˆtà„{�fÒÐØˆtà„y�FÒÐ˜dœi×2Ò2°7Ñ;Ô;ÐØˆtàˆ5r   c                 ó>   — t          j        | t          dgd¬¦  «        S )Nr   F)Úshould_exclude_entryÚadditional_ignore_pathsÚignore_hidden)ÚrignoreÚwalkr'   r   s    r   Ú_rignore_walkr.   J   s*   € ÝŒ<ØÝ2Ø!6Ð 7Øð	ñ ô ð r   Útar_pathc                 óö  — t                                d| ¦  «         t          | ¦  «        }t                                d|¦  «         d}t          j        |dd¬¦  «        5 }|D ]c}|                     ¦   «         rŒ|                     | ¦  «        }t                                d|¦  «         |                     ||¬¦  «         |d	z  }Œd	 d d d ¦  «         n# 1 swxY w Y   t                                d
|¦  «         |S )Nz&Starting archive creation for path: %szArchive will be created at: %sr   zw:zstF)ÚsparsezAdding %s to archive)Úarcnameé   z*Archive created successfully with %s files)ÚloggerÚdebugr.   ÚfastarÚopenÚis_dirÚrelative_toÚappend)r   r/   ÚfilesÚ
file_countÚtarÚfilenamer2   s          r   Úarchiver?   S   s5  € Ý
‡L‚LÐ9¸4Ñ@Ô@Ð@Ý˜$ÑÔ€Eå
‡L‚LÐ1°8Ñ<Ô<Ð<à€JÝ	Œ�X˜w¨uÐ	5Ñ	5Ô	5ð ¸Øð 	ð 	ˆHØ�ŠÑ Ô ð Øà×*Ò*¨4Ñ0Ô0ˆGÝ�LŠLÐ/°Ñ9Ô9Ð9Ø�JŠJ�x¨ˆJÑ1Ô1Ð1Ø˜!‰OˆJˆJð	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ‡L‚LÐ=¸zÑJÔJÐJØ€Os   ÁA'CÃCÃCÚthreshold_mbc                 ó   — |dz  dz  }g }t          | ¦  «        }|D ]`}|                     ¦   «         rŒ|                     ¦   «         j        }||k    r*|                     |                     | ¦  «        |f¦  «         Œat          |d„ d¬¦  «        S )Ni   c                 ó   — | d         S )Nr3   © )Úxs    r   ú<lambda>z"_get_large_files.<locals>.<lambda>s   s
   € ¨Q¨q¬T€ r   T)ÚkeyÚreverse)r.   r8   ÚstatÚst_sizer:   r9   Úsorted)r   r@   Úthreshold_bytesÚlarge_filesr;   r>   Ú	file_sizes          r   Ú_get_large_filesrN   h   s£   € Ø" TÑ)¨DÑ0€OØ€KÝ˜$ÑÔ€EØð Hð HˆØ�?Š?ÑÔð 	ØØ—M’M‘O”OÔ+ˆ	Ø�Ò&Ð&Ø×Ò × 4Ò 4°TÑ :Ô :¸IÐFÑGÔGÐGøå�+ > >¸4Ð@Ñ@Ô@Ð@r   )Úloggingr   Úpathlibr   r   Útypingr   r6   r,   Úpydanticr   Ú	getLoggerÚ__name__r4   Ústrr   ÚAppDirectoryr   Úboolr'   ÚWalkerr.   r?   ÚintÚlistÚtuplerN   rC   r   r   ú<module>r\      sœ  ðØ €€€Ø 	€	€	€	Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à	ˆÔ	˜8Ñ	$Ô	$€ð˜c D™jð ¨S°4©Zð ð ð ð ð< ˜˜t™ ^ ^Ð4JÑ%KÔ%KÐKÔL€ð˜ð  ð ð ð ð ð
 ð ¨ð ð ð ð ð.˜ð  ¤ð ð ð ð ð�$ð  $ð ¨4ð ð ð ð ð*A˜4ð A¨sð A°t¸EÀ$ÈÀ)Ô<LÔ7Mð Að Að Að Að Að Ar   