o
    ix                     @   sb  d Z ddlZddlmZmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlZded	eeeef eeee f f fd
dZdeded	ee	 fddZdeeef deeee f defddZdeeef deeee f dededef
ddZdeeef deeee f dedededefddZded	efddZdeeef defd d!ZdS )"zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    N)AnyDictListOptionalTuple)	BaseModel)	FieldInfo   )SecurityMetadatafind_field_metadatasecurityreturnc                 C   s   i }i }| d u r||fS t | tstd| jj}|D ]G}|| }t| |}|d u r+qt|t}|d u r5q|jrDt	||| ||f  S |j
rb|jdv rZt |tsZt|||||  qt||||| q||fS )Nz!security must be a pydantic model)basiccustom)
isinstancer   	TypeError	__class__model_fieldsgetattrr   r
   option_parse_security_optionschemesub_type_parse_security_scheme)r   headersquery_params
sec_fieldsname	sec_fieldvaluemetadata r!   ^/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/mistralai/utils/security.pyget_security   s4   


r#   security_classc                 C   sP   | d ur| S t |tstdi }tdrtd|d< |r&|di |S d S )Nz-security_class must be a pydantic model classMISTRAL_API_KEYapi_keyr!   )
issubclassr   r   osgetenv)r   r$   security_dictr!   r!   r"   get_security_from_env:   s   

r+   r   r   r   c              	   C   s`   t |ts	td|jj}|D ]}|| }t|t}|d u s!|js"qt| |||t	|| qd S )Nz(security option must be a pydantic model)
r   r   r   r   r   r   r
   r   r   r   )r   r   r   
opt_fieldsr   	opt_fieldr    r!   r!   r"   r   I   s   

r   scheme_metadata
field_namer   c                 C   s   |j }|j}t|trL|dkr |dkrt| | d S |dkr d S |jj}|D ]#}|| }	t|	t}
|
d u s:|
j	d u r;q&t
||}t| |||
|| q&d S t| ||||| d S )Nhttpr   r   )scheme_typer   r   r   _parse_basic_auth_schemer   r   r   r
   r/   r   _parse_security_scheme_value)r   r   r.   r/   r   r1   r   scheme_fieldsr   scheme_fieldr    r   r!   r!   r"   r   [   s.   



r   security_metadatar   c           	      C   s   |j }|j}||}|dkr(|dkr|| |< d S |dkr$|g||< d S td|dkr4t|| |< d S |dkrF|dkrDt|| |< d S d S |dkr`|d	krVt|| |< d S |d
kr\d S tdtd)NapiKeyheaderqueryz!sub type {sub_type} not supportedopenIdConnectoauth2client_credentialsr0   bearerr   z'scheme type {scheme_type} not supported)r1   r   get_field_name
ValueError_apply_bearer)	r   r   r.   r6   r/   r   r1   r   header_namer!   r!   r"   r3      s,   
r3   tokenc                 C   s   |   dr	| pd|  S )Nzbearer zBearer )lower
startswith)rB   r!   r!   r"   r@      s   r@   c                 C   s   d}d}t |tstd|jj}|D ])}|| }t|t}|d u s'|jd u r(q|j}t||}	|dkr6|	}|dkr<|	}q| d| 	 }
dt
|
  | d< d S )N z*basic auth scheme must be a pydantic modelusernamepassword:zBasic Authorization)r   r   r   r   r   r   r
   r/   r   encodebase64	b64encodedecode)r   r   rF   rG   r4   r   r5   r    r/   r   datar!   r!   r"   r2      s&   


r2   )__doc__rK   typingr   r   r   r   r   pydanticr   pydantic.fieldsr   r    r
   r   r(   strr#   r+   r   r   r3   r@   r2   r!   r!   r!   r"   <module>   sT    .$



%

$