File: //lib/python3/dist-packages/compose/__pycache__/project.cpython-310.pyc
o
    S�`w�  �                   @   s�  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dl	mZ d dl	mZ d dl
mZ dd	lmZ dd
lmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl m"Z" ddl m#Z# ddl$m%Z% ddl&m'Z' ddl&m(Z( ddl&m)Z) ddl&m*Z* ddl&m+Z+ ddl&m,Z, ddl&m-Z- ddl&m.Z. ddl&m/Z/ dd l&m0Z0 dd!l&m1Z1 dd"l&m2Z2 dd#l&m3Z3 dd$l&m4Z4 dd%l5m6Z6 dd&l5m7Z7 dd'l5m8Z8 dd(l9m:Z: e�;e<�Z=ej>G d)d*� d*ej?��Z@G d+d,� d,�ZAd-d.� ZBd/d0� ZCd1d2� ZDd3d4� ZEd5d6� ZFd7d8� ZGd9d:� ZHd;d<� ZId=d>� ZJd?d@� ZKG dAdB� dBeL�ZMG dCdD� dDeL�ZNG dEdF� dFeL�ZOG dGdH� dHeL�ZPG dIdJ� dJeL�ZQdS )K�    N)�reduce)�path)�APIError)�
ImageNotFound)�NotFound)�
version_lt�   )�parallel)�	UserError)�ConfigurationError)�V1)�$get_container_name_from_network_mode)�"get_service_name_from_network_mode)�
LABEL_ONE_OFF)�
LABEL_PROJECT)�
LABEL_SERVICE)�	Container)�build_networks)�get_networks)�ProjectNetworks)�read_status)�BuildAction)�ContainerIpcMode)�ContainerNetworkMode)�ContainerPidMode)�ConvergenceStrategy)�IpcMode)�NetworkMode)�NoSuchImageError)�parse_repository_tag)�PidMode)�Service)�ServiceIpcMode)�ServiceNetworkMode)�ServicePidMode)�filter_attached_for_up)�microseconds_from_time_nano)�truncate_string)�ProjectVolumesc                   @   s$   e Zd ZdZdZdZedd� �ZdS )�OneOffFilterr   r   �   c                 C   s`   || j kr|�d�td�� d S || jkr |�d�td�� d S || jkr'd S td�t|����)N�{}={}�True�FalsezInvalid value for one_off: {})�only�append�formatr   �exclude�include�
ValueError�repr)�cls�value�labels� r8   �1/usr/lib/python3/dist-packages/compose/project.py�
update_labels8   s   
zOneOffFilter.update_labelsN)�__name__�
__module__�__qualname__r2   r1   r.   �classmethodr:   r8   r8   r8   r9   r)   2   s    r)   c                   @   s�  e Zd ZdZ		dQdd�Zejdfdd�Ze		dRdd	��Z	e
d
d� �Zdd
� Zdd� Z
dSdd�ZdTdd�Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � ZdUd!d"�Zdejfd#d$�ZdUd%d&�ZdUd'd(�ZdUd)d*�Zdejfd+d,�Z			dVd-d.�Zd/d0� ZdUd1d2�Z			dWd3d4�Zde j!e"j#fd5d6�Z$d7d8� Z%dUd9d:�Z&dde j!e"j#dddddddddddddddfd;d<�Z'd=d>� Z(dXd?d@�Z)		dYdAdB�Z*dZdCdD�Z+dTdEdF�Z,dejfdGdH�Z-ddejfdIdJ�Z.dKdL� Z/dMdN� Z0dOdP� Z1dS )[�Projectz#
    A collection of services.
    Nc                 C   sD   || _ || _|| _|pti �| _|pti d�| _|| _|pg | _d S �NF)	�name�services�clientr(   �volumesr   �networks�config_version�enabled_profiles)�selfrA   rB   rC   rE   rD   rF   rG   r8   r8   r9   �__init__H   s   zProject.__init__Fc                 C   s6   | j }|rt�dd|�}d�t|�g}t�||� |S )Nz[_-]� r+   )rA   �re�subr0   r   r)   r:   )rH   �one_off�legacyrA   r7   r8   r8   r9   r7   R   s   zProject.labelsc                    s�  |pg }|j o|j tk}t|||�}t�|j||�}	t�|||�� | |g ||	� |j |�}
|jD ]�}t|�}|r=t	||�}ni }|�
dd� |
�|�}
|
�|�}|
�
|t|�� ��}|
�|�}t|
|�}|j tkrw� fdd�|�dg �D �|d<