Ë
    ³Œjz,  ã                  óJ  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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 	 d dlmZ  ej*                  e«      Zej0                  ej2                  z  ej4                  z  ej6                  z  Zeej6                   z  Zeee e! e"d«      fZ# e
jH                  d	e
jJ                  «      Z&d
„ Z' e(«       Z)dZ*i Z+de,d<   dd„Z-dd„Z.ddddœfdddifdi fdi fgZ/de,d<   dd„Z0dd„Z1dd„Z2d d„Z3d!d„Z4y# e$ r  G d„ d«      ZY ŒØw xY w)"é    )ÚannotationsN)ÚAny)Ú	BaseModel)Ú_orjson)ÚZoneInfoc                  ó   — e Zd ZdZy)r   zIntroduced in python 3.9.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úd/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langsmith/_internal/_serde.pyr   r      s   „ Ú'r   r   s   \\ud[89a-f][0-9a-f]{2}c           
     ó  — 	 t        | t        j                  «      r| j                  «       S t        | t        j                  «      rt        | «      S t        | t        «      r!t        | «      j                  t        | «      dœS t        | t        t        t        j                  f«      rt        | «      S t        | t        j                  t        f«      r| j!                  d «      S t        | t        j"                  «      r| j%                  «       S t        | t&        j(                  «      r3| j+                  «       j,                  dk\  rt/        | «      S t1        | «      S t        | t2        j4                  t2        j6                  t2        j8                  t2        j:                  t2        j<                  t2        j>                  t@        jB                  f«      rt        | «      S t        | tD        jF                  «      r| jH                  S t        | tJ        tL        f«      r#tO        jP                  | «      jS                  «       S t        | «      S # tT        $ r8}tV        jY                  dt        | «      › d|› �«       Y d }~t        | «      S d }~ww xY w)N)ÚerrorÚmessager   úFailed to serialize ú
 to JSON: )-Ú
isinstanceÚdatetimeÚ	isoformatÚuuidÚUUIDÚstrÚBaseExceptionÚtyper	   ÚsetÚ	frozensetÚcollectionsÚdequeÚlistÚtimezoner   ÚtznameÚ	timedeltaÚtotal_secondsÚdecimalÚDecimalÚas_tupleÚexponentÚintÚfloatÚ	ipaddressÚIPv4AddressÚIPv4InterfaceÚIPv4NetworkÚIPv6AddressÚIPv6InterfaceÚIPv6NetworkÚpathlibÚPathÚreÚPatternÚpatternÚbytesÚ	bytearrayÚbase64Ú	b64encodeÚdecodeÚ	ExceptionÚloggerÚdebug)ÚobjÚes     r   Ú_simple_defaultrB   +   s×  € ð-Fô �cœ8×,Ñ,Ô-Ø—=‘=“?Ð"Ü˜œTŸY™YÔ'Ü�s“8ˆOÜ˜œ]Ô+Ü! #›Y×/Ñ/¼CÀ»HÑEÐEÜ˜œc¤9¬k×.?Ñ.?Ð@ÔAÜ˜“9ÐÜ˜œh×/Ñ/´Ð:Ô;Ø—:‘:˜dÓ#Ð#Ü˜œX×/Ñ/Ô0Ø×$Ñ$Ó&Ð&Ü˜œWŸ_™_Ô-Ø�|‰|‹~×&Ñ&¨!Ò+Ü˜3“x�ä˜S“zÐ!ÜØä×%Ñ%Ü×'Ñ'Ü×%Ñ%Ü×%Ñ%Ü×'Ñ'Ü×%Ñ%Ü—‘ðô
ô �s“8ˆOÜ˜œRŸZ™ZÔ(Ø—;‘;ÐÜ˜œe¤YÐ/Ô0Ü×#Ñ# CÓ(×/Ñ/Ó1Ð1Ü�3‹xˆøÜò FÜ�‰Ð+¬D°«I¨;°jÀÀÐD×EÐEÜˆs‹8€OûðFúsZ   ‚)I ¬$I Á0I Â/I Â20I Ã#)I ÄAI Å
I ÅA?I Ç%I È 8I È9
I É	JÉ$J Ê Ji   zdict[type, Any]Ú_pydantic_core_serializersc                ój   — t        t        «      t        k\  rt        j                  «        |t        | <   y ©N)ÚlenrC   Ú_PYDANTIC_SERIALIZER_CACHE_MAXÚclear)ÚclsÚ
serializers     r   Ú_remember_pydantic_serializerrK   d   s(   € Ü
Ô%Ó&Ô*HÒHÜ"×(Ñ(Ô*Ø&0Ô˜sÒ#r   c                óh  — t        | «      }t        j                  |t        «      }|t        u rGd}t	        | t
        «      r)|j                  t
        j                  u rt        |dd«      }t        ||«       |€t        S 	 |j                  | ddd¬«      S # t        $ r t        |d«       t        cY S w xY w)aò  Serialize a Pydantic v2 model with its low level core serializer.

    `model_dump()` is a Python wrapper around this serializer. Calling the
    low-level serializer is measurably cheaper, if it hasn't been overridden.

    Returns `_MISSING` when the shortcut doesn't apply, so callers fall back to
    other methods. A raise is remembered per class, because
    `_serialization_methods` starts with the same json-mode dump: retrying it
    per object would only raise twice instead of once.
    NÚ__pydantic_serializer__ÚjsonTF)ÚmodeÚexclude_noneÚwarnings)r   rC   ÚgetÚ_MISSINGr   r   Ú
model_dumpÚgetattrrK   Ú	to_pythonr=   )r@   rI   rJ   s      r   Ú_pydantic_json_dumprW   j   s«   € ô ˆs‹)€CÜ+×/Ñ/°´XÓ>€JØ”XÑØˆ
Ü�cœ9Ô%¨#¯.©.¼I×<PÑ<PÑ*Pô ! Ð&?ÀÓFˆJÜ% c¨:Ô6ØÐÜˆðØ×#Ñ# C¨fÀ4ÐRWÐ#ÓXÐXøÜò Ü% c¨4Ô0ÜŠðús   Á>B ÂB1Â0B1rT   TrN   )rP   rO   rP   ÚdictÚto_dictz list[tuple[str, dict[str, Any]]]Ú_serialization_methodsc                óÔ  — 	 t        | t        t        f«      r<t        | d«      r%t	        | j
                  «      r| j                  «       S t        | «      S t        | t        «      rt        | «      S t        | «      }|t        ur|S t        D ]G  \  }}t        | |d «      }t	        |«      sŒ	  |di |¤Ž}t        |t        «      st        |«      c S |c S  t        | «      S # t        $ r:}t         j#                  d|› dt        | «      › dt%        |«      › �«       Y d }~Œ“d }~ww xY w# t        $ r9}t         j#                  dt        | «      › d|› �«       t        | «      cY d }~S d }~ww xY w)NÚ_asdictzFailed to use z to serialize r   r   r   )r   r   ÚtupleÚhasattrÚcallabler\   r!   r   rB   rW   rS   rZ   rU   rX   r   r=   r>   r?   Úrepr)r@   Úfast_serializedÚattrÚkwargsÚmethodÚresponserA   s          r   Ú_serialize_jsonrf   ™   sM  € ð Ü�cœC¤˜<Ô(Ü�s˜IÔ&¬8°C·K±KÔ+@à—{‘{“}Ð$Ü˜“9Ðô �cœ4Ô Ü" 3Ó'Ð'ô .¨cÓ2ˆØ¤(Ñ*Ø"Ð"ç2‰LˆD�&Ü˜S $¨Ó-ˆFÜ˜Õð	Ù%Ñ/¨Ñ/�HÜ% h´Ô5Ü" 8›}Ò,Ø#’Oð 3ô ˜sÓ#Ð#øô !ò Ü—L‘LØ(¨¨¨n¼TÀ#»Y¸Kð H"Ü"& q£' ð,÷ñ ûðûô ò Ü�‰Ð+¬D°«I¨;°jÀÀÐDÔEÜ�3‹x�ûðúsr   ‚AD% Á	
D% ÁD% Á/D% Â$D% Â*"CÃD% ÃCÃD% ÃD% Ã	D"Ã(0DÄD% ÄD"Ä"D% Ä%	E'Ä..E"ÅE'Å"E'c                óF  — t        | t        «      rii }| j                  «       D ]R  \  }}t        |t        «      r|nt	        t        |«      «      }||v rt        j                  d«       t        |«      ||<   ŒT |S t        | t        «      r| D �cg c]  }t        |«      ‘Œ c}S t        | t        «      r3t        | d«      rt        | j                  «      st        d„ | D «       «      S t        | t        j                  «      rt        j                  d„ | D «       «      S | S c c}w )a“  Recursively stringify dict keys that orjson will reject.

    Walks ``dict``, ``list``, ``tuple`` and ``deque`` so that unsupported keys
    hidden at any depth are coerced before serialization. Tuples and deques
    are covered here even though they're only ever *values*: orjson serializes
    them natively (as arrays) and therefore never routes them through the
    ``default`` hook, so a bad-keyed dict nested inside one would otherwise
    slip past normalization. Cycles are handled downstream by
    ``_serialize_json`` (which collapses them to ``str``), not here.

    JSON object keys must ultimately be ``str``/``int``/``float``/``bool``/
    ``None``; other key types are stringified via ``_simple_default`` so they
    match the formats the fast path would produce (e.g. ``datetime`` -> ISO
    8601, ``bytes`` -> base64) rather than Python's ``str()`` or ``repr()``.

    Note: stringifying a non-str key can collide with another key (e.g. a
    literal ``"(1, 2)"`` and a coerced ``(1, 2)``). When that happens one entry
    overwrites the other (last-in-iteration-order wins); the collision is
    logged at debug level so the data loss is traceable.
    zXDict key collision during JSON key normalization; an existing value will be overwritten.r\   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrE   ©Ú_normalize_json_keys©Ú.0Úvalues     r   Ú	<genexpr>z'_normalize_json_keys.<locals>.<genexpr>æ   s   è ø€ ÐB¹c°UÔ)¨%×0¹cùó   ‚c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrE   ri   rk   s     r   rn   z'_normalize_json_keys.<locals>.<genexpr>è   s   è ø€ Ð NÉ#ÀÔ!5°e×!<É#ùro   )r   rX   ÚitemsÚ_JSON_KEY_TYPESr   rB   r>   r?   rj   r!   r]   r^   r_   r\   r   r    )r@   ÚnewÚkeyrm   Únorm_keys        r   rj   rj   ½   sþ   € ô* �#”tÔØ ˆØŸ)™)ž+‰JˆC�ä! #¤Ô7‘¼SÄÐQTÓAUÓ=Vð ð ˜3‰Ü—‘ð=ôô 1°Ó7ˆC�ŠMð &ð ˆ
Ü�#”tÔÙ9<Ó=¹°Ô$ UÕ+¸Ñ=Ð=Ü�#”uÔÜ��YÔ¤H¨S¯[©[Ô$9ô ÑB¹cÓBÓBÐBÜ�#”{×(Ñ(Ô)Ü× Ñ Ñ NÉ#Ó NÓNÐNØ€Jùò >s   ÂDc                ó*   — t        t        | «      «      S rE   )rj   rf   )r@   s    r   Ú$_serialize_json_with_normalized_keysrw   ì   s   € Ü¤°Ó 4Ó5Ð5r   c                ó.   — t         j                  d| «      S )Nr   )Ú_SURROGATE_REÚsub)Úss    r   Ú_elide_surrogatesr|   ð   s   € Ü×Ñ˜S !Ó$Ð$r   c           	     ó
  — 	 t        j                  | t        t        ¬«      S # t        $ �rV}t
        j                  dt        |«      › d�«       	 t        j                  | t        t        ¬«      cY d}~S # t        $ r Y nw xY wt        | «      }	 t        j                  |t        t        ¬«      cY d}~S # t        $ r,}t
        j                  dt        |«      › d�«       Y d}~nd}~ww xY wt        j                  |t        d¬«      j                  d«      }	 t        j                  t        j                  |j                  dd	¬
«      «      «      }n$# t         j                  $ r t!        |«      }Y nw xY w|cY d}~S d}~ww xY w)záSerialize an object to a JSON formatted string.

    Parameters
    ----------
    obj : Any
        The object to serialize.

    Returns:
    -------
    bytes
        The JSON formatted string, encoded as UTF-8 bytes.
    )ÚdefaultÚoptionzOrjson serialization failed: z. Falling back to json.Nz2Orjson serialization with normalized keys failed: T)r~   Úensure_asciizutf-8Úsurrogateescape)Úerrors)r   Údumpsrf   Ú_ORJSON_OPTIONS_FASTÚ	TypeErrorr>   r?   r`   Ú_ORJSON_OPTIONSrj   rw   rN   ÚencodeÚloadsr<   ÚJSONDecodeErrorr|   )r@   rA   Únormalized_objÚretry_eÚresults        r   Ú
dumps_jsonr�   ô   s\  € ð)Ü�}‰}ØÜ#Ü'ô
ð 	
øô
 ó #ä�‰Ð4´T¸!³W°IÐ=TÐUÔVð	ä—=‘=ØÜ'Ü&ôõ øô
 ò 	Ùð	úä-¨cÓ2ˆð
	Ü—=‘=ØÜ<Ü&ôõ øô
 ò 	Ü�L‰LØDÜ˜“=�/Ð!8ð:÷ñ ûð	úô
 —‘ØÜ8Øô
÷ ‰&�‹/ð	 	ð
	/Ü—]‘]Ü—‘˜fŸm™m¨GÐ<M˜mÓNÓOó‰Føô ×&Ñ&ò 	/Ü& vÓ.ŠFð	/úà�ûðG#úsŒ   ‚" ¢
F¬"E=ÁA4Á.FÁ4	B Á=E=Á?B Â E=ÂB4Â.FÂ4	C)Â="C$ÃE=Ã$C)Ã).E=Ä9EÅE=ÅE3Å0E=Å2E3Å3E=Å7FÅ=F)rI   r   rJ   r   ÚreturnÚNone)r@   r   rŽ   r   )r{   r8   rŽ   r8   )r@   r   rŽ   r8   )5Ú
__future__r   r:   r   r   r&   r,   rN   Úloggingr3   r5   r   Útypingr   Úpydanticr   Úlangsmith._internalr   Úzoneinfor   ÚImportErrorÚ	getLoggerr	   r>   ÚOPT_SERIALIZE_NUMPYÚOPT_SERIALIZE_DATACLASSÚOPT_SERIALIZE_UUIDÚOPT_NON_STR_KEYSr†   r„   r   r*   r+   Úboolr   rr   ÚcompileÚ
IGNORECASEry   rB   ÚobjectrS   rG   rC   Ú__annotations__rK   rW   rZ   rf   rj   rw   r|   r�   r   r   r   Ú<module>r¡      sh  ðÞ "ã Û Û Û Û Û Û Û Û 	Û Ý å å 'ð(Ý!ð 
ˆ×	Ñ	˜8Ó	$€à×ÑØ×%Ñ%ñ&à× Ñ ñ!ð ×Ññð ð '¨'×*BÑ*BÐ)BÑBÐ Ø˜˜U D©$¨t«*Ð5€ð �—
‘
Ð5°r·}±}ÓE€ò/ñd ‹8€ð "&Ð Ø.0Ð ˜OÓ 0ó1óðB  D°&Ñ9Ð:ð �N DÐ)Ð*ØˆR€LØ�€Oð	<Ð Ð8ó 	ó"!óH,ó^6ó%ô6øð ò (÷(ó (ð(ús   ÁD ÄD"Ä!D"