U
    ôáêb  ã                   @   s^   d dl mZmZmZ d dlmZ d dlmZ eeƒZ	dd„ Z
ddd„Zdd	d
„Zddd„ZdS )é    )Úprint_functionÚdivisionÚabsolute_import)Ú	getLogger)Údedentc                 C   s   t | ƒ ¡ S )zdedent and left-strip)r   Úlstrip)Ústring© r	   ú/lib/python3.8/site-packages/conda/auxlib/ish.pyÚdals	   s    r   r	   c                 C   s`   zt | |ƒW S  tk
rZ   |D ]2}zt | |ƒW    Y S  tk
rP   Y q Y q X q ‚ Y nX d S )N)ÚgetattrÚAttributeError)ÚobjZ	attr_nameÚaliasesÚaliasr	   r	   r
   Ú	_get_attr   s    r   c              	   C   sr   z2t || | |ƒ}|dk	r|nt| |dd… |ƒW S  tk
rX   t| |||d ƒ Y S  tk
rl   Y dS X dS )a  Return the value of the first key found in the list of search_maps,
    otherwise return None.

    Examples:
        >>> from .collection import AttrDict
        >>> d1 = AttrDict({'a': 1, 'b': 2, 'c': 3, 'e': None})
        >>> d2 = AttrDict({'b': 5, 'e': 6, 'f': 7})
        >>> find_or_none('c', (d1, d2))
        3
        >>> find_or_none('f', (d1, d2))
        7
        >>> find_or_none('b', (d1, d2))
        2
        >>> print(find_or_none('g', (d1, d2)))
        None
        >>> find_or_none('e', (d1, d2))
        6

    Né   )r   Úfind_or_noner   Ú
IndexError©ÚkeyZsearch_mapsr   Z
_map_indexÚattrr	   r	   r
   r      s    "r   c              	   C   sv   z2t || | |ƒ}|d k	r|nt| |dd … |ƒW S  tk
rX   t| |||d ƒ Y S  tk
rp   tƒ ‚Y nX d S )Nr   )r   Úfind_or_raiser   r   r   r	   r	   r
   r   :   s    "r   N)r	   )r	   r   )r	   r   )Z
__future__r   r   r   Zloggingr   Útextwrapr   Ú__name__Úlogr   r   r   r   r	   r	   r	   r
   Ú<module>   s   

