JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB .` @spdZddlmZmZmZddlmZddlmZm Z m Z esLddl Z ddl Z ddd gZ d dZedfd d ZdS) z Commonly useful converters. )absolute_importdivisionprint_function)PY2)NOTHINGFactorypipeNr optionaldefault_if_nonec sfdd}tsd}yt}Wnttfk r:YnX|rt|j}|rz|djtj j k rzt j |dj|j d<|jtjj 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 cs|dkr dS|S)N)val) converterr @/opt/alt/python37/lib/python3.7/site-packages/attr/converters.pyoptional_converter%sz$optional..optional_converterNrr return)rinspect signature ValueError TypeErrorlist parametersvalues annotation ParameteremptytypingOptional__annotations__return_annotation Signature)rrsigparamsr )rrr s  csvtkr|dkrtdtk r0|dk r0td|dk r@t|ttrfjrXtdfdd}n fdd}|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.cs|dk r |SS)N)factory)r )defaultr rdefault_if_none_converterasz2default_if_none..default_if_none_convertercs|dk r |SS)Nr )r )r$r rr%is)rrr isinstanceZ takes_selfr)r$r#r%r )r$rr >s  )__doc__ __future__rrr_compatr_makerrr rr__all__r r r r r rs '