a
    ==ic1                     @   s8   d dl Z d dlmZ G dd deZG dd deZdS )    N)Actionc                       s2   e Zd ZdZd	dd fddZd
ddZ  ZS )enva  
    Gets argument values from ``PET_{dest}`` before defaulting
    to the given ``default`` value. For flags (e.g. ``--standalone``)
    use ``check_env`` instead.

    .. note:: when multiple option strings are specified, ``dest`` is
              the longest option string (e.g. for ``"-f", "--foo"``
              the env var to set is ``PET_FOO`` not ``PET_F``)

    Example:

    ::

     parser.add_argument("-f", "--foo", action=env, default="bar")

     ./program                                      -> args.foo="bar"
     ./program -f baz                               -> args.foo="baz"
     ./program --foo baz                            -> args.foo="baz"
     PET_FOO="env_bar" ./program -f baz    -> args.foo="baz"
     PET_FOO="env_bar" ./program --foo baz -> args.foo="baz"
     PET_FOO="env_bar" ./program           -> args.foo="env_bar"

     parser.add_argument("-f", "--foo", action=env, required=True)

     ./program                                      -> fails
     ./program -f baz                               -> args.foo="baz"
     PET_FOO="env_bar" ./program           -> args.foo="env_bar"
     PET_FOO="env_bar" ./program -f baz    -> args.foo="baz"
    NFreturnc                    sB   d|   }tj||}|r$d}t jf |||d| d S )NPET_F)destdefaultrequired)upperosenvirongetsuper__init__)selfr   r   r	   kwargsenv_name	__class__ p/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/torch/distributed/argparse_util.pyr   +   s
    zenv.__init__c                 C   s   t || j| d S N)setattrr   r   parser	namespacevaluesoption_stringr   r   r   __call__8   s    zenv.__call__)NF)N__name__
__module____qualname____doc__r   r   __classcell__r   r   r   r   r      s   r   c                       s2   e Zd ZdZd	dd fddZd
ddZ  ZS )	check_enva  
    For flags, checks whether the env var ``PET_{dest}`` exists
    before defaulting to the given ``default`` value. Equivalent to
    ``store_true`` argparse built-in action except that the argument can
    be omitted from the commandline if the env var is present and has a
    non-zero value.

    .. note:: it is redundant to pass ``default=True`` for arguments
              that use this action because a flag should be ``True``
              when present and ``False`` otherwise.

    Example:

    ::

     parser.add_argument("--verbose", action=check_env)

     ./program                                  -> args.verbose=False
     ./program --verbose                        -> args.verbose=True
     PET_VERBOSE=1 ./program           -> args.verbose=True
     PET_VERBOSE=0 ./program           -> args.verbose=False
     PET_VERBOSE=0 ./program --verbose -> args.verbose=True

    Anti-pattern (don't do this):

    ::

     parser.add_argument("--verbose", action=check_env, default=True)

     ./program                                  -> args.verbose=True
     ./program --verbose                        -> args.verbose=True
     PET_VERBOSE=1 ./program           -> args.verbose=True
     PET_VERBOSE=0 ./program           -> args.verbose=False

    FNr   c                    sL   d|   }tttj||r"dnd}t jf |d|dd| d S )Nr   10Tr   )r   constr   nargs)r
   boolintr   r   r   r   r   )r   r   r   r   r   r   r   r   r   a   s    zcheck_env.__init__c                 C   s   t || j| j d S r   )r   r   r(   r   r   r   r   r   f   s    zcheck_env.__call__)F)Nr   r   r   r   r   r%   <   s   $r%   )r   argparser   r   r%   r   r   r   r   <module>   s   0