o
    Ti                     @   s   d Z ddlmZ ddlmZmZmZ ddlmZmZm	Z	 ddl
mZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ edZG dd deZdefddZeedededefddZdS )z#Preconfigured converters for cbor2.    )Set)datedatetimetimezone)AnyTypeVarUnion)dumpsloads   )BaseConverter	Converteridentity)is_literal_containing_enums)configure_union_passthrough   )is_primitive_enum'literals_with_enums_unstructure_factorywrapTc                	   @   sF   e Zd ZddedededefddZded	ee dedefd
dZdS )Cbor2ConverterNobjunstructure_askwargsreturnc                 K   s   t | j||dfi |S )N)r   )r	   unstructure)selfr   r   r    r   H/home/ubuntu/.local/lib/python3.10/site-packages/cattrs/preconf/cbor2.pyr	      s   zCbor2Converter.dumpsdataclc                 K   s   |  t|fi ||S N)	structurer
   )r   r    r!   r   r   r   r   r
      s   zCbor2Converter.loadsr"   )	__name__
__module____qualname__r   bytesr	   typer   r
   r   r   r   r   r      s    "r   	converterc                 C   sz   |  tdd  | tdd  |  tdd  | tdd  | tdd  | tt tt	t
tttdtf |  dS )z
    Configure the converter for use with the cbor2 library.

    * datetimes are serialized as timestamp floats
    * sets are serialized as lists
    * string and int enums are passed through when unstructuring
    c                 S      |   S r"   )	timestampvr   r   r   <lambda>"       z%configure_converter.<locals>.<lambda>c                 S   s   t | tjS r"   )r   fromtimestampr   utcr-   _r   r   r   r.   $   s    c                 S   r*   r"   )	isoformatr,   r   r   r   r.   &   r/   c                 S   s
   t | S r"   )r   fromisoformatr2   r   r   r   r.   '   s   
 c                 S   s   t S r"   r   )tr   r   r   r.   (   s    N)register_unstructure_hookr   register_structure_hookr   !register_unstructure_hook_factoryr   r   r   r   r   strboolintfloatr'   )r)   r   r   r   configure_converter   s   r>   argsr   r   c                  O   s2   t ti|di |d< t| i |}t| |S )Nunstruct_collection_overrides)r   listgetr   r>   )r?   r   resr   r   r   make_converter/   s   
rD   N)__doc__collections.abcr   r   r   r   typingr   r   r   cbor2r	   r
   
convertersr   r   fnsr   literalsr   
strategiesr    r   r   r   r   r   r>   rD   r   r   r   r   <module>   s    