o
    "iL                     @   s  d 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 ddlmZmZmZ ddl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 m!Z! g dZ"ed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 tomlkit.    )	b85decode	b85encode)Set)datedatetime)Enum)
attrgetter)AnyTypeVarUnion)dumpsloads)FloatIntegerString   )
is_mappingis_subclass)BaseConverter	Converter)configure_union_passthrough   )validate_datetimewrap)TomlkitConverterconfigure_convertermake_converterT_value_c                	   @   sB   e Zd ZddedededefddZded	ee defd
dZdS )r   Nobjunstructure_askwargsreturnc                 K   s   t | j||dfi |S )N)r    )r   unstructure)selfr   r    r!    r%   V/var/www/html/premium_crap/venv/lib/python3.10/site-packages/cattrs/preconf/tomlkit.pyr      s   zTomlkitConverter.dumpsdataclc                 C   s   |  t||S N)	structurer   )r$   r'   r(   r%   r%   r&   r      s   zTomlkitConverter.loadsr)   )	__name__
__module____qualname__r	   strr   typer   r   r%   r%   r%   r&   r      s    r   	converterc              	      s     tdd   tdd  ddtf fdd} jt|dfg  td	d    tt  t	d
d    t	dd  t
ttttttttf   dS )z
    Configure the converter for use with the tomlkit library.

    * bytes are serialized as base85 strings
    * sets are serialized as lists
    * tuples are serializas as lists
    * mapping keys are coerced into strings when unstructuring
    c                 S   s   t | S r)   )r   v_r%   r%   r&   <lambda>)       z%configure_converter.<locals>.<lambda>c                 S   s   | r	t | dS ddS )N    utf8r   decoder2   r%   r%   r&   r4   +   s    Nr(   c                    sf   t }t| dd }|r+t|d t rt|d trtnd }nt|d tr+dtfdd} j| ||dS )N__args__r   kc                 S   s   t | dS )Nr7   r8   )r<   r%   r%   r&   key_handler9   s   zIconfigure_converter.<locals>.gen_unstructure_mapping.<locals>.key_handler)unstructure_tor=   )r.   getattrr   r   _enum_value_getterbytesgen_unstructure_mapping)r(   r>   r=   argsr0   r%   r&   rB   .   s   z4configure_converter.<locals>.gen_unstructure_mappingTc                 S   s   | S r)   r%   r:   r%   r%   r&   r4   F   s    c                 S   s   |   S r)   )	isoformatr:   r%   r%   r&   r4   H   r5   c                 S   s
   t | S r)   )r   fromisoformatr1   r%   r%   r&   r4   I   s   
 r)   )register_structure_hookrA   register_unstructure_hookr	   _unstructure_funcregister_func_listr   r   r   r   r   r   r.   r   boolintr   floatr   )r0   rB   r%   rD   r&   r       s   	
r   rC   r!   r"   c                  O   s6   t ttti|di |d< t| i |}t| |S )Nunstruct_collection_overrides)r   listtuplegetr   r   )rC   r!   resr%   r%   r&   r   O   s   
r   N)(__doc__base64r   r   collections.abcr   r   r   enumr   operatorr   typingr	   r
   r   tomlkitr   r   tomlkit.itemsr   r   r   _compatr   r   
convertersr   r   
strategiesr    r   r   __all__r   r@   r   r   r   r%   r%   r%   r&   <module>   s(    /