
    hje[                       U d Z ddlmZ ddlZ ej        e          ZddlZddlZ	ddl
Z
ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZ ddlZddlm Z m!Z!m"Z"m#Z# dd	l$m%Z% dd
l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3 erddl4mZ5 ddl6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< dZ=dZ>eZ?de@d<    G d de          ZA G d de          ZB G d de          ZC G d de          ZD G d de          ZEeeEeFe?         f         ZGde@d<    G d  d!e          ZH G d" d#e          ZI G d$ d%e          ZJ G d& d'e          ZK G d( d)e          ZL G d* d+e          ZMeMZNed,         ZOde@d-<   ed.         ZPde@d/<   eed0         ePed1         f         ZQde@d2<    G d3 d4e          ZR G d5 d6e          ZSe! G d7 d8                      ZT ed9          ZUe! G d: d;eeU                               ZVeed<ge?f         ZWde@d=<   ee?d>gef         ZXde@d?<    G d@ dAeY          ZZ G dB dC          Z[e\Z] G dD d<          Z^ G dE dFeY          Z_ G dG dHe_          Z` G dI d>          ZadS )Jz. Serialization and deserialization utilities.     )annotationsN)array)isinfisnan)TYPE_CHECKINGAnyCallableClassVarGenericLiteralNoReturnSequence	TypedDictTypeVarUnioncast   )Unspecified	dataclassentriesis_dataclass)uses_pandas)array_encoding_disabledconvert_datetime_typeconvert_timedelta_typeis_datetime_typeis_timedelta_typemake_idtransform_arraytransform_series)BokehUserWarningwarn   )ID)NotRequired	TypeAlias)SetterModel)BufferDeserializationErrorDeserializerSerializableSerializationError
Serializerl    r&   AnyRepc                      e Zd ZU ded<   dS )Refr$   idN__name__
__module____qualname____annotations__     8lib/python3.11/site-packages/bokeh/core/serialization.pyr2   r2   ^   s         
FFFFFr:   r2   c                  $    e Zd ZU ded<   ded<   dS )RefRepzLiteral['ref']typer$   r3   Nr4   r9   r:   r;   r=   r=   a   s%         
FFFFFr:   r=   c                  $    e Zd ZU ded<   ded<   dS )	SymbolRepzLiteral['symbol']r>   strnameNr4   r9   r:   r;   r@   r@   e   s%         IIIIIr:   r@   c                  $    e Zd ZU ded<   ded<   dS )	NumberRepzLiteral['number']r>   z&Literal['nan', '-inf', '+inf'] | floatvalueNr4   r9   r:   r;   rD   rD   i   s*         111111r:   rD   c                  $    e Zd ZU ded<   ded<   dS )ArrayRepzLiteral['array']r>   NotRequired[list[AnyRep]]r   Nr4   r9   r:   r;   rG   rG   m   s*         &&&&&&r:   rG   ArrayRepLikec                  $    e Zd ZU ded<   ded<   dS )SetRepzLiteral['set']r>   rH   r   Nr4   r9   r:   r;   rK   rK   s   s*         &&&&&&r:   rK   c                  $    e Zd ZU ded<   ded<   dS )MapRepzLiteral['map']r>   z(NotRequired[list[tuple[AnyRep, AnyRep]]]r   Nr4   r9   r:   r;   rM   rM   w   s*         555555r:   rM   c                  $    e Zd ZU ded<   ded<   dS )BytesRepzLiteral['bytes']r>   zBuffer | Ref | strdataNr4   r9   r:   r;   rO   rO   {   s*         r:   rO   c                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )SliceRepzLiteral['slice']r>   z
int | NonestartstopstepNr4   r9   r:   r;   rR   rR      sB         r:   rR   c                  .    e Zd ZU ded<   ded<   ded<   dS )	ObjectRepLiteral['object']r>   rA   rB   NotRequired[dict[str, AnyRep]]
attributesNr4   r9   r:   r;   rW   rW      s3         III......r:   rW   c                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
ObjectRefReprX   r>   rA   rB   r$   r3   rY   rZ   Nr4   r9   r:   r;   r\   r\      s<         III
FFF......r:   r\   )littlebig	ByteOrderuint8int8uint16int16uint32int32float32float64DataTypeboolobject
NDDataTypec                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
TypedArrayRepzLiteral['typed_array']r>   rO   r   r_   orderri   dtypeNr4   r9   r:   r;   rn   rn      s:             OOOOOOOOr:   rn   c                  B    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dS )
NDArrayRepzLiteral['ndarray']r>   zBytesRep | ArrayRepLiker   r_   ro   rl   rp   z	list[int]shapeNr4   r9   r:   r;   rr   rr      sN         """"r:   rr   c                  L    e Zd ZU ded<   ded<   edd            Zdd	ZddZdS )r*   r$   r3   bytes | memoryviewrP   returnr2   c                ,    t          | j                  S )Nr3   )r2   r3   selfs    r;   refz
Buffer.ref   s    dgr:   bytesc                v    t          | j        t                    r| j                                        n| j        S N)
isinstancerP   
memoryviewtobytesry   s    r;   to_byteszBuffer.to_bytes   s.    &0J&G&GVty  """TYVr:   rA   c                Z    t          j        | j                                      d          S )Nzutf-8)base64	b64encoderP   decodery   s    r;   	to_base64zBuffer.to_base64   s#    	**11':::r:   N)rv   r2   )rv   r|   )rv   rA   )r5   r6   r7   r8   propertyr{   r   r   r9   r:   r;   r*   r*      su         
FFF   XW W W W; ; ; ; ; ;r:   r*   Tc                  (    e Zd ZU ded<   dZded<   dS )
Serializedr   contentNlist[Buffer] | Nonebuffers)r5   r6   r7   r8   r   r9   r:   r;   r   r      s,         JJJ#'G''''''r:   r   r/   Encoderr,   Decoderc                      e Zd ZdS )r.   Nr5   r6   r7   r9   r:   r;   r.   r.              Dr:   r.   c                      e Zd ZdZddZdS )	r-   z) A mixin for making a type serializable. 
serializerr/   rv   r0   c                    t                      )z8 Converts this object to a serializable representation. NotImplementedError)rz   r   s     r;   to_serializablezSerializable.to_serializable   s    !###r:   N)r   r/   rv   r0   )r5   r6   r7   __doc__r   r9   r:   r;   r-   r-      s.        33$ $ $ $ $ $r:   r-   c                  J   e Zd ZU dZi Zded<   edPd
            Zded<   ded<   ded<   ded<    e            dddQdZ	dRdZ
dSdZdTd ZedUd!            ZdVd#ZdWd%ZdXd(ZdWd)ZdYd*ZdZd,Zd[d.Zd\d1Zd]d4Zd^d6Zd_d9Zd`d<Zdad>ZdbdAZdcdDZdddGZdedJZdWdKZ dfdNZ!dOS )gr/   z Convert built-in and custom types into serializable representations.
        Not all built-in types are supported (e.g., decimal.Decimal due to
        lacking support for fixed point arithmetic in JavaScript).
    z"ClassVar[dict[type[Any], Encoder]]	_encodersr>   	type[Any]encoderr   rv   Nonec                H    || j         vsJ d| d            || j         |<   d S N'z is already registered)r   )clsr>   r   s      r;   registerzSerializer.register   ;    3=(((*Jd*J*J*J(((%dr:   zdict[ObjID, Ref]_referencesrj   	_deferredzdict[ObjID, Any]	_circularlist[Buffer]_buffersT)
referencesdeferredr   
set[Model]r   c               R    d |D             | _         || _        i | _        g | _        d S )Nc                8    i | ]}t          |          |j        S r9   )r3   r{   .0objs     r;   
<dictcomp>z'Serializer.__init__.<locals>.<dictcomp>   s"    CCCBsGGSWCCCr:   )r   r   r   r   )rz   r   r   s      r;   __init__zSerializer.__init__   s1    CC
CCC!r:   r   r   c                .    t          |          | j        v S r~   r3   r   rz   r   s     r;   has_refzSerializer.has_ref   s    #ww$***r:   r{   r2   c                d    t          |          | j        vsJ || j        t          |          <   d S r~   r   )rz   r   r{   s      r;   add_refzSerializer.add_ref   s5    #wwd.....$'C!!!r:   
Ref | Nonec                P    | j                             t          |                    S r~   )r   getr3   r   s     r;   get_refzSerializer.get_ref   s    ##BsGG,,,r:   c                *    t          | j                  S r~   )listr   ry   s    r;   r   zSerializer.buffers   s    DM"""r:   Serialized[Any]c                R    t          |                     |          | j                  S r~   )r   encoder   r   s     r;   	serializezSerializer.serialize   s     $++c**DL999r:   r0   c                    |                      |          }||S t          |          }|| j        v r|                     d           || j        |<   	 |                     |          | j        |= S # | j        |= w xY w)Nzcircular reference)r   r3   r   error_encode)rz   r   r{   idents       r;   r   zSerializer.encode   s    ll3?J3DN""JJ+,,, #u	&<<$$u%%u%%%%%s   A/ /
A9fieldsdict[str, AnyRep]c                D      fd|                                 D             S )Nc                T    i | ]$\  }}|t           u|                    |          %S r9   )r   r   r   keyvalrz   s      r;   r   z,Serializer.encode_struct.<locals>.<dictcomp>  s6    ___(#sS^H^H^T[[%%H^H^H^r:   )items)rz   r   s   ` r;   encode_structzSerializer.encode_struct   s%    ____fllnn____r:   c                   t          |t                    r|                    |           S | j                            t          |                    x} |||           S |d S t          |t                    r|                     |          S t          |t                    r| 	                    |          S t          |t                    r|                     |          S t          |t                    r|                     |          S t          |t                    r|                     |          S t          |t                     r|                     |          S t          |t$                    r|                     |          S t          |t(                    r|                     |          S t          |t,                    r|                     |          S t          |t0                    r|                     |          S t          |t4                    r|                     |          S t          |t8          j                  rG|j        dk    r|                     |          S |                      |!                                          S tE          |          r| #                    |          S | $                    |          S )Nr9   )%r   r-   r   r   r   r>   rj   _encode_boolrA   _encode_strint_encode_intfloat_encode_floattuple_encode_tupler   _encode_listset_encode_setdict_encode_dictr|   _encode_bytesslice_encode_slice
TypedArray_encode_typed_arraynpndarrayrs   _encode_ndarrayr   itemr   _encode_dataclass_encode_other)rz   r   r   s      r;   r   zSerializer._encode  s   c<(( $	+&&t,,,++DII666gC73%%%[4T"" 	+$$S)))S!! 	+##C(((S!! 	+##C(((U## 	+%%c***U## 	+%%c***T"" 	+$$S)))S!! 	+##C(((T"" 	+$$S)))U## 	+%%c***U## 	+%%c***Z(( 
	+++C000RZ(( 	+yB++C000||CHHJJ///# 	+))#...%%c***r:   c                    |S r~   r9   r   s     r;   r   zSerializer._encode_bool*      
r:   rA   c                    |S r~   r9   r   s     r;   r   zSerializer._encode_str-  r   r:   r   c                    t            |cxk     rt           k    rn n|S t          dt                     |                     t	          |                    S )Nz4out of range integer may result in loss of precision)_MAX_SAFE_INTr"   r!   r   r   r   s     r;   r   zSerializer._encode_int0  sW    >C0000=00000JGIYZZZ%%eCjj111r:   r   NumberRep | floatc                    t          |          rt          dd          S t          |          rt          d|dk     rdnd          S |S )Nnumbernan)r>   rE   r   z-infz+inf)r   rD   r   r   s     r;   r   zSerializer._encode_float7  sU    :: 	(%88883ZZ 	(C!GG&&PPPPJr:   tuple[Any, ...]rI   c                F    |                      t          |                    S r~   )r   r   r   s     r;   r   zSerializer._encode_tuple?  s      c+++r:   	list[Any]c                       fd|D             S )Nc                :    g | ]}                     |          S r9   r   )r   r   rz   s     r;   
<listcomp>z+Serializer._encode_list.<locals>.<listcomp>C  s%    222dD!!222r:   r9   r   s   ` r;   r   zSerializer._encode_listB  s    2222c2222r:   set[Any]rK   c                     t          |          dk    rt          d          S t          d fd|D                       S )Nr   r   r>   c                :    g | ]}                     |          S r9   r   r   entryrz   s     r;   r   z*Serializer._encode_set.<locals>.<listcomp>K  s%    ===U++===r:   r>   r   )lenrK   r   s   ` r;   r   zSerializer._encode_setE  sT    s88q==u%%%%=======   r:   dict[Any, Any]rM   c                     t          |          dk    rt          d          S t          d fd|                                D                       S )Nr   mapr   c                j    g | ]/\  }}                     |                               |          f0S r9   r   r   s      r;   r   z+Serializer._encode_dict.<locals>.<listcomp>T  s:    ZZZ(#s$++c**DKK,<,<=ZZZr:   r  )r  rM   r   r   s   ` r;   r   zSerializer._encode_dictN  s\    s88q==u%%%%ZZZZciikkZZZ   r:   rW   c                     t          |          }|j        }|j                            dd          }t	          d| d|           }t          t          |                    }|r fd|D             |d<   |S )Nz	<locals>. rk   .)r>   rB   c                B    i | ]\  }}|                     |          S r9   r   r   s      r;   r   z0Serializer._encode_dataclass.<locals>.<dictcomp>d  s+     R R R83dkk#&6&6 R R Rr:   rZ   )r>   r6   r7   replacerW   r   r   )rz   r   r   modulerB   reprZ   s   `      r;   r   zSerializer._encode_dataclassW  s    3ii''R88##T##
 
 

 '#,,''
 	S R R R Rz R R RC
r:   ru   rO   c                    t          t                      |          }| j        r| j                            |           |}n|                                }t          d|          S )Nr|   )r>   rP   )r*   r   r   r   appendr   rO   )rz   r   bufferrP   s       r;   r   zSerializer._encode_bytesh  sb    		3'' > 	&M  (((DD##%%DW40000r:   r   rR   c                    t          d|                     |j                  |                     |j                  |                     |j                            S )Nr   )r>   rS   rT   rU   )rR   r   rS   rT   rU   r   s     r;   r   zSerializer._encode_slicet  sO    ++ci((SX&&SX&&	
 
 
 	
r:   TypedArray[Any]rn   c                                           t                              }j        j        d fd}t	          d|t
          j         |                      S )Nrv   ri   c                    dk    rdS dk    rdS dv r(j         dk    rdS j         dk    rd	S j         d
k    rdS n+dv r'j         dk    rdS j         dk    rdS j         d
k    rdS                     d d  d           d S )Nfrg   drh   >   BHILQr#   ra   r   rc      re   >   bhilqrb   rd   rf   z*can't serialize array with items of type '@r   )itemsizer   )r#  r   rz   typecodes   r;   rp   z-Serializer._encode_typed_array.<locals>.dtype  s    3 yS y666<1$$"7\Q&&#8\Q&&#8 ' 666<1$$!6\Q&&"7\Q&&"7 JJZHZZxZZZ[[[[[r:   typed_array)r>   r   ro   rp   )rv   ri   )r   r   r$  r#  rn   sys	byteorder)rz   r   r   rp   r#  r$  s   ``  @@r;   r   zSerializer._encode_typed_array|  s    "":c??33<<	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\2 -%''	
 
 
 	
r:   npt.NDArray[Any]rr   c                   t          |          }t          |          r<|                     |                                                                          }d}n9|                     |j                  }t          t          |j	        j
                  }t          d|t          |j                  |t          j                  S )Nrk   r   )r>   r   rs   rp   ro   )r   r   r   flattentolistr   rP   r   rl   rp   rB   rr   r   rs   r&  r'  )rz   r   r   rP   rp   s        r;   r   zSerializer._encode_ndarray  s    $$ #5)) 	7$$U]]__%;%;%=%=>>DEE%%ej11DU[%566Eu{##-
 
 
 	
r:   c                v   t          |          rt          |          S t          |          rt          |          S t	          |t
          j                  r|                                S t          j	        t          |          t          j                  r"|                     t          |                    S t          j	        t          |          t          j                  r"|                     t!          |                    S t          j	        t          |          t          j                  r"|                     t'          |                    S t)          |          r]dd l}t	          ||j        |j        |j        j        j        f          r"|                     t9          |                    S ||j        u rd S t=          |d          rCt	          |                                x}t          j                   r|                     |          S | !                    dt          |                      d S )Nr   	__array__zcan't serialize )"r   r   r   r   r   dtdate	isoformatr   
issubdtyper>   floatingr   r   integerr   r   bool_r   rj   r   pandasSeriesIndexapi
extensionsExtensionArrayr   r    NAhasattrr-  r   r   )rz   r   pdarrs       r;   r   zSerializer._encode_other  s   C   	.(---S!! 	/)#...c27## 	#==??" =cBK00 	2%%eCjj111=cBJ// 	.##CHH---=cBH-- 	0$$T#YY/// s 	#	28RV5F5UVWW ++,<S,A,ABBBt 3$$ 	-3==??4JCBJ)W)W 	-'',,,

1d3ii1122222r:   messager   c                     t          |          r~   )r.   )rz   r?  s     r;   r   zSerializer.error  s     )))r:   N)r>   r   r   r   rv   r   )r   r   r   rj   rv   r   )r   r   rv   rj   )r   r   r{   r2   rv   r   )r   r   rv   r   )rv   r   )r   r   rv   r   )r   r   rv   r0   )r   r   rv   r   )r   rj   rv   r0   )r   rA   rv   r0   )r   r   rv   r0   )r   r   rv   r   )r   r   rv   rI   )r   r   rv   rI   )r   r   rv   rK   )r   r  rv   rM   )r   r   rv   rW   )r   ru   rv   rO   )r   r   rv   rR   )r   r  rv   rn   )r   r(  rv   rr   )r?  rA   rv   r   )"r5   r6   r7   r   r   r8   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r:   r;   r/   r/      s          57I6666& & & [& "!!!OOO363554      + + + +( ( ( (- - - - # # # X#: : : :& & & &` ` ` `%+ %+ %+ %+N      2 2 2 2   , , , ,3 3 3 3         "
1 
1 
1 
1
 
 
 
$
 $
 $
 $
L
 
 
 
(3 3 3 3B* * * * * *r:   c                      e Zd ZdS )r+   Nr   r9   r:   r;   r+   r+     r   r:   r+   c                        e Zd Zd fdZ xZS )UnknownReferenceErrorr3   r$   rv   r   c                `    t                                          d| d           || _        d S )Nzcan't resolve reference 'r   )superr   r3   )rz   r3   	__class__s     r;   r   zUnknownReferenceError.__init__  s2    :R:::;;;r:   )r3   r$   rv   r   )r5   r6   r7   r   __classcell__)rG  s   @r;   rD  rD    s=                 r:   rD  c                     e Zd ZU dZi Zded<   edKd
            Zded<   ded<   ded<   ded<   dLdddMdZdNdZ	dOdZ
dLdPd"ZdQd#ZdRd%ZdSd(ZdTd*ZdUd-ZdVd0ZdWd3ZdXd6ZdYd9ZdZd<Zd[d?Zd\dBZd]dDZd^dFZd_dJZdS )`r,   zI Convert from serializable representations to built-in and custom types. zClassVar[dict[str, Decoder]]	_decodersr>   rA   decoderr   rv   r   c                H    || j         vsJ d| d            || j         |<   d S r   )rJ  )r   r>   rK  s      r;   r   zDeserializer.register  r   r:   zdict[ID, Model]r   Setter | None_setterrj   	_decodingzdict[ID, Buffer]r   Nsetterr   Sequence[Model] | NonerQ  c               V    d |pg D             | _         || _        d| _        i | _        d S )Nc                    i | ]
}|j         |S r9   rx   r   s     r;   r   z)Deserializer.__init__.<locals>.<dictcomp>  s    DDDCCFCDDDr:   F)r   rN  rO  r   )rz   r   rQ  s      r;   r   zDeserializer.__init__  s6    DD:3CDDDr:   r   r)   c                    |j         | j        v S r~   r   r   s     r;   r   zDeserializer.has_ref  s    v)))r:   Any | Serialized[Any]r   c                    t          |t                    r |                     |j        |j                  S |                     |          S r~   )r   r   r   r   r   r   s     r;   deserializezDeserializer.deserialize  s>    c:&& 	$;;s{CK888;;s###r:   r0   r   r   c                *   ||D ]}|| j         |j        <   | j        r|                     |          S d| _        	 |                     |          | j                                          d| _        S # | j                                          d| _        w xY w)NTF)r   r3   rO  _decodeclear)rz   r   r   r  s       r;   r   zDeserializer.decode  s    ! 2 2+1fi((> 	%<<$$$	#<<$$M!!!"DNN M!!!"DN""""s   A0 0"Bc                    t          |t                    rd|v ri|d         }| j        v r  j        |         |           S |dk    r(                     t	          t
          |                    S |dk    r(                     t	          t          |                    S |dk    r(                     t	          t          |                    S |dk    r( 
                    t	          t          |                    S |dk    r(                     t	          t          |                    S |dk    r(                     t	          t          |                    S |dk    r(                     t	          t"          |                    S |d	k    r(                     t	          t&          |                    S |d
k    r(                     t	          t*          |                    S |dk    r(                     t	          t.          |                    S |dk    rTd|v r(                     t	          t2          |                    S                      t	          t6          |                    S                      d| d           d S d|v r(                     t	          t
          |                    S  fd|                                D             S t          |t<                    r fd|D             S |S )Nr>   r{   symbolr   r   r   r  r|   r   r%  r   rk   r3   z$unable to decode an object of type 'r   c                B    i | ]\  }}|                     |          S r9   rZ  r   s      r;   r   z(Deserializer._decode.<locals>.<dictcomp>6  s+    KKK83T\\#..KKKr:   c                :    g | ]}                     |          S r9   r_  r   s     r;   r   z(Deserializer._decode.<locals>.<listcomp>8  s%    999EDLL''999r:   )r   r   rJ  _decode_refr   r2   _decode_symbolr@   _decode_numberrD   _decode_arrayrG   _decode_setrK   _decode_maprM   _decode_bytesrO   _decode_slicerR   _decode_typed_arrayrn   _decode_ndarrayrr   _decode_object_refr\   _decode_objectrW   r   r   r   )rz   r   r>   s   `  r;   rZ  zDeserializer._decode  s   c4   '	}}6{4>))/4>$/T:::U]]++DcNN;;;X%%..tIs/C/CDDDX%%..tIs/C/CDDDW__--d8S.A.ABBBU]]++D,=,=>>>U]]++D,=,=>>>W__--d8S.A.ABBBW__--d8S.A.ABBB]**33D4L4LMMMY&&//Z0E0EFFFX%%s{{#66tL#7N7NOOO#224	33G3GHHHJJMdMMMNNNNN''S#777KKKKsyy{{KKKKT"" 	9999S9999Jr:   r2   c                    |d         }| j                             |          }||S |                     t          |                     d S )Nr3   )r   r   r   rD  )rz   r   r3   instances       r;   ra  zDeserializer._decode_ref<  sM    Y#''++OJJ,R0011111r:   r@   r   c                H    |d         }|                      d| d           d S )NrB   zcan't resolve named symbol 'r   )r   )rz   r   rB   s      r;   rb  zDeserializer._decode_symbolD  s/    6{

9$999:::::r:   rD   c                ^    |d         }t          |t                    rt          |          n|S )NrE   )r   rA   r   )rz   r   rE   s      r;   rc  zDeserializer._decode_numberH  s*    G)%55@uU|||5@r:   rG   r   c                L     |                     dg           } fd|D             S )Nr   c                :    g | ]}                     |          S r9   r_  r   s     r;   r   z.Deserializer._decode_array.<locals>.<listcomp>N  %    ;;;e$$;;;r:   r   rz   r   r   s   `  r;   rd  zDeserializer._decode_arrayL  0    '')R((;;;;';;;;r:   rK   r   c                L     |                     dg           } fd|D             S )Nr   c                :    h | ]}                     |          S r9   r_  r   s     r;   	<setcomp>z+Deserializer._decode_set.<locals>.<setcomp>R  rs  r:   rt  ru  s   `  r;   re  zDeserializer._decode_setP  rv  r:   rM   r  c                L     |                     dg           } fd|D             S )Nr   c                h    i | ].\  }}                     |                               |          /S r9   r_  r   s      r;   r   z,Deserializer._decode_map.<locals>.<dictcomp>V  s7    OOO(#sc""DLL$5$5OOOr:   rt  ru  s   `  r;   rf  zDeserializer._decode_mapT  s0    '')R((OOOOgOOOOr:   rO   r|   c                   |d         }t          |t                    rt          j        |          S t          |t                    r|}n8|d         }|| j        v r| j        |         }n|                     d| d           |j        S )NrP   r3   zcan't resolve buffer 'r   )r   rA   r   	b64decoder*   r   r   rP   )rz   r   rP   r  r3   s        r;   rg  zDeserializer._decode_bytesX  s    6{dC   
	;#D)))f%% 	;FFdBT]""r*

9B999:::{r:   rR   r   c                    |                      |d                   }|                      |d                   }|                      |d                   }t          |||          S )NrS   rT   rU   )rZ  r   )rz   r   rS   rT   rU   s        r;   rh  zDeserializer._decode_slicei  sS    S\**||CK((||CK((UD$'''r:   rn   r  c           
     V   |d         }|d         }|d         }|                      |          }t          dddddd	d
d          }|                    |          }||                     d| d           t	          ||          }|t
          j        k    r|                                 |S )Nr   ro   rp   r  r  r  r  r  r  r  r  r`   zunsupported dtype 'r   )rZ  r   r   r   r   r&  r'  byteswap)	rz   r   r   ro   rp   rP   dtype_to_typecoder$  r%  s	            r;   ri  z Deserializer._decode_typed_arrayo  s    GGG||E""  
 
 
 %((//JJ5U555666'1(D'A'ACM!!  """r:   rr   r(  c                   |d         }|d         }|d         }|d         }|                      |          }t          |t                    rOt          j        t          j        ||                    }|t          j        k    r|                    d           nt          j	        ||          }t          |          dk    r|                    |          }|S )	Nr   ro   rp   rs   )rp   T)inplacer#   )rZ  r   r|   r   copy
frombufferr&  r'  r  r   r  reshape)rz   r   r   ro   rp   rs   decodedr   s           r;   rj  zDeserializer._decode_ndarray  s    GGGG,,u%% gu%% 	5gbmG5AAABBG%%   ...hwe444Gu::>>ooe,,Gr:   rW   rk   c                    t                      r~   r   r   s     r;   rl  zDeserializer._decode_object  s    !###r:   r\   c                h    |d         } j                             |          }|t          d| dt                     |S |d         }|                    d          }                     |          }|                    ||          }|                     d| d| d	           | j         |j        <   |j        sd
dl	m
} |                    |           |W fd|                                D             }|                                D ]"\  }	}
|                    |	|
 j                   #|S )Nr3   zreference already known 'r   rB   rZ   rx   zcan't instantiate z(id=)r#   )HasPropsc                B    i | ]\  }}|                     |          S r9   r_  r   s      r;   r   z3Deserializer._decode_object_ref.<locals>.<dictcomp>  s+    !\!\!\XS##t||C'8'8!\!\!\r:   rP  )r   r   r"   r!   _resolve_type__new__r   r3   _initialized	has_propsr  r   r   set_from_jsonrN  )rz   r   r3   rn  rB   rZ   r   r  decoded_attributesr   r   s   `          r;   rk  zDeserializer._decode_object_ref  sl   Y#''++2R2224DEEEO6{WW\**
  &&;;sr;**JJ;D;;b;;;<<<(0%
 $ 	(++++++h'''!!\!\!\!\IYIYI[I[!\!\!\.4466 F FS&&sC&EEEEr:   type[Model]c                    ddl m} |j                            |          }|-t	          ||          r|S |                     d| d           d S |dk    rddlm} |S |                     d| d           d S )	Nr   r(   zobject of type 'z' is not a subclass of 'Model'Figure)figurezcan't resolve type 'r   )modelr)   model_class_reverse_mapr   
issubclassr   plottingr  )rz   r>   r)   r   r  s        r;   r  zDeserializer._resolve_type  s    !!!!!!+//55?#u%% T


RdRRRSSSSSx------

9$999:::::r:   r   str | DeserializationErrorr   c                N    t          |t                    rt          |          |r~   )r   rA   r+   )rz   r   s     r;   r   zDeserializer.error  s'    eS!! 	&u---Kr:   )r>   rA   rK  r   rv   r   r~   )r   rR  rQ  rM  )r   r)   rv   rj   )r   rV  rv   r   )r   r0   r   r   rv   r   )r   r0   rv   r   )r   r2   rv   r)   )r   r@   rv   r   )r   rD   rv   r   )r   rG   rv   r   )r   rK   rv   r   )r   rM   rv   r  )r   rO   rv   r|   )r   rR   rv   r   )r   rn   rv   r  )r   rr   rv   r(  )r   rW   rv   rk   )r   r\   rv   r)   )r>   rA   rv   r  )r   r  rv   r   )r5   r6   r7   r   rJ  r8   rA  r   r   r   rX  r   rZ  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rl  rk  r  r   r9   r:   r;   r,   r,     s        SS.0I0000& & & [& !   OOO]a      * * * *$ $ $ $# # # # # ( ( ( (T2 2 2 2; ; ; ;A A A A< < < << < < <P P P P   "( ( ( (   <   ,$ $ $ $   @; ; ; ;     r:   )br   
__future__r   logging	getLoggerr5   logr   datetimer.  r&  r   r   mathr   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   numpyr   util.dataclassesr   r   r   r   util.dependenciesr   util.serializationr   r   r   r   r   r   r   r    util.warningsr!   r"   typesr$   numpy.typingnpttyping_extensionsr%   r&   core.has_propsr'   r  r)   __all__r   r0   r8   r2   r=   r@   rD   rG   r   rI   rK   rM   rO   rR   rW   r\   ModelRepr_   ri   rl   rn   rr   r*   r   r   r   r   
ValueErrorr.   r-   r   ObjIDr/   r+   rD  r,   r9   r:   r;   <module>r     s   5 4 4
 # " " " " " g!!      



 % % % % % %                                                    , + + + + +	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 3 2 2 2 2 2 2 2       88888888''''''          )       Y       	   2 2 2 2 2	 2 2 2' ' ' ' 'y ' ' '  $v, 67 7 7 7 7' ' ' ' 'Y ' ' '6 6 6 6 6Y 6 6 6    y       y   / / / / /	 / / /
/ / / / /9 / / / /	 / / / /ij j j j jgfox9JJK
 K K K K    I           ; ; ; ; ; ; ; ; GCLL
( ( ( ( ( ( ( ( sL169: : : : :v~6;< < < < <	 	 	 	 	 	 	 	$ $ $ $ $ $ $ $ 	O* O* O* O* O* O* O* O*b	 	 	 	 	: 	 	 	    0   v v v v v v v v v vr:   