§
    ÒÁ³g¢6  ã                  ó~  — d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZm
Z
 d dlmZmZmZmZ d dlZd dlZddlmZmZmZ dd	lmZ dd
lmZmZmZmZmZmZm Z  ddl!m"Z"m#Z#m$Z$  ed¦  «        Z%ed         Z& G d„ d¦  «        Z'd.d„Z(d/d„Z)d0d„Z*d1d„Z+ddœd2d!„Z,d3d&„Z-d4d(„Z.d.d)„Z/d/d*„Z0ddœd2d+„Z1d3d,„Z2d4d-„Z3dS )5é    )ÚannotationsN)ÚAnyÚMappingÚTypeVarÚcast)ÚdateÚdatetime)ÚLiteralÚget_argsÚoverrideÚget_type_hintsé   )Úis_listÚ
is_mappingÚis_iterableé   )Úis_base64_file_input)Úis_list_typeÚis_union_typeÚextract_type_argÚis_iterable_typeÚis_required_typeÚis_annotated_typeÚstrip_annotated_type)Ú
get_originÚ
model_dumpÚis_typeddictÚ_T)Úiso8601Úbase64Úcustomc                  óh   — e Zd ZU dZded<   ded<   ded<   ded<   ddddd	œdd„Zedd„¦   «         ZdS )ÚPropertyInfoao  Metadata class to be used in Annotated types to provide information about a given type.

    For example:

    class MyParams(TypedDict):
        account_holder_name: Annotated[str, PropertyInfo(alias='accountHolderName')]

    This means that {'account_holder_name': 'Robert'} will be transformed to {'accountHolderName': 'Robert'} before being sent to the API.
    ú
str | NoneÚaliasúPropertyFormat | NoneÚformatÚformat_templateÚdiscriminatorN©r%   r'   r(   r)   ÚreturnÚNonec               ó>   — || _         || _        || _        || _        d S )Nr*   )Úselfr%   r'   r(   r)   s        úV/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/openai/_utils/_transform.pyÚ__init__zPropertyInfo.__init__8   s(   € ð ˆŒ
ØˆŒØ.ˆÔØ*ˆÔÐÐó    Ústrc           
     ó`   — | j         j        › d| j        › d| j        › d| j        › d| j        › d�
S )Nz(alias='z
', format=z, format_template='z', discriminator='z'))Ú	__class__Ú__name__r%   r'   r(   r)   )r.   s    r/   Ú__repr__zPropertyInfo.__repr__E   sn   € à”.Ô)ð  hð  h°4´:ð  hð  hÈÌð  hð  hÐimÔi}ð  hð  hð  RVô  Rdð  hð  hð  hð  	hr1   )
r%   r$   r'   r&   r(   r$   r)   r$   r+   r,   )r+   r2   )r5   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r0   r   r6   © r1   r/   r#   r#   (   s¤   € € € € € € ðð ð ÐÐÑØ!Ð!Ð!Ñ!ØÐÐÑØÐÐÑð
 !Ø(,Ø&*Ø$(ð+ð +ð +ð +ð +ð +ð ðhð hð hñ „Xðhð hð hr1   r#   ÚdataÚobjectÚexpected_typer+   ú
Any | Nonec                ó*   — | €dS t          | |¦  «        S )ziWrapper over `transform()` that allows `None` to be passed.

    See `transform()` for more details.
    N)Ú	transform©r<   r>   s     r/   Úmaybe_transformrC   J   s   € ð €|ØˆtÝ�T˜=Ñ)Ô)Ð)r1   c                ót   — t          | t          t          |¦  «        ¬¦  «        }t          t          |¦  «        S )á  Transform dictionaries based off of type information from the given type, for example:

    ```py
    class Params(TypedDict, total=False):
        card_id: Required[Annotated[str, PropertyInfo(alias="cardID")]]


    transformed = transform({"card_id": "<my card ID>"}, Params)
    # {'cardID': '<my card ID>'}
    ```

    Any keys / data that does not have type information given will be included as is.

    It should be noted that the transformations that this function does are not represented in the type system.
    ©Ú
annotation)Ú_transform_recursiver   Útyper   ©r<   r>   Útransformeds      r/   rA   rA   X   s0   € õ& ' t½½TÀ=Ñ8QÔ8QÐRÑRÔR€KÝ•�KÑ Ô Ð r1   Útype_rI   útype | Nonec                óp   — t          | ¦  «        rt          | ¦  «        d         } t          | ¦  «        r| S dS )z±If the given type is an `Annotated` type then it is returned, if not `None` is returned.

    This also unwraps the type when applicable, e.g. `Required[Annotated[T, ...]]`
    r   N)r   r   r   )rL   s    r/   Ú_get_annotated_typerO   o   s>   € õ
 ˜ÑÔð #å˜‘” Ô"ˆå˜ÑÔð Øˆàˆ4r1   Úkeyr2   c                ó®   — t          |¦  «        }|€| S t          |¦  «        dd…         }|D ]'}t          |t          ¦  «        r|j        �	|j        c S Œ(| S )z«Transform the given `data` based on the annotations provided in `type_`.

    Note: this function only looks at `Annotated` types that contain `PropertInfo` metadata.
    Nr   )rO   r   Ú
isinstancer#   r%   )rP   rL   Úannotated_typer   rG   s        r/   Ú_maybe_transform_keyrT   ~   sr   € õ
 )¨Ñ/Ô/€NØÐàˆ
õ ˜>Ñ*Ô*¨1¨2¨2Ô.€KØ!ð $ð $ˆ
Ý�j¥,Ñ/Ô/ð 	$°JÔ4DÐ4PØÔ#Ð#Ð#Ð#øà€Jr1   )Ú
inner_typerG   rU   c               ó  ‡‡‡— ‰€‰Št          ‰¦  «        }t          |¦  «        p|}t          |¦  «        rt          | ¦  «        rt	          | |¦  «        S |t
          k    rDt          | ¦  «        r5t          |¦  «        d         Šˆfd„|                      ¦   «         D ¦   «         S t          |¦  «        rt          | ¦  «        s3t          |¦  «        rmt          | ¦  «        r^t          | t          ¦  «        sIt          | t
          ¦  «        rt          t          | ¦  «        S t!          |d¦  «        Šˆˆfd„| D ¦   «         S t#          |¦  «        r&t          |¦  «        D ]}t%          | ‰|¬¦  «        } Œ| S t          | t&          j        ¦  «        rt+          | dd¬	¦  «        S t-          ‰¦  «        }|€| S t          |¦  «        dd…         }|D ];Št          ‰t.          ¦  «        r$‰j        �t3          | ‰j        ‰j        ¦  «        c S Œ<| S )
á‹  Transform the given data against the expected type.

    Args:
        annotation: The direct type annotation given to the particular piece of data.
            This may or may not be wrapped in metadata types, e.g. `Required[T]`, `Annotated[T, ...]` etc

        inner_type: If applicable, this is the "inside" type. This is useful in certain cases where the outside type
            is a container type such as `List[T]`. In that case `inner_type` should be set to `T` so that each entry in
            the list can be transformed using the metadata from the container type.

            Defaults to the same value as the `annotation` argument.
    Nr   c                ó:   •— i | ]\  }}|t          |‰¬ ¦  «        “ŒS ©rF   ©rH   ©Ú.0rP   ÚvalueÚ
items_types      €r/   ú
<dictcomp>z(_transform_recursive.<locals>.<dictcomp>­   ó.   ø€ ÐgÐgÐgÉJÈCÐQV�Õ)¨%¸JÐGÑGÔGÐgÐgÐgr1   r   c                ó4   •— g | ]}t          |‰‰¬ ¦  «        ‘ŒS )©rG   rU   rZ   ©r\   ÚdrG   rU   s     €€r/   ú
<listcomp>z(_transform_recursive.<locals>.<listcomp>»   s*   ø€ ÐdÐdÐdÐZ[Õ$ Q°:È*ÐUÑUÔUÐdÐdÐdr1   rb   TÚjson©Úexclude_unsetÚmode)r   r   r   r   Ú_transform_typeddictÚdictr   Úitemsr   r   r   r   rR   r2   r   r=   r   r   rH   ÚpydanticÚ	BaseModelr   rO   r#   r'   Ú_format_datar(   ©	r<   rG   rU   Ústripped_typeÚoriginÚsubtyperS   r   r^   s	    ``     @r/   rH   rH   ‘   sR  øøø€ ð$ ÐØˆ
å(¨Ñ4Ô4€MÝ˜Ñ&Ô&Ð7¨-€FÝ�MÑ"Ô"ð 9¥z°$Ñ'7Ô'7ð 9Ý# D¨-Ñ8Ô8Ð8à•‚~€~�* TÑ*Ô*€~Ý˜mÑ,Ô,¨QÔ/ˆ
ØgÐgÐgÐgÐZ^×ZdÒZdÑZfÔZfÐgÑgÔgÐgõ 
�mÑ	$Ô	$ðeå)0°©¬ðeõ ˜]Ñ+Ô+ð	eõ 1<¸DÑ0AÔ0Að	eõ KUÐUYÕ[^ÑJ_ÔJ_ð	eõ �d�DÑ!Ô!ð 	&Ý� Ñ%Ô%Ð%å% m°QÑ7Ô7ˆ
ØdÐdÐdÐdÐdÐ_cÐdÑdÔdÐdå�]Ñ#Ô#ð õ
   Ñ.Ô.ð 	Yð 	YˆGÝ'¨¸ÐPWÐXÑXÔXˆDˆDØˆå�$�Ô*Ñ+Ô+ð AÝ˜$¨d¸Ð@Ñ@Ô@Ð@å(¨Ñ4Ô4€NØÐØˆõ ˜>Ñ*Ô*¨1¨2¨2Ô.€KØ!ð Uð Uˆ
Ý�j¥,Ñ/Ô/ð 	U°JÔ4EÐ4QÝ  jÔ&7¸Ô9SÑTÔTÐTÐTÐTøà€Kr1   Úformat_ÚPropertyFormatr(   r$   c                ó¢  — t          | t          t          f¦  «        r7|dk    r|                      ¦   «         S |dk    r|�|                      |¦  «        S |dk    rõt          | ¦  «        ræd }t          | t          j        ¦  «        r|                      ¦   «         }nWt          | t          j
        ¦  «        r=|                      ¦   «         }t          |t          ¦  «        r|                     ¦   «         }t          |t          ¦  «        s"t          d| › dt!          |¦  «        › �¦  «        ‚t#          j        |¦  «                             d¦  «        S | S ©Nr   r!   r    zCould not read bytes from z; Received Úascii)rR   r   r	   Ú	isoformatÚstrftimer   ÚpathlibÚPathÚ
read_bytesÚioÚIOBaseÚreadr2   ÚencodeÚbytesÚRuntimeErrorrI   r    Ú	b64encodeÚdecode©r<   rt   r(   Úbinarys       r/   ro   ro   Ö   s6  € Ý�$��xÐ(Ñ)Ô)ð 2Ø�iÒÐØ—>’>Ñ#Ô#Ð#à�hÒÐ ?Ð#>Ø—=’= Ñ1Ô1Ð1à�(ÒÐÕ3°DÑ9Ô9ÐØ%)ˆå�d�GœLÑ)Ô)ð 	)Ø—_’_Ñ&Ô&ˆFˆFÝ˜�bœiÑ(Ô(ð 	)Ø—Y’Y‘[”[ˆFå˜&¥#Ñ&Ô&ð )ØŸš™œ�å˜&¥%Ñ(Ô(ð 	]ÝÐ[¸DÐ[Ð[ÍTÐRXÉ\Ì\Ð[Ð[Ñ\Ô\Ð\åÔ Ñ'Ô'×.Ò.¨wÑ7Ô7Ð7à€Kr1   úMapping[str, object]c                óÔ   — i }t          |d¬¦  «        }|                      ¦   «         D ]?\  }} |j        |¦  «        }|€|||<   Œt          ||¬¦  «        |t	          ||¦  «        <   Œ@|S ©NT)Úinclude_extrasrF   )r   rl   ÚgetrH   rT   ©r<   r>   Úresultr   rP   r]   rL   s          r/   rj   rj   ñ   s„   € ð !#€FÝ  ¸tÐDÑDÔD€KØ—j’j‘l”lð eð e‰
ˆˆUØ�” Ñ$Ô$ˆØˆ=àˆF�3‰KˆKå7KÈEÐ^cÐ7dÑ7dÔ7dˆFÕ'¨¨UÑ3Ô3Ñ4Ð4Ø€Mr1   c              ƒ  ó:   K  — | €dS t          | |¦  «        ƒ d{V —†S )zuWrapper over `async_transform()` that allows `None` to be passed.

    See `async_transform()` for more details.
    N)Úasync_transformrB   s     r/   Úasync_maybe_transformr‘     s4   è è € ð €|ØˆtÝ   }Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r1   c              ƒ  ó„   K  — t          | t          t          |¦  «        ¬¦  «        ƒ d{V —†}t          t          |¦  «        S )rE   rF   N)Ú_async_transform_recursiver   rI   r   rJ   s      r/   r�   r�     sF   è è € õ& 3°4ÅDÍÈ}ÑD]ÔD]Ð^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^€KÝ•�KÑ Ô Ð r1   c             ƒ  óH  ‡‡‡K  — ‰€‰Št          ‰¦  «        }t          |¦  «        p|}t          |¦  «        r%t          | ¦  «        rt	          | |¦  «        ƒ d{V —†S |t
          k    rDt          | ¦  «        r5t          |¦  «        d         Šˆfd„|                      ¦   «         D ¦   «         S t          |¦  «        rt          | ¦  «        s3t          |¦  «        rst          | ¦  «        rdt          | t          ¦  «        sOt          | t
          ¦  «        rt          t          | ¦  «        S t!          |d¦  «        Šˆˆfd„| D ¦   «         ƒ d{V —†S t#          |¦  «        r,t          |¦  «        D ]}t%          | ‰|¬¦  «        ƒ d{V —†} Œ| S t          | t&          j        ¦  «        rt+          | dd¬	¦  «        S t-          ‰¦  «        }|€| S t          |¦  «        dd…         }|D ]AŠt          ‰t.          ¦  «        r*‰j        �#t3          | ‰j        ‰j        ¦  «        ƒ d{V —†c S ŒB| S )
rW   Nr   c                ó:   •— i | ]\  }}|t          |‰¬ ¦  «        “ŒS rY   rZ   r[   s      €r/   r_   z._async_transform_recursive.<locals>.<dictcomp>A  r`   r1   r   c              “  óD   •K  — g | ]}t          |‰‰¬ ¦  «        ƒ d{V —†‘ŒS )rb   N)r“   rc   s     €€r/   re   z._async_transform_recursive.<locals>.<listcomp>O  sA   øè è € ÐpÐpÐpÐfgÕ0°¸zÐV`ÐaÑaÔaÐaÐaÐaÐaÐaÐaÐpÐpÐpr1   rb   Trf   rg   )r   r   r   r   Ú_async_transform_typeddictrk   r   rl   r   r   r   r   rR   r2   r   r=   r   r   r“   rm   rn   r   rO   r#   r'   Ú_async_format_datar(   rp   s	    ``     @r/   r“   r“   %  s   øøøè è € ð$ ÐØˆ
å(¨Ñ4Ô4€MÝ˜Ñ&Ô&Ð7¨-€FÝ�MÑ"Ô"ð E¥z°$Ñ'7Ô'7ð EÝ/°°mÑDÔDÐDÐDÐDÐDÐDÐDÐDà•‚~€~�* TÑ*Ô*€~Ý˜mÑ,Ô,¨QÔ/ˆ
ØgÐgÐgÐgÐZ^×ZdÒZdÑZfÔZfÐgÑgÔgÐgõ 
�mÑ	$Ô	$ðqå)0°©¬ðqõ ˜]Ñ+Ô+ð	qõ 1<¸DÑ0AÔ0Að	qõ KUÐUYÕ[^ÑJ_ÔJ_ð	qõ �d�DÑ!Ô!ð 	&Ý� Ñ%Ô%Ð%å% m°QÑ7Ô7ˆ
ØpÐpÐpÐpÐpÐkoÐpÑpÔpÐpÐpÐpÐpÐpÐpÐpå�]Ñ#Ô#ð õ
   Ñ.Ô.ð 	eð 	eˆGÝ3°DÀZÐ\cÐdÑdÔdÐdÐdÐdÐdÐdÐdˆDˆDØˆå�$�Ô*Ñ+Ô+ð AÝ˜$¨d¸Ð@Ñ@Ô@Ð@å(¨Ñ4Ô4€NØÐØˆõ ˜>Ñ*Ô*¨1¨2¨2Ô.€KØ!ð að aˆ
Ý�j¥,Ñ/Ô/ð 	a°JÔ4EÐ4QÝ+¨D°*Ô2CÀZÔE_Ñ`Ô`Ð`Ð`Ð`Ð`Ð`Ð`Ð`Ð`Ð`øà€Kr1   c              ƒ  óØ  K  — t          | t          t          f¦  «        r7|dk    r|                      ¦   «         S |dk    r|�|                      |¦  «        S |dk    �rt          | ¦  «        rþd }t          | t          j        ¦  «        r-t          j        | ¦  «         	                    ¦   «         ƒ d {V —†}nWt          | t          j        ¦  «        r=|                      ¦   «         }t          |t          ¦  «        r|                     ¦   «         }t          |t          ¦  «        s"t!          d| › dt#          |¦  «        › �¦  «        ‚t%          j        |¦  «                             d¦  «        S | S rw   )rR   r   r	   ry   rz   r   r{   r|   Úanyior}   r~   r   r€   r2   r�   r‚   rƒ   rI   r    r„   r…   r†   s       r/   r˜   r˜   j  sX  è è € Ý�$��xÐ(Ñ)Ô)ð 2Ø�iÒÐØ—>’>Ñ#Ô#Ð#à�hÒÐ ?Ð#>Ø—=’= Ñ1Ô1Ð1à�(ÒÑÕ3°DÑ9Ô9ÐØ%)ˆå�d�GœLÑ)Ô)ð 	)Ý œ: dÑ+Ô+×6Ò6Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆFˆFÝ˜�bœiÑ(Ô(ð 	)Ø—Y’Y‘[”[ˆFå˜&¥#Ñ&Ô&ð )ØŸš™œ�å˜&¥%Ñ(Ô(ð 	]ÝÐ[¸DÐ[Ð[ÍTÐRXÉ\Ì\Ð[Ð[Ñ\Ô\Ð\åÔ Ñ'Ô'×.Ò.¨wÑ7Ô7Ð7à€Kr1   c              ƒ  óä   K  — i }t          |d¬¦  «        }|                      ¦   «         D ]E\  }} |j        |¦  «        }|€|||<   Œt          ||¬¦  «        ƒ d {V —†|t	          ||¦  «        <   ŒF|S rŠ   )r   rl   rŒ   r“   rT   r�   s          r/   r—   r—   …  s›   è è € ð !#€FÝ  ¸tÐDÑDÔD€KØ—j’j‘l”lð qð q‰
ˆˆUØ�” Ñ$Ô$ˆØˆ=àˆF�3‰KˆKå=WÐX]ÐjoÐ=pÑ=pÔ=pÐ7pÐ7pÐ7pÐ7pÐ7pÐ7pˆFÕ'¨¨UÑ3Ô3Ñ4Ð4Ø€Mr1   )r<   r=   r>   r=   r+   r?   )r<   r   r>   r=   r+   r   )rL   rI   r+   rM   )rP   r2   rL   rI   r+   r2   )r<   r=   rG   rI   rU   rM   r+   r=   )r<   r=   rt   ru   r(   r$   r+   r=   )r<   rˆ   r>   rI   r+   rˆ   )4Ú
__future__r   r~   r    r{   Útypingr   r   r   r   r	   r   Útyping_extensionsr
   r   r   r   rš   rm   Ú_utilsr   r   r   Ú_filesr   Ú_typingr   r   r   r   r   r   r   Ú_compatr   r   r   r   ru   r#   rC   rA   rO   rT   rH   ro   rj   r‘   r�   r“   r˜   r—   r;   r1   r/   ú<module>r£      sÕ  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ià €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð
 *Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à€WˆT�]„]€ð Ð6Ô7€ðhð hð hð hð hñ hô hð hðD
*ð 
*ð 
*ð 
*ð!ð !ð !ð !ð.ð ð ð ðð ð ð ð. #ð	Bð Bð Bð Bð Bð BðJð ð ð ð6ð ð ð ð 
6ð 
6ð 
6ð 
6ð!ð !ð !ð !ð6 #ð	Bð Bð Bð Bð Bð BðJð ð ð ð6ð ð ð ð ð r1   