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__/utils.cpython-310.pyc
o

�h,7�@s�ddlZddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZddl
mZmZddlmZddlmZmZmZmZdd	lmZe�d
d�Zdd
�Zdd�Zdd�Ze
dd�dd��Zdd�Zdd�Z dd�Z!dd�Z"dd�Z#dd �Z$d!d"�Z%d#d$�Z&d>d&d'�Z'd(d)�Z(d?d*d+�Z)d,d-�Z*d.d/�Z+d0d1�Z,d2d3�Z-d4d5�Z.d6d7�Z/d8d9�Z0d@d:d;�Z1d<d=�Z2dS)A�N)�datetime�timezone)�	lru_cache)�zip_longest)�urlparse�
urlunparse�)�errors)�
BYTE_UNITS�DEFAULT_HTTP_HOST�
DEFAULT_NPIPE�DEFAULT_UNIX_SOCKET)�	TLSConfig�
URLComponentsz'scheme netloc url params query fragmentcO�
t�d��)Nz[utils.create_ipam_pool has been removed. Please use a docker.types.IPAMPool object instead.�r	�DeprecatedMethod��args�kwargs�r�E/usr/local/CyberCP/lib/python3.10/site-packages/docker/utils/utils.py�create_ipam_pool��rcOr)Nz_utils.create_ipam_config has been removed. Please use a docker.types.IPAMConfig object instead.rrrrr�create_ipam_config#rrcCst�|�}|�d�}t�|�S)N�utf-8)�base64�	b64decode�decode�json�loads)�header�datarrr�decode_json_header*s


r#)�maxsizecCst||krdStdd�|�d�D��}tdd�|�d�D��}t||dd�D]\}}||kr.q%||kr5dSdSdS)	z�Compare docker versions

    >>> v1 = '1.9'
    >>> v2 = '1.10'
    >>> compare_version(v1, v2)
    1
    >>> compare_version(v2, v1)
    -1
    >>> compare_version(v2, v2)
    0
    rcs��|]}t|�VqdS�N��int��.0�prrr�	<genexpr>@��z"compare_version.<locals>.<genexpr>�.csr%r&r'r)rrrr,Ar-)�	fillvalue����)�tuple�splitr)�v1�v2�s1�s2�c1�c2rrr�compare_version0s
r:cCst||�dkS)Nr)r:�r4r5rrr�
version_ltMsr<cCst||�Sr&)r<r;rrr�version_gteQsr=cCs�ddd�}t|t�r2t|�dkr|d|d<|d|d<n7t|dt�r+|d|d<n)|d|d<n"t|t�rPd|vrL|d|d<d|vrK|d|d<nt|��||d<|ddur`d|d<|St|d�|d<|S)N�)�HostIp�HostPortrr1r@rr?)�
isinstancer2�len�str�dict�
ValueError)�binding�resultrrr�_convert_port_bindingUs*


��rHcCsbi}t|���D]&\}}t|�}d|vr|d7}t|t�r'dd�|D�||<qt|�g||<q|S)N�/z/tcpcSsg|]}t|��qSr)rH)r*rFrrr�
<listcomp>x�z)convert_port_bindings.<locals>.<listcomp>)�iter�itemsrCrA�listrH)�
port_bindingsrG�k�v�keyrrr�convert_port_bindingsqs
rScCs2t|t�r|Sg}|��D]�\}}t|t�r|�d�}t|t�r�d|vr/d|vr/td|����|d}t|t�r=|�d�}d|vrJ|drGdnd}nd|vrS|d}nd}gd�}d|vrs|d|vrs|ro|�d	|d��}n|d}|�|�d
|�d
|���q
t|t�r�|�d�}|�|�d
|�d��q
|S)Nr�ro�modez-Binding cannot contain both "ro" and "mode": �bind�rw)�rshared�shared�rslave�slave�rprivate�private�propagation�,�:z:rw)rArNrM�bytesrrDrE�append)�bindsrGrPrQrVrU�propagation_modesrrr�convert_volume_binds~sB



�


�

�recCs�t|t�r|St|t�stdt|�j����i}|D]'}t|t�r3d|vr.|�dd�\}}n|}d}n
tdt|�j����|||<q|S)Nz;Expected tmpfs value to be either a list or a dict, found: r`r1r>z3Expected item in tmpfs list to be a string, found: )rArDrNrE�type�__name__rCr3)�tmpfsrG�mount�name�optionsrrr�convert_tmpfs_mounts�s,

��
��
rlcCsH|s|St|t�s
td��g}|D]}t|t�rd|i}|�|�q|S)Nz"networks parameter must be a list.�Target)rArN�	TypeErrorrCrb)�networksrG�nrrr�convert_service_networks�s

rqcCsT|�dd�}t|�dkrt|�S|�dd�}t|�dkr&d|dvr&t|�S|dfS)N�@r1rr`rI)�rsplitrBr2)�	repo_name�partsrrr�parse_repository_tag�srvFc	Cs|s|rtS|r|��dkrtS|��}t|�}|j}|r&tdd�|D��r0td|��d�}d}|dkr9t�d��|dksA|d	krH|d	k}d}n|d
krNd}|dvrZt�d
|����|dkri|jsit�d|����t|j	|j
|j|jg�r}t�d|����|j
r�|dkr�t�d|����|j
}|dkr�|jdur�|j�d|��}|j}|dvr�|jp�d}|dkr�|dkr�t�d|����d}|j�d|��}|js�t�d|��}|dkr�d|r�dnd��}n|dkr�d
}|dvr�|�d|���d�Stt|||dddd���d�S)Nzunix://css �|]}|tj�d�vVqdS)�+N)�string�
ascii_letters)r*�xrrrr,�s�zparse_host.<locals>.<genexpr>z//�tcp�fdzfd protocol is not implemented�http�https�	http+unix�unix)r{r��npipe�sshzInvalid bind address protocol: zInvalid bind address format: r�z@Invalid bind address format: no path allowed for this protocol: rI)r{r�rz/Invalid bind address format: port is required: �r`�sr>)rr�z://)�scheme�netloc�url�params�query�fragment)r�stripr
rr��anyr	�DockerExceptionr�r�r�r��password�path�hostname�portr�rstriprr)�addr�is_win32�tls�
parsed_url�protor�r�r�rrr�
parse_host�s�
�����
���r�cCs�g}|D]J}t|t�r|�|�qt|t�s t�dt|�����|�d�}|rN|d}t|�dkr6|d}n|}t|�dkrC|d}nd}|�|||d��q|S)NzInvalid device type r`rr1r�rwm)�
PathOnHost�PathInContainer�CgroupPermissions)	rArDrbrCr	r�rfr3rB)�devices�device_list�device�device_mapping�path_on_host�path_in_container�permissionsrrr�
parse_devicesDs2


�


��r�cCs�|stj}|�d�}|�d�pd}|�d�}|dkrd}n|du}|p$|}i}|r-||d<|s1|S|s>tj�tj�d�d�}ttj�|d	�tj�|d
�ftj�|d�|d�|d
<|S)N�DOCKER_HOST�DOCKER_CERT_PATH�DOCKER_TLS_VERIFYr>F�base_url�~z.dockerzcert.pemzkey.pemzca.pem)�client_cert�ca_cert�verifyr�)�os�environ�getr��join�
expanduserr)�environment�host�	cert_path�
tls_verify�
enable_tlsr�rrr�kwargs_from_envas0

�
�r�cCs\i}t|���D] \}}t|t�r|rdnd}t|t�s|g}dd�|D�||<qt�|�S)N�true�falsecSs"g|]
}t|t�s
t|�n|�qSr)rArC)r*�itemrrrrJ�s��z#convert_filters.<locals>.<listcomp>)rLrMrA�boolrNr�dumps)�filtersrGrPrQrrr�convert_filters�s

�
r�cCs2|�tj�tdddtjd�}|j|jddS)z&Convert a datetime to a Unix timestampi�r1)�tzinfo�i)�
astimezoner�utcr�seconds�days)�dt�deltarrr�datetime_to_timestamp�sr�c
Cst|ttf�r	|St|�dkrdS|dd���r1|d��r1|ddks+|ddkr1|dd�}t}|d��}|��rB|}d}n|dd�}||��vsR|��ryzt|�}Wnt	yn}z
t
�d|�d��|�d}~wwt|||�}|St
�d|�d	���)
Nr���r0�b�Bz/Failed converting the string value for memory (z) to an integer.z The specified value for memory (zW) should specify the units. The postfix should be one of the `b` `k` `m` `g` characters)rAr(�floatrB�isalphar
�lower�isdigit�keysrEr	r�)r��units�suffix�digits_part�digits�verrr�parse_bytes�s>������
�r�cCs(t|t�rt|���}dd�t|�D�S)NcSs&g|]\}}|r|�d|��n|�qS�r`r�r*rPrQrrrrJ�s&z#normalize_links.<locals>.<listcomp>)rArDrLrM�sorted)�linksrrr�normalize_links�s
r�cCs�i}t|��;}|D]/}|ddkrq	|��}|sq	|�dd�}t|�dkr.|\}}|||<q	t�d|�d|����Wd�|S1sDwY|S)	ze
    Reads a line-separated environment file.
    The format of each line should be "key=value".
    r�#�=r1rz!Invalid line in environment file z:
N)�openr�r3rBr	r�)�env_filer��f�line�
parse_linerPrQrrr�parse_env_file�s(

��
��r�cCs
t�|�Sr&)�shlexr3)�commandrrr�
split_command�s
r�cs"dd���fdd�t|���D�S)NcSs.|dur|St|t�r|�d�}|�d|��S)Nrr�)rArar)rR�valuerrr�
format_env�s


z&format_environment.<locals>.format_envcsg|]}�|��qSrr)r*�var�r�rrrJ�rKz&format_environment.<locals>.<listcomp>)rLrM)r�rr�r�format_environment�sr�cCs8|rdd�tt|����D�Sdd�tt|����D�S)NcSsg|]\}}|�d|���qS)� rr�rrrrJ���z&format_extra_hosts.<locals>.<listcomp>cSsg|]\}}|�d|���qSr�rr�rrrrJ�r�)r�rLrM)�extra_hosts�taskrrr�format_extra_hosts�s��r�cOr)Nz_utils.create_host_config has been removed. Please use a docker.types.HostConfig object instead.r)�selfrrrrr�create_host_configrr�)FFr&)F)3r�collectionsrr��os.pathr�rxrr�	functoolsr�	itertoolsr�urllib.parserrr>r	�	constantsr
rrr
r�r�
namedtuplerrrr#r:r<r=rHrSrerlrqrvr�r�r�r�r�r�r�r�r�r�r�r�rrrr�<module>sV�

6

[
&(