Ë
    zñ�j*  ã                   ót   — d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
mZmZ ddlmZ erddlmZ  G d„ d	«      Zy)
a.  
Environment variable configuration loading class.

Using a class here doesn't really model anything but makes state passing (in a
situation requiring it) more convenient.

This module is currently considered private/an implementation detail and should
not be included in the Sphinx API documentation.
é    N)ÚTYPE_CHECKINGÚAnyÚDictÚIterableÚListÚMappingÚSequenceé   )ÚUncastableEnvVarÚAmbiguousEnvVar)Údebug)ÚConfigc                   óÄ   — e Zd Zdddeddfd„Zdeeef   fd„Zdee   d	e	ee
e   f   deeef   fd
„Zdee   defd„Zdee   ddfd„Zde
e   deddfd„Zdededefd„Zy)ÚEnvironmentÚconfigr   ÚprefixÚreturnNc                 ó.   — || _         || _        i | _        y ©N)Ú_configÚ_prefixÚdata)Úselfr   r   s      úK/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/invoke/env.pyÚ__init__zEnvironment.__init__   s   € ØˆŒØˆŒØ$&ˆ�	ó    c                 ó˜  — | j                  g i ¬«      }d}t        |j                  | j                  |«      «       |j	                  «       D ]N  \  }}| j                  xs d|z   }|t
        j                  v sŒ,| j                  |t
        j                  |   «       ŒP t        dj                  | j                  «      «       | j                  S )zý
        Return a nested dict containing values from `os.environ`.

        Specifically, values whose keys map to already-known configuration
        settings, allowing us to perform basic typecasting.

        See :ref:`env-vars` for details.
        )Úkey_pathÚenv_varsz>Scanning for env vars according to prefix: {!r}, mapping: {!r}Ú zObtained env var config: {!r})	Ú_crawlr   Úformatr   ÚitemsÚosÚenvironÚ	_path_setr   )r   r   ÚmÚenv_varr   Úreal_vars         r   ÚloadzEnvironment.load   s§   € ð —;‘;¨°R�;Ó8ˆØLˆÜˆa�h‰h�t—|‘| XÓ.Ô/à!)§¡Ó!1ò 	?ÑˆG�XØŸ™Ò*¨¨gÑ5ˆHØœ2Ÿ:™:Ò%Ø—‘˜x¬¯©°HÑ)=Õ>ð	?ô 	Ð-×4Ñ4°T·Y±YÓ?Ô@Ø�y‰yÐr   r   r   c                 ó”  — i }| j                  |«      }t        |d«      r”t        |j                  «      rt        |d«      rs|j                  «       D ]^  }t	        |fi |¤Ž}||gz   }| j                  ||«      }|D ]"  }||v sŒd}	t        |	j                  |«      «      ‚ |j                  |«       Œ` |S ||| j                  |«      <   |S )a£  
        Examine config at location ``key_path`` & return potential env vars.

        Uses ``env_vars`` dict to determine if a conflict exists, and raises an
        exception if so. This dict is of the following form::

            {
                'EXPECTED_ENV_VAR_HERE': ['actual', 'nested', 'key_path'],
                ...
            }

        Returns another dictionary of new keypairs as per above.
        ÚkeysÚ__getitem__zFound >1 source for {})
Ú	_path_getÚhasattrÚcallabler,   Údictr!   r   r"   ÚupdateÚ_to_env_var)
r   r   r   Únew_varsÚobjÚkeyÚmerged_varsÚmerged_pathÚcrawledÚerrs
             r   r!   zEnvironment._crawl0   sØ   € ð  *,ˆØ�n‰n˜XÓ&ˆô �C˜Ô Ü˜Ÿ™Ô"Ü˜˜]Ô+à—x‘x“zò 
)�Ü" 8Ñ8¨xÑ8�Ø&¨#¨Ñ.�ØŸ+™+ k°;Ó?�à"ò ?�CØ˜h’Ø6˜Ü-¨c¯j©j¸«oÓ>Ð>ð?ð
 —‘ Õ(ð
)ð ˆð 4<ˆH�T×%Ñ% hÓ/Ñ0Øˆr   c                 ó@   — dj                  |«      j                  «       S )NÚ_)ÚjoinÚupper)r   r   s     r   r3   zEnvironment._to_env_varX   s   € Ø�x‰x˜Ó!×'Ñ'Ó)Ð)r   c                 ó6   — | j                   }|D ]  }||   }Œ	 |S r   )r   )r   r   r5   r6   s       r   r.   zEnvironment._path_get[   s*   € ð �l‰lˆØò 	ˆCØ�c‘(‰Cð	àˆ
r   Úvaluec                 ó¢   — | j                   }|d d D ]  }||vri ||<   ||   }Œ | j                  |«      }| j                  ||«      }|||d   <   y )Néÿÿÿÿ)r   r.   Ú_cast)r   r   r@   r5   r6   ÚoldÚnews          r   r&   zEnvironment._path_setc   si   € ð �i‰iˆØ˜C˜R�=ò 	ˆCØ˜#‰~Ø��C‘Ø�c‘(‰Cð	ð �n‰n˜XÓ&ˆØ�j‰j˜˜eÓ$ˆØˆˆH�R‰LÒr   rD   rE   c                 óò   — t        |t        «      r|dvS t        |t        «      r|S |€|S t        |t        t        f«      r'd}|j                  t        |«      «      }t        |«      ‚|j                  |«      S )N)Ú0r    z,Can't adapt an environment string into a {}!)	Ú
isinstanceÚboolÚstrÚlistÚtupler"   Útyper   Ú	__class__)r   rD   rE   r:   s       r   rC   zEnvironment._casto   so   € Ü�cœ4Ô Ø˜iÐ'Ð'Ü˜œSÔ!ØˆJØˆ[ØˆJÜ˜œd¤E˜]Ô+Ø@ˆCØ—*‘*œT #›YÓ'ˆCÜ" 3Ó'Ð'à—=‘= Ó%Ð%r   )Ú__name__Ú
__module__Ú__qualname__rJ   r   r   r   r*   r   r   r	   r!   r   r3   r.   r&   rC   © r   r   r   r      sÎ   „ ð'˜xð '°ð '¸ó 'ð
�d˜3 ˜8‘nó ð*&Ø˜S™	ð&Ø-4°S¸(À3¹-Ð5GÑ-Hð&à	ˆc�3ˆh‰ó&ðP* H¨S¡Mð *°có *ð (¨3¡-ð °Hó ð
  (¨3¡-ð 
 ¸ð 
 Àó 
 ð&˜ð & 3ð &¨3ô &r   r   )Ú__doc__r$   Útypingr   r   r   r   r   r   r	   Ú
exceptionsr   r   Úutilr   r   r   r   rR   r   r   ú<module>rW      s0   ðñó 
ß N× NÑ Nç 9Ý áÝ÷f&ò f&r   