
    j                     X   U 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mZmZmZmZmZ d dlZd dlmc mc mZ 	 d dlZ ej4                  e      Z e       Zeeeeegef   f      ed<   dedeegef   d	dfd
Z ddedeee!      d	efdZ"ded	e#fdZ$y# e$ r dZY _w xY w)    N)Enum)PurePath)GeneratorType)AnyCallableOptionalSetTupleType_ENCODER_EXTENSIONSobj_typeencoderreturnc                 2    t         j                  | |f       y N)r   add)r   r   s     n/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/jsonable_encoder.pyregister_encoder_extensionr      s    Xw/0    objseenc           	         |
t               }t        | d      rjt        |       }||v rJt        j	                  dt        |       j                   d|        dt        |       j                   d| dS |j                  |       	 t        D ]N  \  }}t        | |      st         ||       |      c t        | d      rt        |       }|j                  |       S S  t        j                  |       rA| j                  }t        ||      t        | d      rt        |       }|j                  |       S S t        | t        j                         rzi | j                  }|j#                  t        | j$                  t&              r| j$                  ni        t        ||      t        | d      rt        |       }|j                  |       S S t        | t(              r?t        | j*                  |      t        | d      rt        |       }|j                  |       S S t        | t,              r4t/        |       t        | d      rt        |       }|j                  |       S S t        | t.        t0        t2        t        d      f      r+| t        | d      rt        |       }|j                  |       S S t        | t4        j6                        r>t9        j:                  |       t        | d      rt        |       }|j                  |       S S t        | t4        j<                        r4t/        |       t        | d      rt        |       }|j                  |       S S t        | t>              rMtA        jB                  |       jE                  d      t        | d      rt        |       }|j                  |       S S t        | t&              ri }t        | jG                               }| jI                         D ]'  \  }}	||v st        ||      }
t        |	|      }|||
<   ) |t        | d      rt        |       }|j                  |       S S t        | tJ        t         tL        tN        tP        f      rOg }| D ]  }|jS                  t        ||              |t        | d      rt        |       }|j                  |       S S tT        ]t        | tT        jV                        rCt        | jY                         |      t        | d      rt        |       }|j                  |       S S t[        |       r+	 t        | d      rt        |       }|j                  |       yy	 t        | d      rt        |       }|j                  |       	 t/        |       }|S # t\        $ r t        j	                  d	d
       Y Xw xY w# t        | d      rt        |       }|j                  |       w w xY w)a  
    This is a modified version of the serializer generated by Fern in rest_api.core.jsonable_encoder.
    The code is simplified to serialize complex objects into a textual representation.
    It also handles cyclic references to avoid infinite recursion.
    N__dict__zFound cyclic reference to z id=z<Cyclic reference to >zutf-8z;<Pydantic ValidatorIterator serialization is not supported>zFailed to serialize object.T)exc_info)/sethasattridLOGGERdebugtype__name__r   r   
isinstanceencoderemovedataclassesis_dataclassr   pydantic	BaseModelupdate__pydantic_extra__dictr   valuer   strintfloatdtdatetimedatetime_utilsserialize_datetimedatebytesbase64	b64encodedecodekeysitemslist	frozensetr   tupleappendnpndarraytolist_is_pydantic_iterator_validator	Exception)r   r   obj_idtype_r   obj_dictencoded_dictallowed_keyskeyr-   encoded_keyencoded_valueencoded_listitemdatas                  r   r$   r$      s    |usJCT>LL5d3i6H6H5IfXVW*49+=+=*>d6(!LL< 1NE7#u%gclD11n 3
#WFKK $s 2 ##C(||H(D)f 3
#WFKK $c c8--.'#,,'HOOc44d; &&
 (D)T 3
#WFKK $Q c4 #))T*N 3
#WFKK $M c8$s8J 3
#WFKK $I cCeT$Z89F 3
#WFKK $E c2;;'!44S9B 3
#WFKK $A c277#s8> 3
#WFKK $= c5!##C(//8: 3
#WFKK $9 c4 Lsxxz?L!iik
U,&"(d"3K$*5$$7M0=L-	 *
  ( 3
#WFKK $% cD#y-GHL##F4$67  3
#WFKK $ >jbjj9#**,- 3
#WFKK $ +3/P 3
#WFKK $ 0 3
#WFKKs8DK  C2TBC 3
#WFKK $s   U? U? -U? 1A*U? %U? U? &U? (.U?  $U? 3U? +AU? 1 U? ;A
U? /9U? U? V% ? V"V% !V""V% %+Wc                 T    d| j                   j                  k(  rd| j                  v ryy)NValidatorIteratorr(   TF)	__class__r"   
__module__)r   s    r   rC   rC   o   s'    cmm444s~~9U r   r   )%r7   r&   r2   r1   loggingenumr   pathlibr   typesr   typingr   r   r   r	   r
   r   r(   !opik.rest_api.core.datetime_utilsrest_apicorer3   numpyr@   ImportError	getLoggerr"   r   r   r   __annotations__r   r/   r$   boolrC    r   r   <module>rb      s           < <  : : 
		8	$>Ae StXseSj%99:; C1 1#8L 1QU 1P P8CH- P Pf	 	 	  	Bs   B B)(B)