£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    .`                 @   sp   d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
 esLddlZddlZddd	gZd
d Zedfdd	ZdS )z
Commonly useful converters.
    )absolute_importdivisionprint_function   )PY2)NOTHINGFactorypipeNr	   optionaldefault_if_nonec          	      s    fdd}t sd}yt }W n ttfk
r:   Y nX |rt|j }|rz|d jtj	j
k	rztj|d j |jd< |jtjj
k	rtj|j |jd< |S )aO  
    A converter that allows an attribute to be optional. An optional attribute
    is one which can be set to ``None``.

    Type annotations will be inferred from the wrapped converter's, if it
    has any.

    :param callable converter: the converter that is used for non-``None``
        values.

    .. versionadded:: 17.1.0
    c                s   | d krd S  | S )N )val)	converterr   @/opt/alt/python37/lib/python3.7/site-packages/attr/converters.pyoptional_converter%   s    z$optional.<locals>.optional_converterNr   r   return)r   inspectZ	signature
ValueError	TypeErrorlistZ
parametersvaluesZ
annotationZ	ParameteremptytypingZOptional__annotations__Zreturn_annotationZ	Signature)r   r   sigZparamsr   )r   r   r
      s     c                sv    t kr|dkrtd t k	r0|dk	r0td|dk	r@t| t trf jrXtd fdd}n fdd}|S )a  
    A converter that allows to replace ``None`` values by *default* or the
    result of *factory*.

    :param default: Value to be used if ``None`` is passed. Passing an instance
       of `attr.Factory` is supported, however the ``takes_self`` option
       is *not*.
    :param callable factory: A callable that takes no parameters whose result
       is used if ``None`` is passed.

    :raises TypeError: If **neither** *default* or *factory* is passed.
    :raises TypeError: If **both** *default* and *factory* are passed.
    :raises ValueError: If an instance of `attr.Factory` is passed with
       ``takes_self=True``.

    .. versionadded:: 18.2.0
    Nz(Must pass either `default` or `factory`.z5Must pass either `default` or `factory` but not both.z1`takes_self` is not supported by default_if_none.c                s   | d k	r| S    S )N)factory)r   )defaultr   r   default_if_none_convertera   s    z2default_if_none.<locals>.default_if_none_converterc                s   | d k	r| S  S )Nr   )r   )r   r   r   r   i   s    )r   r   r   
isinstanceZ
takes_selfr   )r   r   r   r   )r   r   r   >   s    
)__doc__Z
__future__r   r   r   Z_compatr   _maker   r   r	   r   r   __all__r
   r   r   r   r   r   <module>   s   '