o
    ?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   l/home/www/facesmatcher.com/pyenv/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)Z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   )Zrestored_tensors)r   obj_restore_fnr   r   
restore_fn=   s
   
z*trace_save_and_restore.<locals>.restore_fn)r   Zget_saveable_nameZ_serialize_to_tensorsZ_restore_from_tensorsr   defunZConcreteFunctionr   r   Zget_concrete_functionZstructured_outputs)r   Zconcrete_saver   Zconcrete_restorer   r   )r   r   r   r   r   trace_save_and_restore   s"   
	r    N)	__doc__Ztensorflow.python.checkpointr   r   Ztensorflow.python.eagerr   r   r   r    r   r   r   r   <module>   s   