HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/docker/utils/__pycache__/build.cpython-310.pyc
o

�hJ �@s�ddlZddlZddlZddlZddlZddlmZddlmZer'e�d�ne�d�Z	e�d�Z
d	ed
efdd�Z
d#dd�Zd$dd�Zdd�Z	
	d%dd�Zdd�Zdd�Zdd�Zd&dd�ZGdd �d �ZGd!d"�d"�ZdS)'�N�)�IS_WINDOWS_PLATFORM�)�fnmatchz/|\\�/zy^[a-z0-9]+((\.|_|__|-+)[a-z0-9]+)*(?::[0-9]+)?(/[a-z0-9]+((\.|_|__|-+)[a-z0-9]+)*)*(:[a-zA-Z0-9_][a-zA-Z0-9._-]{0,127})?$�tag�returncCstt�|��S�N)�bool�_TAG�match)r�r
�E/usr/local/CyberCP/lib/python3.10/site-packages/docker/utils/build.py�	match_tagsrFcCsvtj�|�}|p	g}|p
d}g}|ddur)d�|pdg|dg�}d|f|g}ttt|||dd��||||d�S)N)NNr�
z
.dockerignorer)�
dockerfile)�files�root�fileobj�gzip�extra_files)�os�path�abspath�join�create_archive�sorted�
exclude_paths)r�excluderrrrr�dockerignore_contentsr
r
r�tars���r cCs2|durd}|�d|���t|�}t|�|��S)a	
    Given a root directory path and a list of .dockerignore patterns, return
    an iterator of all paths (both regular files and directories) in the root
    directory that do *not* match any of the patterns.

    All paths returned are relative to the root.
    N�
Dockerfile�!)�append�PatternMatcher�set�walk)r�patternsr�pmr
r
rr)s
	rc	CsTg}t�|�D] \}}}||D]}tj�||�}|�|�|dd��d��qq|S)N�rr)rr&rrr#�replace�lstrip)rr�dirname�dirnames�fnames�filename�longpathr
r
r�build_file_list:s��r1cCs�|pg}|s
t��}tj|rdnd|d�}|durt|�}dd�|D�}|D]p}||vr-q&tj�||�}|j||d�}	|	dur@q&|	j	dksJ|	j	dkrPt
|	j	�|	_	trZ|	jd	@d
B|	_|	�
�r�zt|d��}
|�|	|
�Wd�n1suwYWq&ty�}ztd|���|�d}~ww|�|	d�q&|D]\}}
t�|�}|
�d
�}t|�|_|�|t�|��q�|��|�d�|S)Nzw:gz�w��modercSsh|]}|d�qS)rr
)�.0�er
r
r�	<setcomp>N�z!create_archive.<locals>.<setcomp>)�arcnamerl��i��I�rbzCan not read file in context: zutf-8)�tempfile�NamedTemporaryFile�tarfile�openr1rrr�
gettarinfo�mtime�intrr4�isfile�addfile�OSError�TarInfo�encode�len�size�io�BytesIO�close�seek)rrrrr�t�extra_namesr�	full_path�i�f�oe�name�contents�info�contents_encodedr
r
rrFsR������



rcCs�t��}tjd|d�}t|tj�rt�d�}td��t|tj	�r2t�d�}t
|���|_|�
d�n|j|dd�}|�||�|��|�
d�|S)Nr2r3r!zCPlease use io.BytesIO to create in-memory Dockerfiles with Python 3r)rr9)r<r=r>r?�
isinstancerJ�StringIOrF�	TypeErrorrKrH�getvaluerIrMr@rDrL)rrRrN�dfinfor
r
r�mkbuildcontext{s


r]cCsdd�t�t|�D�S)NcSsg|]
}|r|dkr|�qS)�.r
)r5�ptr
r
r�
<listcomp>�szsplit_path.<locals>.<listcomp>)�re�split�_SEP��pr
r
r�
split_path�srfcCstr	d�t|��S|S)Nr)rrrfrdr
r
r�normalize_slashes�srgTcCst|�}|�|�Sr	)r$r&)rr'�defaultr(r
r
rr&�s
r&c@s$eZdZdd�Zdd�Zdd�ZdS)r$cCs2ttdd�dd�|D���|_|j�td��dS)NcSs|jSr	)�dirsrdr
r
r�<lambda>�sz)PatternMatcher.__init__.<locals>.<lambda>cSsg|]}t|��qSr
)�Pattern)r5rer
r
rr`�r8z+PatternMatcher.__init__.<locals>.<listcomp>z!.dockerignore)�list�filterr'r#rk)�selfr'r
r
r�__init__�s�zPatternMatcher.__init__c	Cs�d}tj�|�}t|�}|jD]/}|j}|�|�}|s9|dkr9t|j�t|�kr9|�tjj	�
|dt|j����}|r>|}q|S)NFr))rrr,rfr'�	exclusionrrHri�sepr)rn�filepath�matched�parent_path�parent_path_dirs�pattern�negativerr
r
r�matches�s

��zPatternMatcher.matchescs���fdd�����S)Nc3s��t�|�D]`}tj�tj�|��|�}|�dtjj���r$|dd�}��|�}|s.|Vtj��|�}tj�|�rAtj�	|�rBq|r_d}�j
D]}|jsOqI|j�t
|��r[d}nqI|r_q�|�EdHqdS)Nr^rTF)r�listdirrr�relpath�
startswithrqrx�isdir�islinkr'rp�cleaned_patternrg)�current_dirrR�fpathr�cur�skip�pat��rec_walkrrnr
rr��s8��

���z%PatternMatcher.walk.<locals>.rec_walkr
)rnrr
r�rr&�s!zPatternMatcher.walkN)�__name__�
__module__�__qualname__rorxr&r
r
r
rr$�sr$c@s(eZdZdd�Zedd��Zdd�ZdS)rkcCs@d|_|�d�rd|_|dd�}|�|�|_d�|j�|_dS)NFr"Trr)rpr{�	normalizerirr~)rn�pattern_strr
r
rro�s
zPattern.__init__cCsf|��}d}t|�}|t|�kr1||dkr'||=|dkr&||d=|d8}n|d7}|t|�ks|S)Nrz..r)�striprfrH)�clsrerQrbr
r
rr��s
��zPattern.normalizecCstt|�|j�Sr	)rrgr~)rnrrr
r
rrsz
Pattern.matchN)r�r�r�ro�classmethodr�rr
r
r
rrk�s
	
rk)NNNFr	)NNFN)T)rJrrar>r<�	constantsrr�compilercr�strr
rr rr1rr]rfrgr&r$rkr
r
r
r�<module>s0�


�5
?