
    uYf{                         d Z ddlmZmZ ddlmZmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ d	d
lmZ  ed      Zd Z G d de      ZdefdZdededefdZy)z$Preconfigured converters for pyyaml.    )datedatetime)AnyTypeTypeVarUnion)	safe_dump	safe_load)FrozenSetSubscriptable   )BaseConverter	Converter)configure_union_passthrough   )validate_datetimeTc                 B    t        | t              st        d|        | S )NzExpected date, got )
isinstancer   
ValueError)v_s     U/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/cattrs/preconf/pyyaml.pyvalidate_dater      s$    a.qc233H    c            	       @    e Zd Zd
dedededefdZdedee   defd	Zy)PyyamlConverterNobjunstructure_askwargsreturnc                 <    t        | j                  ||      fi |S )N)r   )r	   unstructure)selfr   r   r   s       r   dumpszPyyamlConverter.dumps   s#    ))#n)MXQWXXr   dataclc                 8    | j                  t        |      |      S N)	structurer
   )r#   r%   r&   s      r   loadszPyyamlConverter.loads   s    ~~ior22r   r(   )	__name__
__module____qualname__r   strr$   r   r   r*    r   r   r   r      sF    Y Yc YC YC Y3# 347 3q 3r   r   	converterc                 6   | j                  t        d        | j                  t        d        | j                  t        t               | j                  t
        t               t        t        t        t        t        t        dt        t        t
        f   |        y)z
    Configure the converter for use with the pyyaml library.

    * frozensets are serialized as lists
    * string enums are converted into strings explicitly
    * datetimes and dates are validated
    c                 B    | j                   t        u r| S | j                  S r(   )	__class__r.   valuer   s    r   <lambda>z%configure_converter.<locals>.<lambda>'   s    AKK3.q AGG r   c                     | S r(   r/   r5   s    r   r6   z%configure_converter.<locals>.<lambda>,   s    A r   N)register_unstructure_hookr.   r   register_structure_hookr   r   r   r   r   boolintfloatbytes)r0   s    r   configure_converterr>      sn     ''; ''+>%%h0AB%%dM:c4eT5(D@A9r   argsr   r    c                  t    t         t        i|j                  di       |d<   t        | i |}t	        |       |S )Nunstruct_collection_overrides)r   listgetr   r>   )r?   r   ress      r   make_converterrE   4   sF    /
**4b
9/F*+ 4
*6
*CJr   N)__doc__r   r   typingr   r   r   r   yamlr	   r
   cattrs._compatr   
convertersr   r   
strategiesr    r   r   r   r   r>   rE   r/   r   r   <module>rM      s`    * # , , % 1 1 4 CL3i 3= ,#   r   