U
    >i                     @   s   d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZ e
jddie
jddie
jddie
jdd	ie
jdd
de
jddde
jdddeddde
jddde
jddddi
Ze
jeeef dddZdd Zeeef dddZdS )    N)AnyDictTupleUnionget_args
get_origin)forms)
EmailFieldtypestringintegernumberbooleandater
   format	date-timeemailuridecimalz^\d+(\.\d+)?$)r
   r   pattern)fieldreturnc                 C   sn   t t| ddi}t|}t| dr6| jr6| j|d< t| drP| jrP| j|d< t| drj| jrj| j|d< |S )	Nr
   r   
max_lengthZ	maxLength
min_lengthZ	minLength	help_textdescription)FIELD_MAPPINGgetr
   dicthasattrr   r   r   )r   
field_spec r"   M/tmp/pip-unpacked-wheel-upujnpc2/allauth/headless/spec/internal/openapikit.pyspec_for_field   s    


r$   c                 C   sH   t | tk	r| dfS t| }t|dks4td |kr<| dfS |d dfS )NT   r   F)r   r   r   lenr
   )typargsr"   r"   r#   unwrap_optional_type(   s    r)   )r   c                 C   s  i }i }g }| j  D ]r\}}i }|jd }r<||d< |jd }r\||d< |||< t|j\}	}
|
rx|| |	tkr|ddi n|	t	kr|ddi n|	t
kr|ddd n|	tkr|dd	i n|	tjkr|dd
d n|	tjkr|ddd nn|	tkr.|ddi nT|	tkrH|ddi n:t|	rtt|	\}}|| ||d< n|ddi |||< qd||d}||fS )Nr   exampler
   r   r   r   floatr   r   r   r   arrayobject)r
   Z
propertiesrequired)Z__dataclass_fields__itemsmetadatar   r)   r
   appendstrupdateintr+   booldatetimer   listr   dataclassesZis_dataclassspec_for_dataclass)dcr*   propsr.   Zfield_idr   Z
descriptorr   ZexaZ
field_typereqZnested_schemaZnested_exmpleZschemar"   r"   r#   r9   1   sJ    






r9   )r8   r6   typingr   r   r   r   r   r   Zdjangor   Zallauth.account.fieldsr	   Z	CharFieldZIntegerFieldZ
FloatFieldZBooleanFieldZ	DateFieldZDateTimeFieldZURLFieldZDecimalFieldr   ZFieldr2   r$   r)   r   r9   r"   r"   r"   r#   <module>   s>             	