o
    ûÞh5  ã                   @   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mZm	Z	m
Z
mZmZ ejdkr1d dlmZ zd dlZW n eyK   ej d¡ e d¡ Y nw ddlmZmZmZ dd	lmZ d
ee fdd„Ze ¡ ejddeƒ ejdd�dd�ejddde  g d¢¡dd�ejdddej!dd�ej"ed�ej#dej$deded ed
df
d!d"„ƒƒƒƒƒƒZ%ed#ej&d
e
e	e  fd$d%„ƒZ'e% (¡ ej#ejd&d'e  g d(¢¡d)d�dej$d*e)d
dfd+d,„ƒƒƒZ*e% (¡ ej#ej+d-dd.�ej+d/dd.�dej$d-ed/ed
dfd0d1„ƒƒƒƒZ,e% (¡ ej#ej+d-dd.�dej$d-ed
dfd2d3„ƒƒƒZ-e% (¡ ej#ej+d-dd.�dej$d-ed
dfd4d5„ƒƒƒZ.e%j(d6did7�ej#ejd8dd9d:�ej+d;d<ej/d=�dej$d>e)d;ee d
dfd?d@„ƒƒƒƒZ0dAee dBeeef d
dfdCdD„Z1dS )Eé    N)Úcontextmanager)ÚAnyÚDictÚIOÚIteratorÚListÚOptionalÚwin32)ÚPopenzkIt seems python-dotenv is not installed with cli option. 
Run pip install "python-dotenv[cli]" to fix this.é   )Údotenv_valuesÚset_keyÚ	unset_key)Ú__version__Úreturnc                  C   s4   zt  ¡ } W n
 ty   Y dS w t j | d¡}|S )zZ
    Return a path for the ${pwd}/.env file.

    If pwd does not exist, return None.
    Nz.env)ÚosÚgetcwdÚFileNotFoundErrorÚpathÚjoin)Úcwdr   © r   úJ/var/www/html/premium_crap/venv/lib/python3.10/site-packages/dotenv/cli.pyÚenumerate_env   s   ÿr   z-fz--fileT)Ú	file_okayzNLocation of the .env file, defaults to .env file in current working directory.)ÚdefaultÚtypeÚhelpz-qz--quoteÚalways)r   ÚneverÚautozbWhether to quote or not the variable values. Default mode is always. This does not affect parsing.z-ez--exportFz;Whether to write the dot file as an executable bash script.)ÚversionÚctxÚfileÚquoteÚexportc                 C   s   |||dœ| _ dS )zAThis script is used to set, get or unset values from a .env file.)ÚQUOTEÚEXPORTÚFILEN)Úobj)r"   r#   r$   r%   r   r   r   Úcli$   s   r*   r   c              
   c   s~   � zt | ƒ�}|V  W d  ƒ W dS 1 sw   Y  W dS  ty> } ztd|› �tjd� tdƒ W Y d}~dS d}~ww )z~
    Open a file and yield the corresponding (decoded) stream.

    Exits with error code 2 if the file cannot be opened.
    NzError opening env file: )r#   é   )ÚopenÚOSErrorÚprintÚsysÚstderrÚexit)r   ÚstreamÚexcr   r   r   Ústream_file5   s   €
&ÿ€þr4   z--formatÚsimple)r5   ÚjsonÚshellr%   zlThe format in which to display the list. Default format is simple, which displays name=value without quotes.Úformatc                 C   sº   | j d }t|ƒ�}t|d�}W d  ƒ n1 sw   Y  |dkr/t tj|ddd�¡ dS |dkr5d	nd
}t|ƒD ]}|| }|durZ|dv rNt 	|¡}t |› |› d|› �¡ q;dS )z!Display all the stored key/value.r(   ©r2   Nr6   r+   T)ÚindentÚ	sort_keysr%   zexport Ú )r%   r7   ú=)
r)   r4   r   ÚclickÚechor6   ÚdumpsÚsortedÚshlexr$   )r"   r8   r#   r2   ÚvaluesÚprefixÚkÚvr   r   r   ÚlistE   s   

ÿ
€ûrG   Úkey)ÚrequiredÚvaluec                 C   s\   | j d }| j d }| j d }t|||||ƒ\}}}|r(t |› d|› �¡ dS tdƒ dS )zStore the given key/value.r(   r&   r'   r=   r   N)r)   r   r>   r?   r1   )r"   rH   rJ   r#   r$   r%   Úsuccessr   r   r   Úset^   s   


rL   c                 C   sd   | j d }t|ƒ�}t|d�}W d  ƒ n1 sw   Y  | |¡}|r,t |¡ dS tdƒ dS )z%Retrieve the value for the given key.r(   r9   Nr   )r)   r4   r   Úgetr>   r?   r1   )r"   rH   r#   r2   rC   Ústored_valuer   r   r   rM   n   s   

ÿ
rM   c                 C   sH   | j d }| j d }t|||ƒ\}}|rt d|› �¡ dS tdƒ dS )zRemoves the given key.r(   r&   zSuccessfully removed r   N)r)   r   r>   r?   r1   )r"   rH   r#   r$   rK   r   r   r   Úunset   s   

rO   Úignore_unknown_options)Úcontext_settingsz--override/--no-overridezKOverride variables from the environment file with those from the .env file.)r   r   Úcommandlineéÿÿÿÿ)Únargsr   Úoverridec                    sj   | j d }tj |¡stjd|› d�| d�‚‡ fdd„t|ƒ ¡ D ƒ}|s.t d¡ t	dƒ t
||ƒ d	S )
z/Run command with environment variables present.r(   zInvalid value for '-f' "z" does not exist.)r"   c                    s,   i | ]\}}|d urˆ s|t jvr||“qS )N)r   Úenviron)Ú.0rE   rF   ©rU   r   r   Ú
<dictcomp>�   s
    þzrun.<locals>.<dictcomp>zNo command given.r   N)r)   r   r   Úisfiler>   ÚBadParameterr   Úitemsr?   r1   Úrun_command)r"   rU   rR   r#   Údotenv_as_dictr   rX   r   Úrun�   s   


þ

þ
r_   ÚcommandÚenvc                 C   sb   t j ¡ }| |¡ tjdkr%t| ddd|d�}| ¡ \}}t|j	ƒ dS t j
| d | |d� dS )aå  Replace the current process with the specified command.

    Replaces the current process with the specified command and the variables from `env`
    added in the current environment variables.

    Parameters
    ----------
    command: List[str]
        The command and it's parameters
    env: Dict
        The additional environment variables

    Returns
    -------
    None
        This function does not return any value. It replaces the current process with the new one.

    r	   Tr   F)Úuniversal_newlinesÚbufsizer7   ra   )Úargsra   N)r   rV   ÚcopyÚupdater/   Úplatformr
   Úcommunicater1   Ú
returncodeÚexecvpe)r`   ra   Úcmd_envÚpÚ_r   r   r   r]   ©   s   


ür]   )2r6   r   rB   r/   Ú
contextlibr   Útypingr   r   r   r   r   r   rg   Ú
subprocessr
   r>   ÚImportErrorr0   Úwriter1   Úmainr   r   r   r!   r   Ústrr   ÚgroupÚoptionÚPathÚChoiceÚBOOLÚversion_optionÚpass_contextÚContextr*   ÚPathLiker4   r`   ÚboolrG   ÚargumentrL   rM   rO   ÚUNPROCESSEDr_   r]   r   r   r   r   Ú<module>   s‚     
ý
þ
þ
þ
,þ$ý(&