
    ij                     n    d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dlmZ d Z	d Z
d	 Zdd
ZddZy)    )backend)layers)models)ops)tree)
tensorflowc                    t        | t        j                        st        d|  dt	        |              | j
                  st        d      t        | t        j                        r't        j                  t        | j                        g}|S t        | t        j                        r&t        j                  t        | j                        }|S t        |       }|r| j                  st        d      |S )zGet input signature for model export.

    Args:
        model: A Keras Model instance.

    Returns:
        Input signature suitable for model export (always a tuple or list).
    z3The model must be a `keras.Model`. Received: model=z of the type zJThe model provided has not yet been built. It must be built before export.zSThe model provided has never called. It must be called at least once before export.)
isinstancer   Model	TypeErrortypebuilt
ValueError
Functionalr   map_structuremake_input_spec_inputs_struct
Sequentialinputs!_infer_input_signature_from_model_called)modelinput_signatures     r/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/export/export_utils.pyget_input_signaturer   	   s     eV\\*$g]4;-A
 	
 ;;
 	

 %**+ 0D0DE
  
E6,,	-,,_ellK  <EBemmA      c                      t         dd       }|sy  fd|j                         D cg c]
  } |       c}S c c}w )N_build_shapes_dictc                 <   t        | t              r*| j                         D ci c]  \  }}| |       c}}S t        | t              rMt	        d | D              r't        j                  d| dd  z   j                        S t        fd| D              S t        | t              rPt	        d | D              r(t        j                  d g| dd  z   j                        S | D cg c]
  } |       c}S t        dt        |        d|        c c}}w c c}w )	Nc              3   R   K   | ]  }t        |t        t        d       f       ! y wNr
   intr   .0ds     r   	<genexpr>zN_infer_input_signature_from_model.<locals>._make_input_spec.<locals>.<genexpr>>         G:a#tDz!23G   %'r!      )shapedtypec              3   .   K   | ]  } |        y wr!    )r%   v_make_input_specs     r   r'   zN_infer_input_signature_from_model.<locals>._make_input_spec.<locals>.<genexpr>B   s     @)!,@s   c              3   R   K   | ]  }t        |t        t        d       f       ! y wr!   r"   r$   s     r   r'   zN_infer_input_signature_from_model.<locals>._make_input_spec.<locals>.<genexpr>D   r(   r)   zUnsupported type z for )r
   dictitemstupleallr   	InputSpecinput_dtypelistr   r   )	structurekr/   r0   r   s      r   r0   z;_infer_input_signature_from_model.<locals>._make_input_spec8   s    i&7@7HItq!A'**II	5)GYGG''!IabM19J9J  @i@@@	4(GYGG''&9QR=08I8I  2;;A$Q';;#DO#4E)E  J <s   D'D)getattrvalues)r   shapes_dictvaluer0   s   `  @r   r   r   3   sB    %!5t<K. 2=1C1C1EFU#FFFs   =c                    t        | t        j                        r*| j                  | j                  t        d|        | }|S t        | t        j                        rhdt        j                  | j                        dd  z   }t        j                  | j                        }t        j                  ||| j                        }|S t        j                  |       r^dt        j                  | j                        dd  z   }t        j                  | j                        }t        j                  ||d       }|S t        d|  dt        |        d      )Nz6The `shape` and `dtype` must be provided. Received: x=r!   r*   )r,   r+   namezUnsupported x=z of the type (zR). Supported types are: `keras.InputSpec`, `keras.KerasTensor` and backend tensor.)r
   r   r6   r+   r,   r   r   KerasTensorstandardize_shapestandardize_dtyper@   	is_tensorr   r   )x
input_specr+   r,   s       r   r   r   R   s;   !V%%&77?aggoHL  
  
Aw**	+'33AGG<QR@@))!''2%%EQVVL
  
		1	'33AGG<QR@@))!''2%%ETJ
 	 QC~d1gY 7I I
 	
r   c                    t        | t        j                        ro| }|rit        |j                        dkD  rQt        d t        |j                        D              }t        j                  ||j                  |j                        }|S t        |       }|j                  }|r+|)t        |      dkD  rt        d t        |      D              }t        j                  ||j                  |j                        }|S )zCreate a TensorSpec from various input types.

    Args:
        x: Input to convert (tf.TensorSpec, KerasTensor, or backend tensor).
        dynamic_batch: If True, set the batch dimension to None.

    Returns:
        A tf.TensorSpec instance.
    r   c              3   4   K   | ]  \  }}|d k(  rdn|  ywr   Nr.   r%   iss      r   r'   z&make_tf_tensor_spec.<locals>.<genexpr>w   s$      *.!QQA%   )r,   r@   c              3   4   K   | ]  \  }}|d k(  rdn|  ywrI   r.   rJ   s      r   r'   z&make_tf_tensor_spec.<locals>.<genexpr>   s     MDAq!q&$a/MrM   )
r
   tf
TensorSpeclenr+   r4   	enumerater,   r@   r   )rE   dynamic_batchtensor_specr+   rF   s        r   make_tf_tensor_specrU   i   s     !R]]#S!2!23a7 2;K<M<M2N E --[..[5E5EK  %Q'
  U.3u:>MIe<LMMEmm))

 r   Nc                     t        j                  | j                        }t              t	        fd|D              }t        j                  || j                        S )Nc              3   *   K   | ]
  }||n  y wr!   r.   )r%   rL   replace_none_numbers     r   r'   z)convert_spec_to_tensor.<locals>.<genexpr>   s       
<=A$77
s   )r   rB   r+   r#   r4   r   onesr,   )specrX   r+   s    ` r   convert_spec_to_tensorr[      sW    %%djj1E&!"56 
AF
 
 88E4::&&r   )Fr!   )	keras.srcr   r   r   r   r   keras.src.utils.module_utilsr   rO   r   r   r   rU   r[   r.   r   r   <module>r^      s3         9'TG>.@'r   