o
    i e
                     @   s@   d Z ddlmZ ddlmZ ddlmZ ddlmZ dd ZdS )	z%Tracing utilities used by SavedModel.    )saveable_compat)tensor_callable)def_function)functionc                    s   t  jjttjr}ntj fdd}|	 }ttjr/}||fS tj fdd}|	|j
}||fS )zTraces `Trackable` serialize- and restore-from-tensors functions.

  Args:
    obj: A `Trackable` object.

  Returns:
    A concrete Function.
  c                     sN    } t dd |  D rtdt d r% fdd|  D S | S )Nc                 s   s    | ]	}t |tjV  qd S N)
isinstancer   Callable).0v r   Z/var/www/myenv/lib/python3.10/site-packages/tensorflow/python/saved_model/tracing_utils.py	<genexpr>+   s    z:trace_save_and_restore.<locals>.save_fn.<locals>.<genexpr>z0Unable to export SavedModel with object of type zx because it returns a Callable in `_serialize_to_tensors`. If you need this functionality please file a feature request.c                    s   i | ]\}}  | |qS r   r   r	   keyvaluelegacy_namer   r   
<dictcomp>4   s    z;trace_save_and_restore.<locals>.save_fn.<locals>.<dictcomp>)anyvaluesNotImplementedErrortypeitems)tensor_dict)r   objobj_save_fnr   r   save_fn(   s   
z'trace_save_and_restore.<locals>.save_fnc                    s&    r fdd|   D } |  d S )Nc                    s"   i | ]\}}|t  d  |qS r   )lenr   r   r   r   r   A   s    z>trace_save_and_restore.<locals>.restore_fn.<locals>.<dictcomp>)r   )restored_tensors)r   obj_restore_fnr   r   
restore_fn=   s
   
z*trace_save_and_restore.<locals>.restore_fn)r   get_saveable_name_serialize_to_tensors_restore_from_tensorsr   defunConcreteFunctionr   r   get_concrete_functionstructured_outputs)r   concrete_saver   concrete_restorer    r   )r   r   r   r   r   trace_save_and_restore   s"   
	r*   N)	__doc__tensorflow.python.checkpointr   r   tensorflow.python.eagerr   r   r$   r*   r   r   r   r   <module>   s   