o
    ZhH                     @  s   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 zd dlmZ W n eyR   G dd dZY nw eeZdd	 Zd
dddfdi fdi fgZdddZdddZdddZdS )    )annotationsN)Any)_orjson)ZoneInfoc                   @  s   e Zd ZdZdS )r   zIntroduced in python 3.9.N)__name__
__module____qualname____doc__ r
   r
   Q/var/www/html/lang_env/lib/python3.10/site-packages/langsmith/_internal/_serde.pyr      s    r   c              
   C  sz  zt | tjr|  W S t | tjrt| W S t | tr't| jt| dW S t | t	t
tjfr5t| W S t | tjtfrC| d W S t | tjrN|  W S t | tjre|  jdkr`t| W S t| W S t | tjtjtjtjtjtjt j!fr}t| W S t | t"j#r| j$W S t | t%t&frt'(| ) W S t| W S  ty } zt*+dt|  d|  W Y d }~t| S d }~w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loggerdebug)objer
   r
   r   _simple_default   sN   








$r<   Z
model_dumpTjson)Zexclude_nonemodedictto_dictr:   r   returnc                 C  s@  z|t | ttfrt| drt| jr|  W S t| W S tD ]Y\}}t| |rwtt| |rwt | t	swzt| |}|di |}t |t
sMt|W   W S |W   W S  tyv } ztd| dt	|  dt|  W Y d }~qd }~ww qt| W S  ty } ztdt	|  d|  t| W  Y d }~S d }~ww )N_asdictzFailed to use z to serialize r   r   r
   )r   r   tuplehasattrcallablerB   r   _serialization_methodsgetattrr   r?   r   	Exceptionr8   r9   reprr<   r   )r:   attrkwargsmethodresponser;   r
   r
   r   _serialize_jsonW   sD   




rN   sr3   c                 C  s   t dt j}|d| }|S )Ns   \\ud[89a-f][0-9a-f]{2}    )r0   compile
IGNORECASEsub)rO   r2   resultr
   r
   r   _elide_surrogatesw   s   rU   c                 C  s   zt j| tt jt jB t jB t jB dW S  ty[ } z<t	dt
| d tj| tddd}zt t |jddd}W n t jyN   t|}Y nw |W  Y d	}~S d	}~ww )
a7  Serialize an object to a JSON formatted string.

    Parameters
    ----------
    obj : Any
        The object to serialize.
    default : Callable[[Any], Any] or None, default=None
        The default function to use for serialization.

    Returns:
    -------
    str
        The JSON formatted string.
    )defaultoptionzOrjson serialization failed: z. Falling back to json.T)rV   ensure_asciizutf-8surrogateescape)errorsN)r   dumpsrN   ZOPT_SERIALIZE_NUMPYZOPT_SERIALIZE_DATACLASSZOPT_SERIALIZE_UUIDZOPT_NON_STR_KEYS	TypeErrorr8   r9   rI   r=   encodeloadsr7   JSONDecodeErrorrU   )r:   r;   rT   r
   r
   r   
dumps_json}   s>   r`   )r:   r   rA   r   )rO   r3   rA   r3   )r:   r   rA   r3   )
__future__r   r5   r   r   r!   r'   r=   loggingr.   r0   r   typingr   Zlangsmith._internalr   Zzoneinfor   ImportError	getLoggerr   r8   r<   rF   rN   rU   r`   r
   r
   r
   r   <module>   s:    
.

 