o
    h                     @   s8  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z
 d dlmZ d dlmZ d dlm	Z	 d dlmZ d d	lmZ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
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ed
dfd d!Z dS )"    )Path)Optional)reverse)Resolver404)app_settings)base_signup_form_class)script_aware_resolve)get_adapter)spec_for_dataclassspec_for_field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|| t| t| |S )Nr   zdoc/openapi.yamlrbzdoc/description.mdutf8infodescription)yamlr   __file__parentopen	safe_loadreaddecodespecify_userchroot
pin_clientdrop_unused_client_parameter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/pos/venv/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   s   t tjdkr	d S i }tjd }g d}dtdtt fdd}| d  D ]P\}}t|}|d	|}d|v rI||d }	|	rD|	|d< n|d |D ]%}
|
|v rp||
 }t	|trpd|v rp||d }	|	rk|	|d< qK|d qK|||< q%|| d< d S )
N   r   )getpostputdeleteoptionsheadpatchtrace
parametersr   c                 S   s   dd | D }|p
d S )Nc                 S   s(   g | ]}t |tr|d dks|qS )z$refz#/components/parameters/Client)
isinstancedictr2   ).0pr%   r%   r&   
<listcomp>D   s    z;pin_client.<locals>.remove_client_param.<locals>.<listcomp>r%   )r:   filteredr%   r%   r&   remove_client_paramC   s   z'pin_client.<locals>.remove_client_paramr)   {client})
lenr   CLIENTSlistr   r+   r<   r,   popr;   )r#   processed_pathsclient_valuehttp_methodsrA   path_key	path_itemcurrent_path_itemprocessed_path_key
new_paramsmethod_nameoperation_itemr%   r%   r&   r   2   s2   





r   c                 C   sF   t tjdkr	d S | d }r|d }r!|dd  d S d S d S )Nr1   
componentsr:   Client)rC   r   rD   r2   rF   )r#   rQ   r:   r%   r%   r&   r   h   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)   FrB   Ttags)
setrE   r+   r   rD   r   r,   r   updaterF   )	r#   r)   r$   r!   r/   
found_pathclientmethodmethod_specr%   r%   r&   r   q   s$   
r   r$   c                 C   s:   | d }g | d< |D ]}|d |vrq
| d  | q
d S )NrS   name)append)r#   r$   rS   tagr%   r%   r&   r      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%   )r=   tr$   r%   r&   r?      s    z*drop_unused_tag_groups.<locals>.<listcomp>rS   )anyr[   )r#   r$   
tag_groups	tag_groupr%   r^   r&   r      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 )NrQ   schemas
BaseSignupSignup
properties)emailphoneusernamerequired	password1allOfr1   password)account_settingsSIGNUP_FIELDSr2   rF   r[   remove)r#   base_signupsignupre   required_fields
field_namefieldpassword_fieldr%   r%   r&   r      s$   
r   c                 C   sd   t  }| d d d }|j D ]\}}t|do|j}t|}|r)|d | ||d |< qd S )NrQ   rb   rc   ri   re   )r   base_fieldsr+   hasattrri   r   r[   )r#   
form_classrp   rs   rt   is_required
field_specr%   r%   r&   r       s   r    c                 C   sP   t   }t|\}}|| d d d< | d d d d }|  || d S )NrQ   rb   Userexamplesvalue)r	   get_user_dataclassr
   clearrU   )r#   dcschemaexampleexample_valuer%   r%   r&   r      s   
r   )!pathlibr   typingr   django.urlsr   django.urls.exceptionsr   allauth.accountr   rm   %allauth.account.internal.flows.signupr   allauth.core.internal.urlkitr   allauth.headlessallauth.headless.adapterr	   )allauth.headless.spec.internal.openapikitr
   r   r<   r'   r   r   r   rT   r   r   r   r   r    r   r%   r%   r%   r&   <module>   s(    
6		