§
    ÜŽ’j‘  ã                  óz   — d dl mZ d dlZd dlmZmZmZmZ d dlm	Z	 d dl
Z
ddlmZ ed         Zh d£Zdd„Zdd„ZdS )é    )ÚannotationsN)ÚAnyÚLiteralÚOptionalÚcast)Úassert_neveré   )Úis_list)ÚobjectÚarrayÚstringÚintegerÚnumberÚbooleanÚnull>
   ú	date-timeÚuriÚdateÚipv4Úipv6ÚtimeÚuuidÚemailÚdurationÚhostnameÚschemaúdict[str, Any]Úreturnc                óJ   — |                       d¦  «        dk    r	d| vrd| d<   | S )aU  Transforms a JSON schema of type string to ensure it conforms to the API's expectations.

    Specifically, it ensures that if the schema is of type "string" and does not already
    specify a "format", it sets the format to "text".

    Args:
        schema: The original JSON schema.

    Returns:
        The transformed JSON schema.
    Útyper   ÚformatÚtext)Úget)r   s    úMC:\Projects\DSCons\.venv\Lib\site-packages\anthropic\lib\_parse\_transform.pyÚget_transformed_stringr%   #   s4   € ð ‡z‚z�&ÑÔ˜XÒ%Ð%¨(¸&Ð*@Ð*@Ø!ˆˆxÑØ€Mó    Újson_schemaú)type[pydantic.BaseModel] | dict[str, Any]c                óè  — t          j        | ¦  «        r.t          | t          j        ¦  «        r|                      ¦   «         } i }i | ¥} |                      dd¦  «        }|�3i }||d<   |                     ¦   «         D ]\  }}t          |¦  «        ||<   Œ|                      dd¦  «        }|�||d<   |S |                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }	|                      dd¦  «        }
t          |¦  «        rd„ |D ¦   «         |d<   nTt          |	¦  «        rd	„ |	D ¦   «         |d<   n5t          |
¦  «        rd
„ |
D ¦   «         |d<   n|€t          d¦  «        ‚||d<   |                      dd¦  «        }t          |¦  «        r||d<   |                      dd¦  «        }|�||d<   |                      dd¦  «        }|�||d<   |dk    rnd„ |                      di ¦  «                             ¦   «         D ¦   «         |d<   |                      dd¦  «         d|d<   |                      dd¦  «        }|�||d<   nÁ|dk    r/|                      dd¦  «        }|r|t          v r||d<   n”|r|| d<   nŒ|dk    r\|                      dd¦  «        }|�t          |¦  «        |d<   |                      dd¦  «        }|�|dk    s|dk    r||d<   n2|�|| d<   n*|dk    s|dk    s|dk    s|dk    s|€nt          |¦  «         | rY|                     d¦  «        }|�|d z   nd!d"z   d#                     d$„ |                      ¦   «         D ¦   «         ¦  «        z   d%z   |d<   |S )&a  
    Transforms a JSON schema to ensure it conforms to the API's expectations.

    Args:
        json_schema (Dict[str, Any]): The original JSON schema.

    Returns:
        The transformed JSON schema.

    Examples:
        >>> transform_schema(
        ...     {
        ...         "type": "integer",
        ...         "minimum": 1,
        ...         "maximum": 10,
        ...         "description": "A number",
        ...     }
        ... )
        {'type': 'integer', 'description': 'A number

{minimum: 1, maximum: 10}'}
    z$defsNz$refr    ÚanyOfÚoneOfÚallOfc                óH   — g | ]}t          t          d |¦  «        ¦  «        ‘Œ S ©r   ©Útransform_schemar   ©Ú.0Úvariants     r$   ú
<listcomp>z$transform_schema.<locals>.<listcomp>i   ó-   € Ð!jÐ!jÐ!jÐX_Õ"2µ4Ð8HÈ'Ñ3RÔ3RÑ"SÔ"SÐ!jÐ!jÐ!jr&   c                óH   — g | ]}t          t          d |¦  «        ¦  «        ‘Œ S r.   r/   r1   s     r$   r4   z$transform_schema.<locals>.<listcomp>k   r5   r&   c                óH   — g | ]}t          t          d |¦  «        ¦  «        ‘Œ S r.   r/   r1   s     r$   r4   z$transform_schema.<locals>.<listcomp>m   r5   r&   z>Schema must have a 'type', 'anyOf', 'oneOf', or 'allOf' field.ÚenumÚdescriptionÚtitler   c                ó4   — i | ]\  }}|t          |¦  «        “ŒS © )r0   )r2   ÚkeyÚprop_schemas      r$   ú
<dictcomp>z$transform_schema.<locals>.<dictcomp>�   s4   € ð '
ð '
ð '
Ù3C°3¸ˆCÕ! +Ñ.Ô.ð'
ð '
ð '
r&   Ú
propertiesÚadditionalPropertiesFÚrequiredr   r!   r   ÚitemsÚminItemsr   é   r   r   r   r   z

Ú Ú{z, c              3  ó*   K  — | ]\  }}|› d |› �V — ŒdS )z: Nr<   )r2   r=   Úvalues      r$   ú	<genexpr>z#transform_schema.<locals>.<genexpr>ª   s4   è è € ÐPÐP©j¨c°5˜3Ð)Ð) %Ð)Ð)ÐPÐPÐPÐPÐPÐPr&   Ú})ÚinspectÚisclassÚ
issubclassÚpydanticÚ	BaseModelÚmodel_json_schemaÚpoprC   r0   r
   Ú
ValueErrorÚSupportedStringFormatsr   r#   Újoin)r'   Ústrict_schemaÚdefsÚstrict_defsÚnamer   ÚrefÚtype_Úany_ofÚone_ofÚall_ofr8   r9   r:   rB   r!   rC   Ú	min_itemss                     r$   r0   r0   6   sD  € õ. „�{Ñ#Ô#ð 6­
°;ÅÔ@RÑ(SÔ(Sð 6Ø!×3Ò3Ñ5Ô5ˆà$&€MØ!�[�/€Kð
 �?Š?˜7 DÑ)Ô)€DØÐØ&(ˆØ!,ˆ�gÑà ŸJšJ™LœLð 	9ð 	9‰LˆD�&Ý 0°Ñ 8Ô 8ˆK˜ÑÐà
�/Š/˜& $Ñ
'Ô
'€CØ
€Ø #ˆ�fÑØÐà&1§o¢o°f¸dÑ&CÔ&C€EØ�_Š_˜W dÑ+Ô+€FØ�_Š_˜W dÑ+Ô+€FØ�_Š_˜W dÑ+Ô+€Fåˆv�„ð 
&Ø!jÐ!jÐciÐ!jÑ!jÔ!jˆ�gÑÐÝ	�‰Œð &Ø!jÐ!jÐciÐ!jÑ!jÔ!jˆ�gÑÐÝ	�‰Œð &Ø!jÐ!jÐciÐ!jÑ!jÔ!jˆ�gÑÐàˆ=ÝÐ]Ñ^Ô^Ð^à %ˆ�fÑà�?Š?˜6 4Ñ(Ô(€DÝˆt�}„}ð %Ø $ˆ�fÑà—/’/ -°Ñ6Ô6€KØÐØ'2ˆ�mÑ$à�OŠO˜G TÑ*Ô*€EØÐØ!&ˆ�gÑà�ÒÐð'
ð '
ØGRÇÂÐWcÐegÑGhÔGh×GnÒGnÑGpÔGpð'
ñ '
ô '
ˆ�lÑ#ð 	�ŠÐ.°Ñ5Ô5Ð5Ø05ˆÐ,Ñ-à—?’? :¨tÑ4Ô4ˆØÐØ(0ˆM˜*Ñ%øà	�(Ò	Ð	Ø—’ ¨4Ñ0Ô0ˆØð 	+�fÕ 6Ð6Ð6Ø&,ˆM˜(Ñ#Ð#Øð 	+à$*ˆK˜Ñ!øØ	�'Ò	Ð	Ø—’ ¨Ñ.Ô.ˆØÐÝ%5°eÑ%<Ô%<ˆM˜'Ñ"à—O’O J°Ñ5Ô5ˆ	ØÐ  Y°!¢^ ^°yÀA²~°~Ø(1ˆM˜*Ñ%Ð%ØÐ"à&/ˆK˜
Ñ#øà	�)Ò	Ð	˜u¨	Ò1Ð1°U¸hÒ5FÐ5FÈ%ÐSYÊ/È/Ð]bÐ]jØå�UÑÔÐð ð 
Ø#×'Ò'¨Ñ6Ô6ˆà%0Ð%<ˆ[˜6Ñ!Ð!À"Øñà�iŠiÐPÐP¸K×<MÒ<MÑ<OÔ<OÐPÑPÔPÑPÔPñQð ñð 	�mÑ$ð Ðr&   )r   r   r   r   )r'   r(   r   r   )Ú
__future__r   rL   Útypingr   r   r   r   Útyping_extensionsr   rO   Ú_utilsr
   ÚSupportedTypesrT   r%   r0   r<   r&   r$   ú<module>re      sÊ   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø *Ð *Ð *Ð *Ð *Ð *à €€€à Ð Ð Ð Ð Ð àðô€ðð ð Ð ðð ð ð ð&xð xð xð xð xð xr&   