
    j                     `   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
mZ ddlmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ 	 ddlmZ n# e$ r  G d d          ZY nw xY w	 ddlZn# e$ r dZY nw xY w ee           Z! G d de          Z"dej        de#fdZ$dS )z@private    N)Queue)Sequence)asdictis_dataclass)datedatetime)JSONEncoder)	getLogger)Path)Any)UUID)	BaseModel)LangfuseMedia)Serializablec                       e Zd ZdS )r   N)__name__
__module____qualname__     j/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/langfuse/_utils/serializer.pyr   r      s        r   r   c                   p     e Zd Zdededdf fdZdedefdZdedef fdZed	e	de
fd
            Z xZS )EventSerializerargskwargsreturnNc                 `     t                      j        |i | t                      | _        d S N)super__init__setseen)selfr   r   	__class__s      r   r    zEventSerializer.__init__'   s.    $)&)))!ee			r   objc                 B    	 t          t                    rt                    S t          t                    rj        p
dj         dS t          .t          t          j                  r                                S t          .t          t          j	                  r
                                S t          t                    rt          j                  rdS t          t                    rt          j                  rdS t          t          t           f          r&t#                    j         dt'                     S dt#                    j        v rt'                    S t          t(          j                  rj        S t          t.                    rt#                    j        S t1                    rt3                    S t          t4                    rt'                    S t          t6                    r'	                     d          S # t:          $ r Y dS w xY wt          t<                    r                                S t          t@                    rb!                                 t          tE          d	d           x}t@                    r|!                                 #                                S t          tH                    rt'                    S tJ          t#          d           ur)t          tJ                    r&                                S t          tN                    r& (                              rnt'                    S t          t&          t          t#          d           f          rS t          tR          tT          tV          f          rtY                    S t          tZ                    r  fd
.                                D             S t          tX                    r fdD             S t          t^                    r fdD             S ta          d          r& 1                    fdj2        D                       S ta          d          rtg                    }| j4        v rt#                    j        S  j4        5                    |            fdtm                    .                                D             } j4        7                    |           |S dt#                    j         dS # t          $ rS}tp          9                    dt#                    j         |           dt#                    j         dcY d }~S d }~ww xY w)Nz2<Upload handling failed for LangfuseMedia of type >NaNInfinityz: 	Streamingzutf-8z<not serializable bytes>rawc                 h    i | ].\  }}                     |                               |          /S r   default.0kvr#   s      r   
<dictcomp>z+EventSerializer.default.<locals>.<dictcomp>   s3    QQQTQQaQQQr   c                 :    g | ]}                     |          S r   r-   r0   itemr#   s     r   
<listcomp>z+EventSerializer.default.<locals>.<listcomp>   %    ;;;tT**;;;r   c                 :    g | ]}                     |          S r   r-   r5   s     r   r7   z+EventSerializer.default.<locals>.<listcomp>   r8   r   	__slots__c                 4    i | ]}|t          |d           S r   )getattr)r0   slotr%   s     r   r3   z+EventSerializer.default.<locals>.<dictcomp>   s'    NNNT73d33NNNr   __dict__c                 B    i | ]\  }}|                     |          S r   r-   r/   s      r   r3   z+EventSerializer.default.<locals>.<dictcomp>   s)    OOOTQaaOOOr   <z(Serialization failed for object of type )exc_info#"<not serializable object of type: >"):
isinstancer   serialize_datetimer   _reference_string_content_typenpgenericr6   ndarraytolistfloatmathisnanisinf	ExceptionKeyboardInterrupttyper   strenumEnumvaluer   r   r   r   bytesdecodeUnicodeDecodeErrorr   	isoformatr   model_rebuildr<   
model_dumpr   r   to_jsonintis_js_safe_integertupler!   	frozensetlistdictitemsr   hasattrr.   r:   idr"   addvarsremoveloggerdebug)r#   r%   r+   obj_idresultes   ``    r   r.   zEventSerializer.default+   sq   z	P#** /)#...#}-- ) a`CL]``` ~*S"*"="=~xxzz! ~*S"*"="=~zz||##u%% $*S// u#u%% "$*S// "!z#	+<=>> ;s)),::C::: d3ii0003xx#ty)) !y #u%% *Cyy))C   #c{{"#t$$  3xx#u%% 66::g...) 6 6 65556 #&& '}}&#y)) (!!### WS%%>%>>c	JJ (%%'''~~'''#t$$  3xx 4::--*S,2O2O-{{}}$
 #%% I"55c::HssCH #UDJJ788 
#sI677 !Cyy #t$$ RQQQQSYY[[QQQQ#t$$ <;;;;s;;;; #x(( <;;;;s;;;;sK(( 1||NNNNNNN   j)) 1CTY&&99--IMM&)))OOOOT#YY__=N=NOOOFI$$V,,,!M 1499-0000 	P 	P 	PLLO499;MOO     Pc9KOOOOOOOOO	Ps   #U &U 4U 4U 9)U $)U AU $U 6 U (U  U #U U H- -
H;7U :H;;+U 'A6U #U >U :U <+U (0U 4U "U 1"U 5U 
;U A"U )U 
VAVVVc                     | j                                          	 t                                          |                     |                    S # t
          $ r dt          |          j         dcY S w xY w)NrB   rC   )r"   clearr   encoder.   rP   rR   r   )r#   r%   r$   s     r   rq   zEventSerializer.encode   s|    		P77>>$,,s"3"3444 	P 	P 	POc9KOOOOOO	Ps   3A "A54A5rV   c                 *    d}d}|| cxk    o|k    nc S )a  Ensure the value is within JavaScript's safe range for integers.

        Python's 64-bit integers can exceed this range, necessitating this check.
        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
        l    l r   )rV   max_safe_intmin_safe_ints      r   r_   z"EventSerializer.is_js_safe_integer   s0     !#u444444444r   )r   r   r   r   r    r.   rS   rq   staticmethodr^   boolr_   __classcell__)r$   s   @r   r   r   &   s        $c $S $T $ $ $ $ $ ${P3 {P3 {P {P {P {PzP# P# P P P P P P 	5# 	5$ 	5 	5 	5 \	5 	5 	5 	5 	5r   r   r2   r   c                     dt           j        dt          fd}| j         ||           S t           j                                                                        j        }|                     |          } ||          S )Nr2   r   c                    | j         h| j                             d           t          j        j                            d           k    r(|                                                     dd          S |                                 S )Nz+00:00Z)tzinfotznamedttimezoneutcrZ   replace)r2   s    r   _serialize_zoned_datetimez5serialize_datetime.<locals>._serialize_zoned_datetime   sm    8AHOOD$9$9R[_=S=S>
 >
 %
 %
 ;;==((3777 ;;== r   )r{   )r}   r   rS   r{   now
astimezoner   )r2   r   local_tzlocalized_dts       r   rE   rE      s    !R[ !S ! ! ! ! 	x((+++;??$$//118yyy11((666r   )%__doc__r   r}   rT   rM   asyncior   collections.abcr   dataclassesr   r   r   jsonr	   loggingr
   pathlibr   typingr   uuidr   pydanticr   langfuse.mediar    langchain_core.load.serializabler   ImportErrornumpyrH   r   rj   r   rS   rE   r   r   r   <module>r      s                $ $ $ $ $ $ , , , , , , , , # # # # # # # #                                     ( ( ( ( ( (=======               	BBB 
8		T5 T5 T5 T5 T5k T5 T5 T5n7"+ 7# 7 7 7 7 7 7s$   A A21A26A; ;BB