U
    h                     @  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k
r   G dd dZY nX eeZdd	 Zd
dddfdi fdi fgZdddddZdddddZdd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
   >/tmp/pip-unpacked-wheel-cqvhoa9t/langsmith/_internal/_serde.pyr      s   r   c              
   C  s  z<t | tjr|  W S t | tjr0t| W S t | trPt| jt| dW S t | t	t
tjfrlt| W S t | tjtfr| d W S t | tjr|  W S t | tjr|  jdkrt| W S t| W S nht | 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r6t'(| ) W S t| W S  tk
r| } zt*+dt|  d|  W 5 d }~X Y nX t| S )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   sJ    







,r<   Z
model_dumpTjson)Zexclude_nonemodedictZto_dictr   )r:   returnc                 C  sB  zt | ttfr8t| dr.t| jr.|  W S t| W S tD ]\}}t| |r<tt| |r<t | t	s<z:t| |}|f |}t |t
st|W   W S |W   W S  tk
r } z(td| dt	|  dt|  W 5 d }~X Y q<X q<t| W S  tk
r< } z*tdt	|  d|  t|  W Y S d }~X Y nX d S )N_asdictzFailed to use z to serialize r   r   )r   r   tuplehasattrcallablerA   r   _serialization_methodsgetattrr   r?   r   	Exceptionr8   r   reprr<   r   r9   )r:   attrkwargsmethodresponser;   r
   r
   r   _serialize_jsonR   s6    





rM   r3   )sr@   c                 C  s   t dt j}|d| }|S )Ns   \\ud[89a-f][0-9a-f]{2}    )r0   compile
IGNORECASEsub)rN   r2   resultr
   r
   r   _elide_surrogatesr   s    rT   c                 C  s   z&t j| tt jt jB t jB t jB dW S  tk
r } zvt	dt
| d tj| tddd}zt t |jddd}W n t jk
r   t|}Y nX | W Y S d	}~X Y nX d	S )
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)rU   ensure_asciizutf-8surrogateescape)errorsN)r   dumpsrM   ZOPT_SERIALIZE_NUMPYZOPT_SERIALIZE_DATACLASSZOPT_SERIALIZE_UUIDZOPT_NON_STR_KEYS	TypeErrorr8   r9   rH   r=   r<   encodeloadsr7   JSONDecodeErrorrT   )r:   r;   rS   r
   r
   r   
dumps_jsonx   s8    r_   )
__future__r   r5   r   r   r!   r'   r=   loggingr.   r0   r   typingr   Zlangsmith._internalr   Zzoneinfor   ImportError	getLoggerr   r8   r<   rE   rM   rT   r_   r
   r
   r
   r   <module>   s6   
.
 