Ë
    µŒjˆ-  ã                  ó*  — d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZmZmZmZmZ ddlZddlZddlmZ  ej*                  e«      Z G d„ d	ee«      Zerdd
lmZmZmZmZmZm Z m!Z!m"Z" 	 ddlm#Z#  G d„ de#«      Z&y# e$$ r e%Z#Y Œw xY w)z.Utility functions for parsing an OpenAPI spec.é    )ÚannotationsN)ÚEnum)ÚPath)ÚTYPE_CHECKINGÚDictÚListÚOptionalÚUnion)ÚValidationErrorc                  óB   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zedd
„«       Zy)ÚHTTPVerbzEnumerator of the HTTP verbs.ÚgetÚputÚpostÚdeleteÚoptionsÚheadÚpatchÚtracec                ó^   — 	  | |«      S # t         $ r t        d| j                  › �«      ‚w xY w)zParse an HTTP verb.z$Invalid HTTP verb. Valid values are )Ú
ValueErrorÚ__members__)ÚclsÚverbs     úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/utilities/openapi.pyÚfrom_strzHTTPVerb.from_str    s;   € ð	WÙ�t“9ÐøÜò 	WÜÐCÀCÇOÁOÐCTÐUÓVÐVð	Wús   ‚
 Š",N)r   ÚstrÚreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚGETÚPUTÚPOSTÚDELETEÚOPTIONSÚHEADÚPATCHÚTRACEÚclassmethodr   © ó    r   r   r      sA   „ Ù'à
€CØ
€CØ€DØ€FØ€GØ€DØ€EØ€EàòWó ñWr-   r   )Ú
ComponentsÚ	OperationÚ	ParameterÚPathItemÚPathsÚ	ReferenceÚRequestBodyÚSchema)ÚOpenAPIc                  óª  ‡ — e Zd ZU dZdZded<   edd„«       Zd d„Zed!d„«       Z	ed"d„«       Z
ed#d	„«       Zed$d
„«       Zd%d„Zd&d„Zd'd„Z	 	 d(	 	 	 	 	 	 	 d)d„Zd'd„Z	 	 	 	 d*d„Z	 	 	 	 d+d„Zed,d„«       Zed-ˆ fd„«       Zed.d„«       Zed/d„«       Zed0d„«       Zed1d„«       Zed2d„«       Zd3d„Zd4d„Zd5d„Zd6d„Z 	 	 	 	 d7d„Z!ed8d„«       Z"ˆ xZ#S )9ÚOpenAPISpecz;OpenAPI Model that removes mis-formatted parts of the spec.ú3.1.0r   Úopenapic                óH   — | j                   st        d«      ‚| j                   S )NzNo paths found in spec)Úpathsr   ©Úselfs    r   Ú_paths_strictzOpenAPISpec._paths_strict@   s   € à�zŠzÜÐ5Ó6Ð6Ø�z‰zÐr-   c                ó\   — | j                   j                  |«      }|st        d|› �«      ‚|S )NzNo path found for )r?   r   r   )r>   ÚpathÚ	path_items      r   Ú_get_path_strictzOpenAPISpec._get_path_strictF   s4   € Ø×&Ñ&×*Ñ*¨4Ó0ˆ	ÙÜÐ1°$°Ð8Ó9Ð9ØÐr-   c                óH   — | j                   €t        d«      ‚| j                   S )zGet components or err.zNo components found in spec. )Ú
componentsr   r=   s    r   Ú_components_strictzOpenAPISpec._components_strictL   s$   € ð �?‰?Ð"ÜÐ<Ó=Ð=Ø�‰Ðr-   c                óL   — | j                   j                  }|€t        d«      ‚|S )zGet parameters or err.zNo parameters found in spec. )rF   Ú
parametersr   )r>   rH   s     r   Ú_parameters_strictzOpenAPISpec._parameters_strictS   s-   € ð ×,Ñ,×7Ñ7ˆ
ØÐÜÐ<Ó=Ð=ØÐr-   c                óL   — | j                   j                  }|€t        d«      ‚|S )z%Get the dictionary of schemas or err.zNo schemas found in spec. )rF   Úschemasr   )r>   rK   s     r   Ú_schemas_strictzOpenAPISpec._schemas_strict[   s+   € ð ×)Ñ)×1Ñ1ˆØˆ?ÜÐ9Ó:Ð:Øˆr-   c                óL   — | j                   j                  }|€t        d«      ‚|S )zGet the request body or err.zNo request body found in spec. )rF   ÚrequestBodiesr   )r>   Úrequest_bodiess     r   Ú_request_bodies_strictz"OpenAPISpec._request_bodies_strictc   s-   € ð ×0Ñ0×>Ñ>ˆØÐ!ÜÐ>Ó?Ð?ØÐr-   c                ó„   — |j                   j                  d«      d   }| j                  }||vrt        d|› �«      ‚||   S )z-Get a parameter (or nested reference) or err.Ú/éÿÿÿÿzNo parameter found for )ÚrefÚsplitrI   r   )r>   rT   Úref_namerH   s       r   Ú_get_referenced_parameterz%OpenAPISpec._get_referenced_parameterk   sJ   € à—7‘7—=‘= Ó% bÑ)ˆØ×,Ñ,ˆ
Ø˜:Ñ%ÜÐ6°x°jÐAÓBÐBØ˜(Ñ#Ð#r-   c                óˆ   — ddl m} | j                  |«      }t        ||«      r| j                  |«      }t        ||«      rŒ|S ©zGet the root reference or err.r   ©r3   )Úopenapi_pydanticr3   rW   Ú
isinstance)r>   rT   r3   Ú	parameters       r   Ú_get_root_referenced_parameterz*OpenAPISpec._get_root_referenced_parameters   sA   € å.à×2Ñ2°3Ó7ˆ	Ü˜ IÔ.Ø×6Ñ6°yÓAˆIô ˜ IÕ.àÐr-   c                ó„   — |j                   j                  d«      d   }| j                  }||vrt        d|› �«      ‚||   S )z*Get a schema (or nested reference) or err.rR   rS   zNo schema found for )rT   rU   rL   r   )r>   rT   rV   rK   s       r   Úget_referenced_schemaz!OpenAPISpec.get_referenced_schema|   sJ   € à—7‘7—=‘= Ó% bÑ)ˆØ×&Ñ&ˆØ˜7Ñ"ÜÐ3°H°:Ð>Ó?Ð?Ø�xÑ Ð r-   c                ó|  — |�||k\  rt        d|› d�«      ‚ddlm} t        ||«      r| j	                  |«      }|j
                  �E|j
                  j                  «       D ](  \  }}| j                  ||dz   |«      |j
                  |<   Œ* |j                  �%| j                  |j                  |dz   |«      |_        |S )NzMax depth of z- has been exceeded when resolving references.r   rZ   é   )ÚRecursionErrorr[   r3   r\   r`   Ú
propertiesÚitemsÚ
get_schema)r>   ÚschemaÚdepthÚ	max_depthr3   Úp_nameÚps          r   rf   zOpenAPISpec.get_schema„   sÃ   € ð Ð  U¨iÒ%7Ü Ø 	˜{Ð*WÐXóð õ 	/ä�f˜iÔ(Ø×/Ñ/°Ó7ˆFð ×ÑÐ(Ø#×.Ñ.×4Ñ4Ö6‘	�˜Ø,0¯O©O¸A¸uÀq¹yÈ)Ó,T�×!Ñ! &Ò)ð 7ð �<‰<Ð#ØŸ?™?¨6¯<©<¸À¹ÀIÓNˆFŒLàˆr-   c                óˆ   — ddl m} | j                  |«      }t        ||«      r| j                  |«      }t        ||«      rŒ|S rY   )r[   r3   r`   r\   )r>   rT   r3   rg   s       r   Ú_get_root_referenced_schemaz'OpenAPISpec._get_root_referenced_schemaŸ   s@   € å.à×+Ñ+¨CÓ0ˆÜ˜ Ô+Ø×/Ñ/°Ó7ˆFô ˜ Õ+àˆr-   c                ó„   — |j                   j                  d«      d   }| j                  }||vrt        d|› �«      ‚||   S )z0Get a request body (or nested reference) or err.rR   rS   zNo request body found for )rT   rU   rP   r   )r>   rT   rV   rO   s       r   Ú_get_referenced_request_bodyz(OpenAPISpec._get_referenced_request_body¨   sL   € ð —7‘7—=‘= Ó% bÑ)ˆØ×4Ñ4ˆØ˜>Ñ)ÜÐ9¸(¸ÐDÓEÐEØ˜hÑ'Ð'r-   c                óˆ   — ddl m} | j                  |«      }t        ||«      r| j                  |«      }t        ||«      rŒ|S )z!Get the root request Body or err.r   rZ   )r[   r3   ro   r\   )r>   rT   r3   Úrequest_bodys       r   Ú!_get_root_referenced_request_bodyz-OpenAPISpec._get_root_referenced_request_body²   sC   € õ 	/à×8Ñ8¸Ó=ˆÜ˜ yÔ1Ø×<Ñ<¸\ÓJˆLô ˜ yÕ1àÐr-   c                ó(  — d}| j                  d«      }| j                  d«      }t        |t        «      r"|dk7  rt        j	                  d|› d|› �«       y
y
t        |t        «      rt        j	                  d|› d|› �«       y
t        d| › d	|› �«      ‚)z#Alert if the spec is not supported.ze This may result in degraded performance. Convert your OpenAPI spec to 3.1.* spec for better support.Úswaggerr:   r9   zAttempting to load an OpenAPI z spec. zAttempting to load a Swagger z)Attempting to load an unsupported spec:

Ú
N)r   r\   r   ÚloggerÚwarningr   )ÚobjÚwarning_messageÚswagger_versionÚopenapi_versions       r   Ú_alert_unsupported_specz#OpenAPISpec._alert_unsupported_spec½   s­   € ð%ð 	ð
 Ÿ'™' )Ó,ˆØŸ'™' )Ó,ˆÜ�o¤sÔ+Ø 'Ò)Ü—‘Ø4°_Ð4EØ˜oÐ.ð0õð
 Ü˜¬Ô-Ü�N‰NØ/°Ð/@Ø˜/Ð*ð,õô
 Ø=¸c¸UÀ"À_ÐDUÐVóð r-   c                ó>  •— 	 | j                  |«       t        ‰| �	  |«      S # t        $ rp}t	        j
                  |«      }|j                  «       D ]-  }|d   }|}|d d D ]  }||   }Œ	 |j                  |d   d «       Œ/ | j                  |«      cY d }~S d }~ww xY w)NÚlocrS   )r|   ÚsuperÚ	parse_objr   ÚcopyÚdeepcopyÚerrorsÚpop)	r   rx   ÚeÚnew_objÚerrorÚkeysÚitemÚkeyÚ	__class__s	           €r   r€   zOpenAPISpec.parse_objÙ   s    ø€ ð	*Ø×'Ñ'¨Ô,Ü‘7Ñ$ SÓ)Ð)øÜò 
	*ô —m‘m CÓ(ˆGØŸ™ž�Ø˜U‘|�Ø�Ø  ›9�CØ ™9‘Dð %à—‘˜˜b™ 4Õ(ð $ð —=‘= Ó)Õ)ûð
	*ús   ƒ# £	B¬A%BÂBÂBc                ó$   — | j                  |«      S )z Get an OpenAPI spec from a dict.)r€   )r   Ú	spec_dicts     r   Úfrom_spec_dictzOpenAPISpec.from_spec_dictê   s   € ð �}‰}˜YÓ'Ð'r-   c                ó¬   — 	 t        j                  |«      }| j                  |«      S # t         j                  $ r t        j                  |«      }Y Œ;w xY w)z Get an OpenAPI spec from a text.)ÚjsonÚloadsÚJSONDecodeErrorÚyamlÚ	safe_loadrŽ   )r   Útextr�   s      r   Ú	from_textzOpenAPISpec.from_textï   sM   € ð	-ÜŸ
™
 4Ó(ˆIð ×!Ñ! )Ó,Ð,øô ×#Ñ#ò 	-ÜŸ™ tÓ,ŠIð	-ús   ‚( ¨(AÁAc                ó  — t        |t        «      r|n
t        |«      }|j                  «       st        |› d�«      ‚|j	                  d«      5 }| j                  |j                  «       «      cddd«       S # 1 sw Y   yxY w)z%Get an OpenAPI spec from a file path.z does not existÚrN)r\   r   ÚexistsÚFileNotFoundErrorÚopenr–   Úread)r   rA   Úpath_Úfs       r   Ú	from_filezOpenAPISpec.from_fileø   s\   € ô # 4¬Ô.‘´D¸³JˆØ�|‰|Œ~Ü# t f¨OÐ$<Ó=Ð=Ø�Z‰Z˜Œ_ Ø—=‘= §¡£Ó*÷ �_Š_ús   ÁA6Á6A?c                ób   — t        j                  |«      }| j                  |j                  «      S )zGet an OpenAPI spec from a URL.)Úrequestsr   r–   r•   )r   ÚurlÚresponses      r   Úfrom_urlzOpenAPISpec.from_url  s%   € ô —<‘< Ó$ˆØ�}‰}˜XŸ]™]Ó+Ð+r-   c                ó4   — | j                   d   j                  S )zGet the base url.r   )Úserversr¢   r=   s    r   Úbase_urlzOpenAPISpec.base_url  s   € ð �|‰|˜A‰×"Ñ"Ð"r-   c                óÌ   — ddl m} | j                  |«      }g }t        D ]A  }t	        ||j
                  d«      }t        ||«      sŒ'|j                  |j
                  «       ŒC |S )z6Return a list of valid methods for the specified path.r   ©r/   N)r[   r/   rC   r   ÚgetattrÚvaluer\   Úappend)r>   rA   r/   rB   ÚresultsÚmethodÚ	operations          r   Úget_methods_for_pathz OpenAPISpec.get_methods_for_path  sW   € å.à×)Ñ)¨$Ó/ˆ	ØˆßˆFÜ 	¨6¯<©<¸Ó>ˆIÜ˜) YÕ/Ø—‘˜vŸ|™|Õ,ð ð ˆr-   c                óÒ   — ddl m} | j                  |«      }g }|j                  sg S |j                  D ]0  }t	        ||«      r| j                  |«      }|j                  |«       Œ2 |S )Nr   rZ   )r[   r3   rC   rH   r\   r^   r¬   )r>   rA   r3   rB   rH   r]   s         r   Úget_parameters_for_pathz#OpenAPISpec.get_parameters_for_path  sh   € Ý.à×)Ñ)¨$Ó/ˆ	Øˆ
Ø×#Ò#ØˆIØ"×-Ô-ˆIÜ˜) YÔ/Ø ×?Ñ?À	ÓJ�	Ø×Ñ˜iÕ(ð .ð Ðr-   c                óˆ   — ddl m} | j                  |«      }t        ||d«      }t	        ||«      st        d|› d|› �«      ‚|S )z:Get the operation object for a given path and HTTP method.r   r©   NzNo z method found for )r[   r/   rC   rª   r\   r   )r>   rA   r®   r/   rB   Úoperation_objs         r   Úget_operationzOpenAPISpec.get_operation%  sL   € å.à×)Ñ)¨$Ó/ˆ	Ü 	¨6°4Ó8ˆÜ˜-¨Ô3Ü˜s 6 (Ð*<¸T¸FÐCÓDÐDØÐr-   c                ó¬   — ddl m} g }|j                  r?|j                  D ]0  }t        ||«      r| j	                  |«      }|j                  |«       Œ2 |S )z)Get the components for a given operation.r   rZ   )r[   r3   rH   r\   r^   r¬   )r>   r¯   r3   rH   r]   s        r   Úget_parameters_for_operationz(OpenAPISpec.get_parameters_for_operation/  sS   € å.àˆ
Ø×ÒØ&×1Ô1�	Ü˜i¨Ô3Ø $× CÑ CÀIÓ N�IØ×!Ñ! )Õ,ð 2ð Ðr-   c                ód   — ddl m} |j                  }t        ||«      r| j	                  |«      }|S )z+Get the request body for a given operation.r   rZ   )r[   r3   ÚrequestBodyr\   rr   )r>   r¯   r3   rq   s       r   Úget_request_body_for_operationz*OpenAPISpec.get_request_body_for_operation;  s2   € õ 	/à ×,Ñ,ˆÜ�l IÔ.Ø×AÑAÀ,ÓOˆLØÐr-   c                óÜ   — | j                   }|€-t        j                  dd|j                  d«      «      }|› d|› �}|j	                  dd«      j	                  dd«      j	                  dd«      S )z0Get a cleaned operation id from an operation id.z[^a-zA-Z0-9]Ú_rR   Ú-Ú.)ÚoperationIdÚreÚsubÚlstripÚreplace)r¯   rA   r®   Úoperation_ids       r   Úget_cleaned_operation_idz$OpenAPISpec.get_cleaned_operation_idF  sm   € ð !×,Ñ,ˆØÐä—6‘6˜/¨3°·±¸CÓ0@ÓAˆDØ"˜V 1 V HÐ-ˆLØ×#Ñ# C¨Ó-×5Ñ5°c¸3Ó?×GÑGÈÈSÓQÐQr-   )r   r2   )rA   r   r   r1   )r   r.   )r   z&Dict[str, Union[Parameter, Reference]])r   zDict[str, Schema])r   z(Dict[str, Union[RequestBody, Reference]])rT   r3   r   zUnion[Parameter, Reference])rT   r3   r   r0   )rT   r3   r   r5   )r   N)rg   zUnion[Reference, Schema]rh   Úintri   zOptional[int]r   r5   )rT   r3   r   z'Optional[Union[Reference, RequestBody]])rT   r3   r   úOptional[RequestBody])rx   Údictr   ÚNone)rx   rÈ   r   r8   )r�   rÈ   r   r8   )r•   r   r   r8   )rA   zUnion[str, Path]r   r8   )r¢   r   r   r8   )r   r   )rA   r   r   z	List[str])rA   r   r   úList[Parameter])rA   r   r®   r   r   r/   )r¯   r/   r   rÊ   )r¯   r/   r   rÇ   )r¯   r/   rA   r   r®   r   r   r   )$r   r    r!   r"   r:   Ú__annotations__Úpropertyr?   rC   rF   rI   rL   rP   rW   r^   r`   rf   rm   ro   rr   Ústaticmethodr|   r+   r€   rŽ   r–   rŸ   r¤   r§   r°   r²   rµ   r·   rº   rÅ   Ú__classcell__)r‹   s   @r   r8   r8   ;   s³  ø… ÙEà€GˆSÓàòó ðó
ð òó ðð òó ðð òó ðð òó ðó$óó!ð Ø#'ð	à(ðð ðð !ð	ð
 
óó6ð(Øð(à	0ó(ð	Øð	à	ó	ð òó ðð6 ô*ó ð*ð  ò(ó ð(ð ò-ó ð-ð ò+ó ð+ð ò,ó ð,ð
 ò#ó ð#ó
óóó
ð	Ø"ð	à	ó	ð òRó ôRr-   r8   )'r"   Ú
__future__r   r�   r�   ÚloggingrÀ   Úenumr   Úpathlibr   Útypingr   r   r   r	   r
   r¡   r“   Úpydanticr   Ú	getLoggerr   rv   r   r   r[   r.   r/   r0   r1   r2   r3   r4   r5   r6   ÚImportErrorÚobjectr8   r,   r-   r   Ú<module>rØ      s�   ðÙ 4å "ã Û Û Û 	Ý Ý ß =Õ =ã Û Ý $à	ˆ×	Ñ	˜8Ó	$€ôWˆs�Dô Wñ* ÷	÷ 	ó 	ðÝ(ô
SR�'õ SRøð	 ò Ø‚Gðús   Á6B ÂBÂB