Viewing File: /opt/alt/python38/lib/python3.8/site-packages/attr/__pycache__/_funcs.cpython-38.opt-1.pyc

U

#IGZ@sddlmZmZmZddlZddlmZddlmZm	Z	m
Z
ddlmZdde
dfd	d
ZddedfddZd
dZddZddZdS))absolute_importdivisionprint_functionN)	iteritems)NOTHING_obj_setattrfields)AttrsAttributeNotFoundErrorTFc
st|j}}|D]}t||j}dk	r8||s8q|dkrt|jrbt|dd||j<qt|ttt	fr|dkr|jnt}	|	fdd|D||j<qt|t
rԈfddt|D||j<q|||j<q|||j<q|S)a
    Return the ``attrs`` attribute values of *inst* as a dict.

    Optionally recurse into other ``attrs``-decorated classes.

    :param inst: Instance of an ``attrs``-decorated class.
    :param bool recurse: Recurse into classes that are also
        ``attrs``-decorated.
    :param callable filter: A callable whose return code determines whether an
        attribute or element is included (``True``) or dropped (``False``).  Is
        called with the :class:`attr.Attribute` as the first argument and the
        value as the second argument.
    :param callable dict_factory: A callable to produce dictionaries from.  For
        example, to produce ordered dictionaries instead of normal Python
        dictionaries, pass in ``collections.OrderedDict``.
    :param bool retain_collection_types: Do not convert to ``list`` when
        encountering an attribute whose type is ``tuple`` or ``set``.  Only
        meaningful if ``recurse`` is ``True``.

    :rtype: return type of *dict_factory*

    :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs``
        class.

    ..  versionadded:: 16.0.0 *dict_factory*
    ..  versionadded:: 16.1.0 *retain_collection_types*
    NTrecursefilterdict_factorycs*g|]"}t|jr"t|ddn|qS)Trhas	__class__asdict).0i)rr

/_funcs.py
<listcomp>3s
zasdict.<locals>.<listcomp>c3sF|]>\}}t|jr t|dn|t|jr8t|dn|fVqdS))rNrrZkkZvv)dfrr	<genexpr>;szasdict.<locals>.<genexpr>)r	rgetattrnamerr
isinstancetuplelistsetdictr)
instrr
rretain_collection_typesattrsrvavcfr)rrr
rr
s0


rc
st|j}g}||D]}t||j}dk	r:||s:q|dkrt|jrf|t|ddnt|tt	t
frdkr|jnt	}	||	fdd|DnJt|trdkr|jnt}
||
fddt|Dn
||q||qt	kr|S|S)a8
    Return the ``attrs`` attribute values of *inst* as a tuple.

    Optionally recurse into other ``attrs``-decorated classes.

    :param inst: Instance of an ``attrs``-decorated class.
    :param bool recurse: Recurse into classes that are also
        ``attrs``-decorated.
    :param callable filter: A callable whose return code determines whether an
        attribute or element is included (``True``) or dropped (``False``).  Is
        called with the :class:`attr.Attribute` as the first argument and the
        value as the second argument.
    :param callable tuple_factory: A callable to produce tuples from.  For
        example, to produce lists instead of tuples.
    :param bool retain_collection_types: Do not convert to ``list``
        or ``dict`` when encountering an attribute which type is
        ``tuple``, ``dict`` or ``set``.  Only meaningful if ``recurse`` is
        ``True``.

    :rtype: return type of *tuple_factory*

    :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs``
        class.

    ..  versionadded:: 16.2.0
    NTrr

tuple_factoryr#c	s,g|]$}t|jr$t|ddn|qS)Tr)rrastuple)rjr
retainr*rrrps
zastuple.<locals>.<listcomp>c3sJ|]B\}}t|jr"t|dn|t|jr<t|dn|fVqdS))r*r#Nr+r)r/r*rrrys 
zastuple.<locals>.<genexpr>)
r	rrrrappendr,rrrr r!r)r"rr
r*r#r$r%r&r'r(rrr.rr,Fs4




r,cCst|dddk	S)z
    Check whether *cls* is a class with ``attrs`` attributes.

    :param type cls: Class to introspect.
    :raise TypeError: If *cls* is not a class.

    :rtype: :class:`bool`
    Z__attrs_attrs__N)r)clsrrrrs	rcKsvddl}|jdtddt|}t|j}t|D]<\}}t||t}|tkrdt	dj
||jdt|||q4|S)a
    Copy *inst* and apply *changes*.

    :param inst: Instance of a class with ``attrs`` attributes.
    :param changes: Keyword changes in the new copy.

    :return: A copy of inst with *changes* incorporated.

    :raise attr.exceptions.AttrsAttributeNotFoundError: If *attr_name* couldn't
        be found on *cls*.
    :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs``
        class.

    ..  deprecated:: 17.1.0
        Use :func:`evolve` instead.
    rNz6assoc is deprecated and will be removed after 2018/01.)
stacklevelz&{k} is not an attrs attribute on {cl}.)kZcl)warningswarnDeprecationWarningcopyr	rrrrr
formatr)r"changesr5newr$r4r'r&rrrassocs$

r<cKsb|j}t|}|D]D}|jsq|j}|ddkr4|n
|dd}||krt||||<q|f|S)a
    Create a new instance, based on *inst* with *changes* applied.

    :param inst: Instance of a class with ``attrs`` attributes.
    :param changes: Keyword changes in the new copy.

    :return: A copy of inst with *changes* incorporated.

    :raise TypeError: If *attr_name* couldn't be found in the class
        ``__init__``.
    :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs``
        class.

    ..  versionadded:: 17.1.0
    r_rN)rr	Zinitrr)r"r:r1r$r&Z	attr_nameZ	init_namerrrevolvesr>)Z
__future__rrrr8Z_compatr_makerrr	
exceptionsr
r!rrr,rr<r>rrrr<module>s
<
H!
Back to Directory File Manager