
    gH              
           d 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mZmZmZmZmZmZ ddlZddlmZ dd	lmZmZmZ eeeef      Zeeeef   ef   Zdd
edeeeeegef   f      defdZy)z
jsonable_encoder converts a Python object to a JSON-friendly dict
(e.g. datetimes to strings, Pydantic models to dicts).

Taken from FastAPI, and made a bit simpler
https://github.com/tiangolo/fastapi/blob/master/fastapi/encoders.py
    N)Enum)PurePath)GeneratorType)AnyCallableDictListOptionalSetUnion   )serialize_datetime)IS_PYDANTIC_V2encode_by_typeto_jsonable_with_fallbackobjcustom_encoderreturnc           	         xs i rOt        |       v r t        |          |       S j                         D ]  \  }}t        | |      s ||       c S  t        | t        j                        ryt
        rt        | j                  di       }nt        | j                  di       }r|j                         | j                  d      }d|v r|d   }d|v r|d   }t        ||      S t        j                  |       r"t        j                  |       }t        |      S t        | t              r$t!        j"                  |       j%                  d      S t        | t&              r| j(                  S t        | t*              rt-        |       S t        | t,        t.        t0        t        d       f      r| S t        | t2        j4                        rt7        |       S t        | t2        j8                        rt-        |       S t        | t              rYi }t;        | j=                               }| j                         D ])  \  }}	||v st        |      }
t        |	      }|||
<   + |S t        | t>        t:        t@        tB        tD        f      r'g }| D ]  }|jG                  t        |               |S dtH        d	tH        ffd
}tK        | |      S )Njson_encodersT)by_alias__root__rootr   zutf-8or   c                    t        |       }||S 	 t        |       }t        |      S # t        $ rX}g }|j                  |       	 t	        |       }n.# t        $ r"}|j                  |       t        |      |d }~ww xY wY d }~id }~ww xY w)Nr   )r   dict	Exceptionappendvars
ValueErrorjsonable_encoder)r   attempt_encodedataeerrorsr   s        Q/var/www/openai/venv/lib/python3.12/site-packages/cohere/core/jsonable_encoder.pyfallback_serializerz-jsonable_encoder.<locals>.fallback_serializerT   s    '*%!!		07D  ^DD  	0&(FMM!0Aw 0a  (a/0 		0s8   * 	BBAB	A>A99A>>BB)&typeitems
isinstancepydantic	BaseModelr   getattrmodel_config
__config__updater   r"   dataclassesis_dataclassasdictbytesbase64	b64encodedecoder   valuer   strintfloatdtdatetimer   datesetkeyslist	frozensetr   tupler   r   r   )r   r   encoder_typeencoder_instanceencoderobj_dictencoded_dictallowed_keyskeyr9   encoded_keyencoded_valueencoded_listitemr(   s    `             r'   r"   r"       sz   #)rN9&,>$s),S112@2F2F2H..c<0+C00 3I #x))*c..DGcnnorBGNN>*88T8*!
+HX'HAA$%%c*HH#u$++G44#tyy#x 3x#S%d45
#r{{#!#&&#rww3x#t388:))+JCl".s>R 0~ V,9[)	 &
 #c9mUCDD 0n UV Es Es E" %S*=>>    )N)__doc__r6   r2   r>   r=   enumr   pathlibr   typesr   typingr   r   r   r	   r
   r   r   r,   datetime_utilsr   pydantic_utilitiesr   r   r   r;   r:   	SetIntStrDictIntStrAnyr"    rP   r'   <module>r[      s          B B B  .  c3h 	U38_c)*E?# E?xS(C5RU:BV=V8W/X E?dg E?rP   