o
    h<                     @   s   d dl 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 d dlm
Z
 defdd	Zd
eddfddZd
eddfddZd
edefddZd
ededdfddZd
ededdfddZd
eddfddZd
eddfddZdS )    )Path)forms)resolvereverse)Resolver404)app_settings)base_signup_form_classreturnc                  C   s   dd l } ttjjd }t|d}| |}W d    n1 s!w   Y  ttjjd }t|d}| d}W d    n1 sEw   Y  ||d d< t| t	| t
|}t|| t|| t| t| |S )Nr   zdoc/openapi.yamlrbzdoc/description.mdutf8infodescription)yamlr   __file__parentopen	safe_loadreaddecodechroot
pin_clientdrop_unused_pathsdrop_unused_tagsdrop_unused_tag_groupsspecify_signup_fieldsspecify_custom_signup_form)r   pathfspecr   	used_tags r    `/var/www/html/env_mimamsha/lib/python3.10/site-packages/allauth/headless/spec/internal/schema.py
get_schema   s$   

r"   r   Nc                 C   sT   t d}|dd }| d  }i | d< |D ]\}}|d|}|| d |< qd S )Nzheadless:openapi_yaml/r   pathsz	/_allauth)r   
rpartitionitemsreplace)r   urlrootr$   r   	path_specnew_pathr    r    r!   r   #   s   r   c                 C   sZ   t tjdkr	d S tjd }| d  }i | d< |D ]\}}|d|}|| d |< qd S )N   r   r$   {client})lenr   CLIENTSr&   r'   )r   clientr$   r   r*   r+   r    r    r!   r   -   s   
r   c           	   
   C   s   | d }t  }t| D ]:\}}d}tjD ]}zt|d| d}W  n	 ty.   Y qw |rB| D ]\}}||d  q5q|	| q|S )Nr$   Fr-   Ttags)
setlistr&   r   r/   r   r'   r   updatepop)	r   r$   r   r   r*   
found_pathr0   methodmethod_specr    r    r!   r   8   s$   
r   r   c                 C   s:   | d }g | d< |D ]}|d |vrq
| d  | q
d S )Nr1   name)append)r   r   r1   tagr    r    r!   r   L   s   r   c                    sF   | d }g | d< |D ]}t  fdd|d D r | d | q
d S )Nzx-tagGroupsc                    s   g | ]}| v qS r    r    ).0tr   r    r!   
<listcomp>Y   s    z*drop_unused_tag_groups.<locals>.<listcomp>r1   )anyr:   )r   r   
tag_groups	tag_groupr    r>   r!   r   U   s   r   c                 C   s   | d d d }| d d d }|d }g }dD ]}t j|}|s(|| q|d r1|| q||d< t jd}|sJ|d	 d d
 |d	< d S |d s[|d	 d
 d d d S d S )N
componentsschemas
BaseSignupSignup
properties)emailphoneusernamerequired	password1allOfr,   password)account_settingsSIGNUP_FIELDSgetr5   r:   remove)r   base_signupsignuprG   required_fields
field_namefieldpassword_fieldr    r    r!   r   ]   s$   
r   c                 C   s2  t  }| d d d }tjdditjdditjdditjdditjdd	d
tjddd
tjddd
tj	ddd
tj
ddddi	}|j D ]Q\}}|t|ddi}|sVqEt|}t|drg|jrg|j|d< t|drt|jrt|j|d< t|dr|jr|d | t|dr|jr|j|d< ||d |< qEd S )NrC   rD   rE   typestringintegernumberbooleandate)rY   formatz	date-timerH   uridecimalz^\d+(\.\d+)?$)rY   r_   pattern
max_length	maxLength
min_length	minLengthrK   	help_textr   rG   )r   r   	CharFieldIntegerField
FloatFieldBooleanField	DateFieldDateTimeField
EmailFieldURLFieldDecimalFieldbase_fieldsr&   rQ   rY   dicthasattrrc   re   rK   r:   rg   )r   
form_classrS   field_mappingrV   rW   
field_specr    r    r!   r   p   s>   






r   )pathlibr   djangor   django.urlsr   r   django.urls.exceptionsr   allauth.accountr   rO   %allauth.account.internal.flows.signupr   allauth.headlessrr   r"   r   r   r2   r   r   r   r   r   r    r    r    r!   <module>   s    
	