U a@sPdZddlmZmZmZddlmZmZmZdddgZ ddZ ed fd dZ d S) z Commonly useful converters. )absolute_importdivisionprint_function)NOTHINGFactorypiperoptionaldefault_if_nonecsfdd}|S)z A converter that allows an attribute to be optional. An optional attribute is one which can be set to ``None``. :param callable converter: the converter that is used for non-``None`` values. .. versionadded:: 17.1.0 cs|dkr dS|SNval converterr /Users/jalaguru/Documents/Proserv/artifacts/aws_dms_cdk_automation/aws-dms-cdk-automation/venv/lib/python3.8/site-packages/attr/converters.pyoptional_convertersz$optional..optional_converterr )rrr rrr s Ncsvtkr|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 not 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 |SSr )factoryr defaultr rdefault_if_none_converterGsz2default_if_none..default_if_none_convertercs|dk r |SSr r r rr rrOs)r TypeErrorr isinstanceZ takes_self ValueError)rrrr rrr $s   ) __doc__ __future__rrr_makerrr__all__r r r r r rs