o
    zi
                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZmZmZ eded	ef d
ZddededefddZdedefddZdS )z;Utilities for Argument Parsing within Lightning Components.    N)	Namespace)literal_eval)suppress)wraps)AnyCallableTypeTypeVarcast_T.)bound PL_%(cls_name)s_%(cls_argument)sclstemplatereturnc              	   C   s   i }t | jD ]8}|| j | d }tj|}|du s@|dks@tt	 t
|}W d   n1 s7w   Y  |||< qtdi |S )a  Parse environment arguments if they are defined.

    Examples:

        >>> from pytorch_lightning import Trainer
        >>> _parse_env_variables(Trainer)
        Namespace()
        >>> import os
        >>> os.environ["PL_TRAINER_DEVICES"] = '42'
        >>> os.environ["PL_TRAINER_BLABLABLA"] = '1.23'
        >>> _parse_env_variables(Trainer)
        Namespace(devices=42)
        >>> del os.environ["PL_TRAINER_DEVICES"]

    )cls_namecls_argumentN  )inspect	signature
parameters__name__upperosenvirongetr   	Exceptionr   r   )r   r   env_argsarg_nameenvvalr   r   X/home/ubuntu/.local/lib/python3.10/site-packages/pytorch_lightning/utilities/argparse.py_parse_env_variables   s   

r#   fnc              	      s0   t  dtdtdtdtf fdd}tt|S )Nselfargskwargsr   c                    sb   | j }|rt|j}|tt|| tt|}tt	|
 t	|
  } | fi |S )N)	__class__r   r   r   updatedictzipvarsr#   listitems)r%   r&   r'   r   cls_arg_namesenv_variablesr$   r   r"   insert_env_defaults9   s   z4_defaults_from_env_vars.<locals>.insert_env_defaults)r   r   r
   r   )r$   r2   r   r1   r"   _defaults_from_env_vars8   s    
r3   )r   )__doc__r   r   argparser   astr   
contextlibr   	functoolsr   typingr   r   r   r	   r
   r   strr#   r3   r   r   r   r"   <module>   s   