
    &Vf                         d 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
 ddlmZ dZ G d dej                  Zd	 Zd
 Z	 ddZ	 ddZd ZdS )z<JSON utilities for legacy saving formats (h5 and SavedModel)    N)serialization)serialization_lib)
tensorflow_EXTENSION_TYPE_SPECc                   (     e Zd ZdZd Z fdZ xZS )Encoderz>JSON encoder and decoder that handles TensorShapes and tuples.c                     t           j        r<t          |t           j                  r"|j        |                                nd}d|dS t          |          S )zMEncodes objects for types that aren't handled by the default
        encoder.NTensorShape
class_nameitems)tf	available
isinstancer
   rankas_listget_json_type)selfobjr   s      _/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/legacy/saving/json_utils.pydefaultzEncoder.default   sW     < 	AJsBN;; 	A%(X%9CKKMMMtE"/%@@@S!!!    c                 `    t                                          t          |                    S N)superencode_encode_tuple)r   r   	__class__s     r   r   zEncoder.encode   s!    ww~~mC00111r   )__name__
__module____qualname____doc__r   r   __classcell__)r   s   @r   r   r      sM        HH" " "2 2 2 2 2 2 2 2 2r   r   c                    t          | t                    rdt          d | D                       dS t          | t                    rd | D             S t          | t                    rd |                                 D             S | S )N	__tuple__c              3   4   K   | ]}t          |          V  d S r   r   .0is     r   	<genexpr>z _encode_tuple.<locals>.<genexpr>$   s*      77=++777777r   r   c                 ,    g | ]}t          |          S  r'   r(   s     r   
<listcomp>z!_encode_tuple.<locals>.<listcomp>'   s     ,,,Qa  ,,,r   c                 4    i | ]\  }}|t          |          S r-   r'   )r)   keyvalues      r   
<dictcomp>z!_encode_tuple.<locals>.<dictcomp>)   s&    FFFjc5]5))FFFr   )r   tuplelistdictr   )xs    r   r   r       s    !U 
%77Q77777
 
 	
 
At		 ,,!,,,,	At		 FFAGGIIFFFFr   c                 8    t          j        | t                    S )Nobject_hook)jsonloads_decode_helper)json_strings    r   decoder>   .   s    :k~>>>>r   c           	      d    t          j        | t          j        t          d||                    S )zFDecodes the JSON and deserializes any Keras objects found in the dict.T)deserializemodule_objectscustom_objectsr8   )r:   r;   	functoolspartialr<   )r=   rA   rB   s      r   decode_and_deserializerE   2   sA     :%))	
 
 
   r   Fc           	         t          | t                    rd| v rt          j        r| d         dk    rt          j        | d                   S | d         dk    rGddlm} |                    | d                                       t          | d                             S | d         d	k    r| d
         }g }| d         D ]K\  }}|
                    t          j        |t          j                            |                               Lt          j                            t          |          |d          S | d         dk    rt!          d | d         D                       S | d         dk    rt"          S |rGd| v rC	 d| vrt%          j        | ||          S t)          j        | ||          S # t*          $ r Y n+w xY w| d         dk    r| d                             d          S | S )aJ  A decoding helper that is TF-object aware.

    Args:
      obj: A decoded dictionary that may represent an object.
      deserialize: Boolean. When True, deserializes any Keras
        objects found in `obj`. Defaults to `False`.
      module_objects: A dictionary of built-in objects to look the name up in.
        Generally, `module_objects` is provided by midlevel library
        implementers.
      custom_objects: A dictionary of custom objects to look the name up in.
        Generally, `custom_objects` is provided by the end user.

    Returns:
      The decoded object.
    r   r
   r   TypeSpecr   type_spec_registry	type_spec
serializedCompositeTensorspectensors)dtypeTexpand_compositesr%   c              3   4   K   | ]}t          |          V  d S r   )r<   r(   s     r   r+   z!_decode_helper.<locals>.<genexpr>i   s*      AAq**AAAAAAr   __ellipsis____passive_serialization__module)rA   rB   	__bytes__r1   utf-8)r   r5   r   r   r
   tensorflow.python.frameworkrI   lookup_deserializer<   appendconstantdtypesas_dtypenestpack_sequence_asr3   Ellipsisr   deserialize_keras_objectr   
ValueErrorr   )	r   r@   rA   rB   rI   rM   rN   rO   tensors	            r   r<   r<   A   sR   $ #t .0!4!4< 	< M11~c'l333\"j00JJJJJJ)00[1ABBOO"3|#455   \"&7776{%(^  ME6NNF")2D2DU2K2KLLL    w//"4(('T 0    |++AACLAAAAAA.00O 	08C??C''(A'5'5    -E'5'5   
    +--w<&&w///Js    F2 F2 2
F?>F?c           	         t          | d          rt          j        |           }d|d<   |S t          |           j        t
          j        k    rBt          | t
          j                  r| 	                                S | 
                                S t          |           r| j        S t          |           j        t          j        k    r| j        S t          j        r+t          | t          j        j        j                  r| j        S t          j        r.t          | t          j                  r|                                 S t          j        r!t          | t          j                  r| j        S t          | t,          j        j                  rt3          |           S | t4          u rddiS t          j        rt          | t          j                  rrddlm} 	 |                    t          |                     }d||                                 d	S # t@          $ r$ tA          d
|  dt          |            d          w xY wt          j        rt          | t          j!        j"                  rt          j#        |           }g }t          j$        %                    | d          D ]G}|&                    |j'        j        |(                                	                                f           HdtS          |          |dS t          | tT          j+                  r| j        S t          | tX                    rd| -                    d          dS t]          d
|  dt          |            d          )zSerializes any object to a JSON-serializable structure.

    Args:
        obj: the object to serialize

    Returns:
        JSON-serializable structure representing `obj`.

    Raises:
        TypeError: if `obj` cannot be serialized.
    
get_configTrT   r   rS   r   rH   rG   )r   rJ   rK   zUnable to serialize z% to JSON, because the TypeSpec class z has not been registered.rP   rL   )r   rM   rN   rV   rW   )r   r1   z to JSON. Unrecognized type .)/hasattrr   serialize_keras_objecttyper    npr   r   ndarraytolistitemcallabler   r   compatv1	Dimensionr1   r
   r   DTypenamecollectionsabcMappingr5   ra   rG   rX   rI   get_name
_serializerc   __internal__rL   type_spec_from_valuer_   flattenr[   rO   numpyr   enumEnumbytesr>   	TypeError)r   rK   rI   type_spec_namerM   rN   rd   s          r   r   r      sV    sL!! "9#>>
26
./ Cyyr{**c2:&& 	::<<88:: }} | CyyT]**|	| 
3	(>?? y	| 
377 {{}}	| 
311 x#{.// Cyy
hn--
 
| 
344 BBBBBB	/88cCCN(+!nn..  
  	 	 	>s > >c> > >  	
 
| 	

3(GHH 	
&s++goocToBB 	I 	IFNNFL-v||~~/D/D/F/FGHHHH+!$''
 
 	
 #ty!! y#u I)CJJw4G4GHHH
LsLLS		LLL  s   9H .H=)NN)FNN)r"   ru   r~   rC   r:   r}   rk   keras.src.legacy.savingr   keras.src.savingr   keras.src.utils.module_utilsr   r   r   JSONEncoderr   r   r>   rE   r<   r   r-   r   r   <module>r      s   B B               1 1 1 1 1 1 . . . . . . 9 9 9 9 9 9- 2 2 2 2 2d 2 2 2  ? ? ?
 6:     AEA A A AHW W W W Wr   