
    2Vh                     l    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
 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 )Nz3The 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     M/home/dcms/DCMS/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>3   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>5   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_spec)   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   $   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   B   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                        r| }|S t        |       }t        j                  |j                  |j
                  |j                        }|S )N)r,   r@   )r
   tf
TensorSpecr   r+   r,   r@   )rE   tensor_specrF   s      r   make_tf_tensor_specrK   Y   sV    !R]]# 	 %Q'
mmJ$4$4:??
 r   Nc                     t        j                  | j                        }t              t	        fd|D              }t        j                  || j                        S )Nc              3   *   K   | ]
  }||n  y wr!   r.   )r%   sreplace_none_numbers     r   r'   z)convert_spec_to_tensor.<locals>.<genexpr>h   s       
<=A$77
s   )r   rB   r+   r#   r4   r   onesr,   )specrO   r+   s    ` r   convert_spec_to_tensorrR   d   sW    %%djj1E&!"56 
AF
 
 88E4::&&r   r!   )	keras.srcr   r   r   r   r   keras.src.utils.module_utilsr   rH   r   r   r   rK   rR   r.   r   r   <module>rU      s1         96G<.'r   