HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/1233/root/usr/lib/python3/dist-packages/docker/utils/__pycache__/build.cpython-310.pyc
o

�2.a�@s�ddlZddlZddlZddlZddlZddlmZddlmZer'e�d�ne�d�Z	dd	d
�Z
ddd�Zd
d�Z		d dd�Z
dd�Zdd�Zdd�Zd!dd�ZGdd�d�ZGdd�d�ZdS)"�N�)�fnmatch�)�IS_WINDOWS_PLATFORMz/|\\�/FcCsvtj�|�}|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�excluderrrr
r
�dockerignore_contents�r�4/usr/lib/python3/dist-packages/docker/utils/build.py�tars���rcCs0|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�pmrrrr!s
	rc	CsTg}t�|�D] \}}}||D]}tj�||�}|�|�|dd��d��qq|S)N�rr)rrrrr�replace�lstrip)r
r	�dirname�dirnames�fnames�filename�longpathrrr�build_file_list2s��r*c	Csv|pg}|s
t��}tj|rdnd|d�}|durt|�}dd�|D�}|D]j}||vr-q&tj�||�}|j||d�}	|	dur@q&|	j	dksJ|	j	dkrPt
|	j	�|	_	trZ|	jd	@d
B|	_|	�
�r�zt|d��}
|�|	|
�Wd�n1suwYWq&ty�td|����w|�|	d�q&|D]\}}t�|�}
|�d
�}t|�|
_|�|
t�|��q�|��|�d�|S)Nzw:gz�w��modercSsh|]}|d�qS)rr)�.0�errr�	<setcomp>F�z!create_archive.<locals>.<setcomp>)�arcnamerl��i��I�rbzCan not read file in context: zutf-8)�tempfile�NamedTemporaryFile�tarfile�openr*rrr�
gettarinfo�mtime�intrr-�isfile�addfile�OSError�TarInfo�encode�len�size�io�BytesIO�close�seek)r
r	rrr
�t�extra_namesr�	full_path�i�f�name�contents�info�contents_encodedrrrr>sL����



rcCs�t��}tjd|d�}t|tj�rt�d�}td��t|tj	�r2t�d�}t
|���|_|�
d�n|j|dd�}|�||�|��|�
d�|S)Nr+r,rzCPlease use io.BytesIO to create in-memory Dockerfiles with Python 3r)rr2)r5r6r7r8�
isinstancerC�StringIOr?�	TypeErrorrDrA�getvaluerBrFr9r=rE)rrKrG�dfinforrr�mkbuildcontextss


rUcCsdd�t�t|�D�S)NcSsg|]
}|r|dkr|�qS)�.r)r.�ptrrr�
<listcomp>�szsplit_path.<locals>.<listcomp>)�re�split�_SEP��prrr�
split_path�sr^cCstr	d�t|��S|S)Nr)rrr^r\rrr�normalize_slashes�sr_TcCst|�}|�|�S�N)rr)r
r �defaultr!rrrr�s
rc@s$eZdZdd�Zdd�Zdd�ZdS)rcCs2ttdd�dd�|D���|_|j�td��dS)NcSs|jSr`)�dirsr\rrr�<lambda>�sz)PatternMatcher.__init__.<locals>.<lambda>cSsg|]}t|��qSr)�Pattern)r.r]rrrrX�r1z+PatternMatcher.__init__.<locals>.<listcomp>z!.dockerignore)�list�filterr rrd)�selfr rrr�__init__�s�zPatternMatcher.__init__c	Cs�d}tj�|�}t|�}|jD]/}|j}|�|�}|s9|dkr9t|j�t|�kr9|�tjj	�
|dt|j����}|r>|}q|S)NFr")rrr%r^r �	exclusion�matchrArb�sepr)rg�filepath�matched�parent_path�parent_path_dirs�pattern�negativerjrrr�matches�s

��zPatternMatcher.matchescs���fdd�����S)Nc3s��t�|�D]_}tj�tj�|��|�}|�dtjj�r#|dd�}��|�}|s-|Vtj��|�}tj�|�r@tj�	|�rAq|r^d}�j
D]}|jsNqH|j�t
|��rZd}nqH|r^q�|�EdHqdS)NrVrTF)r�listdirrr�relpath�
startswithrkrr�isdir�islinkr ri�cleaned_patternr_)�current_dirrK�fpathrj�cur�skip�pat��rec_walkr
rgrrr�s8��

���z%PatternMatcher.walk.<locals>.rec_walkr)rgr
rr~rr�s!zPatternMatcher.walkN)�__name__�
__module__�__qualname__rhrrrrrrrr�src@s(eZdZdd�Zedd��Zdd�ZdS)rdcCs@d|_|�d�rd|_|dd�}|�|�|_d�|j�|_dS)NFrTrr)riru�	normalizerbrrx)rg�pattern_strrrrrh�s
zPattern.__init__cCs^d}t|�}|t|�kr-||dkr#||=|dkr"||d=|d8}n|d7}|t|�ks|S)Nrz..r)r^rA)�clsr]rJrZrrrr��s
��zPattern.normalizecCstt|�|j�Sr`)rr_rx)rgrlrrrrj�sz
Pattern.matchN)r�r�r�rh�classmethodr�rjrrrrrd�s
	
rd)NNNFr`)NNFN)T)rCrrYr7r5r�	constantsr�compiler[rrr*rrUr^r_rrrdrrrr�<module>s(


�5
?