Ë
    
V.j  ã                   óT   — d Z ddlZddlmZ ddlmZmZmZmZ g d¢Z	d„ Z
edfd„Zd	„ Zy)
z
Commonly useful converters.
é    Né   )Ú_AnnotationExtractor)ÚNOTHINGÚ	ConverterÚFactoryÚpipe)Údefault_if_noneÚoptionalr   Úto_boolc                 óX  ‡ — t        ‰ t        «      rˆ fd„}nˆ fd„}t        ‰ «      }|j                  «       }|r t        j
                  |   |j                  d<   |j                  «       }|r t        j
                  |   |j                  d<   t        ‰ t        «      rt        |dd¬«      S |S )a_  
    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.

    Args:
        converter (typing.Callable):
            the converter that is used for non-`None` values.

    .. versionadded:: 17.1.0
    c                 ó   •— | €y  ‰| ||«      S ©N© )ÚvalÚinstÚfieldÚ	converters      €úQC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\attr/converters.pyÚoptional_converterz$optional.<locals>.optional_converter&   s   ø€ Øˆ{ØÙ˜S $¨Ó.Ð.ó    c                 ó   •— | €y  ‰| «      S r   r   )r   r   s    €r   r   z$optional.<locals>.optional_converter-   s   ø€ Øˆ{ØÙ˜S“>Ð!r   r   ÚreturnT)Ú
takes_selfÚtakes_field)Ú
isinstancer   r   Úget_first_param_typeÚtypingÚOptionalÚ__annotations__Úget_return_type)r   r   ÚxtrÚtÚrts   `    r   r
   r
      s›   ø€ ô �)œYÔ'õ	/ô	"ô
 ˜yÓ
)€Cà× Ñ Ó"€AÙÜ4:·O±OÀAÑ4FÐ×*Ñ*¨5Ñ1à	×	Ñ	Ó	€BÙ	Ü7=·±ÀrÑ7JÐ×*Ñ*¨8Ñ4ä�)œYÔ'ÜÐ+¸È$ÔOÐOàÐr   c                 óè   ‡ — ‰ t         u r|€d}t        |«      ‚‰ t         ur|�d}t        |«      ‚|�t        |«      Š t        ‰ t        «      r ‰ j                  rd}t        |«      ‚ˆ fd„}|S ˆ fd„}|S )aÞ  
    A converter that allows to replace `None` values by *default* or the result
    of *factory*.

    Args:
        default:
            Value to be used if `None` is passed. Passing an instance of
            `attrs.Factory` is supported, however the ``takes_self`` option is
            *not*.

        factory (typing.Callable):
            A callable that takes no parameters whose result is used if `None`
            is passed.

    Raises:
        TypeError: If **neither** *default* or *factory* is passed.

        TypeError: If **both** *default* and *factory* are passed.

        ValueError:
            If an instance of `attrs.Factory` is passed with
            ``takes_self=True``.

    .. versionadded:: 18.2.0
    z(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 ‰j                  «       S r   )Úfactory©r   Údefaults    €r   Údefault_if_none_converterz2default_if_none.<locals>.default_if_none_converterl   s   ø€ ØˆØ�
à—?‘?Ó$Ð$r   c                 ó   •— | �| S ‰S r   r   r'   s    €r   r)   z2default_if_none.<locals>.default_if_none_convertert   s   ø€ ØˆØ�
àˆNr   )r   Ú	TypeErrorr   r   r   Ú
ValueError)r(   r&   Úmsgr)   s   `   r   r	   r	   B   sˆ   ø€ ð4 ”'Ñ˜g˜oØ8ˆÜ˜‹nÐà”gÑ 'Ð"5ØEˆÜ˜‹nÐàÐÜ˜'Ó"ˆä�'œ7Ô#Ø×ÒØEˆCÜ˜S“/Ð!ô	%ð %Ð$ô	ð %Ð$r   c                 óv   — t        | t        «      r| j                  «       } | dv ry| dv ryd| ›�}t        |«      ‚)aÔ  
    Convert "boolean" strings (for example, from environment variables) to real
    booleans.

    Values mapping to `True`:

    - ``True``
    - ``"true"`` / ``"t"``
    - ``"yes"`` / ``"y"``
    - ``"on"``
    - ``"1"``
    - ``1``

    Values mapping to `False`:

    - ``False``
    - ``"false"`` / ``"f"``
    - ``"no"`` / ``"n"``
    - ``"off"``
    - ``"0"``
    - ``0``

    Raises:
        ValueError: For any other value.

    .. versionadded:: 21.3.0
    )TÚtruer"   ÚyesÚyÚonÚ1r   T)FÚfalseÚfÚnoÚnÚoffÚ0r   FzCannot convert value to bool: )r   ÚstrÚlowerr,   )r   r-   s     r   r   r   }   sG   € ô8 �#”sÔØ�i‰i‹kˆà
Ð;Ñ;ØØ
Ð=Ñ=Øà*¨3¨'Ð
2€CÜ
�S‹/Ðr   )Ú__doc__r   Ú_compatr   Ú_maker   r   r   r   Ú__all__r
   r	   r   r   r   r   Ú<module>r@      s7   ðñó å )ß 4Ó 4ò€ò*ðZ $¨Tó 8%óv%r   