
    S`                         d dl Z d dlZd dlZd dlZddlmZ ddlmZ ddlmZ  e j                  e
      Zd ZddZ G d	 d
e      Zy)    N   )IS_WINDOWS_PLATFORM   )ConfigurationError)EnvFileNotFoundc                     t        | t              r| j                  dd      } d x}}d| v r| j                  dd      \  }}n| }t	        j
                  d|      rt        dj                  |            ||fS )Nzutf-8replace=r   z\sz:environment variable name '{}' may not contain whitespace.)
isinstancebytesdecodesplitresearchr   format)envkeyvalues      </usr/lib/python3/dist-packages/compose/config/environment.py	split_envr      s|    #ujj),C%
czYYsA&
U	yy HOOPST
 	
 :    c                 |   t         j                  j                  |       st        dj	                  |             t         j                  j                  |       st        dj	                  |             t        j                  | d|      }|j                         D ]  \  }}|r|n|j                  dd      ||<     |S )zA
    Read in a line delimited file of environment variables.
    zCouldn't find env file: {}z{} is not a file.z	utf-8-sig)dotenv_pathencodinginterpolate$z$$)
ospathexistsr   r   isfiledotenvdotenv_valuesitemsr	   )filenamer   r   kvs        r   env_vars_from_filer'      s     77>>(#:AA(KLLWW^^H%188BCC


8kWb
cC		 <1!qyyd';A<Jr   c                   f     e Zd Z fdZedd       Zed        Z fdZ fdZ fdZ	d	dZ
 xZS )
Environmentc                 @    t        |   |i | g | _        d| _        y )NF)super__init__missing_keyssilent)selfargskwargs	__class__s      r   r,   zEnvironment.__init__-   s$    $)&)r   c                 f      fd} |       }|j                  t        j                         |S )Nc                  (           } | S rCt         j                  j                  t        j                               } t	        |            S t         j                  j                  d      }	  t	        |            S # t
        $ r Y | S w xY w)Nz.env)r   r   joingetcwdr'   r   )resultenv_file_pathbase_dirclsenv_files     r   _initializez.Environment.from_env_file.<locals>._initialize4   s    UF "RYY[( C-m<==GGLL6:M-m<==" Ms   3B 	BB)updater   environ)r:   r9   r;   r<   instances   ```  r   from_env_filezEnvironment.from_env_file2   s&    	 =

#r   c                      |        }|j                         D ]5  \  }}|)|t        j                  v rt        j                  |   ||<   1|||<   7 |S N)r#   r   r>   )r:   parsed_env_optsr7   r%   r&   s        r   from_command_linezEnvironment.from_command_lineG   sW    #))+ 	DAq yQ"**_JJqMq	q		 r   c                 ^   	 t         |   |      S # t        $ r t        r/	 t         |   |j	                               cY S # t        $ r Y nw xY w| j
                  sM|| j                  vr?t        j                  dj                  |             | j                  j                  |       Y yw xY w)Nz9The {} variable is not set. Defaulting to a blank string. )r+   __getitem__KeyErrorr   upperr.   r-   logwarningr   append)r/   r   r2   s     r   rG   zEnvironment.__getitem__S   s    	7&s++ 	" 7.syy{;; ;;3d.?.?#?OVC[ !!((-	s2    B,AB,	A
B,AAB,+B,c                 t    t         |   |      }t        r!|xs t         |   |j                               S |S rB   )r+   __contains__r   rI   )r/   r   r7   r2   s      r   rN   zEnvironment.__contains__e   s9    %c*;%'.syy{; r   c                     t         r/t        | 	  |t        |   |j                         g|i |      S t        |   |g|i |S rB   )r   r+   getrI   )r/   r   r0   r1   r2   s       r   rP   zEnvironment.getm   sQ    7;CIIK9$9&9  w{30000r   c                 T    | j                  |      }|s|S |j                         dv ryy)N)0falseFT)rP   lower)r/   r   defaultr   s       r   get_booleanzEnvironment.get_booleanu   s-     N;;=N*r   rB   )F)__name__
__module____qualname__r,   classmethodr@   rD   rG   rN   rP   rV   __classcell__)r2   s   @r   r)   r)   ,   sD    
  ( 	 	$1	r   r)   )T)loggingr   r   r!   constr   errorsr   r   	getLoggerrW   rJ   r   r'   dictr)    r   r   <module>rb      sD     	 	  ' & #g!R$ Rr   