o
    qoi                     @   s  d Z ddlmZ ddlmZ ddlmZ ddl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dl
mZ ddlmZ ddlZddlZddlZdd Zdedee fddZejfddZG dd dejZG dd dejZedkre   dS dS )zTests for fiddle.extensions.tf.    )List)absltest)parameterizedN)graphviz)printing)formatting_utilities)legacy_codegen)py_val_to_cst_converter)special_value_codegen)serializationc                 C      | S N dtyper   r   R/home/ubuntu/.local/lib/python3.10/site-packages/fiddle/_src/extensions/tf_test.pyfoo#      r   codereturnc                 C   s   |    S r   )stripsplit)r   r   r   r   tokens'   s   r   c                 C   r   r   r   r   r   r   r   foo_with_default+   r   r   c                   @   s&   e Zd Zdd ZdedefddZdS )NoopImportManagerc                 C   s
   g | _ d S r   )callsselfr   r   r   __init__1   s   
zNoopImportManager.__init__module_namer   c                 C   s   | j | |S r   )r   append)r   r   r   r   r   add_by_name4   s   zNoopImportManager.add_by_nameN)__name__
__module____qualname__r   strr!   r   r   r   r   r   /   s    r   c                
       s   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
eeg ddfejdfeddfeg ddfeg ddfgdd Zdd Z  ZS )TfTestc                    s   t    tjj  d S r   )supersetUpfiddle
extensionstfenabler   	__class__r   r   r(   ;   s   
zTfTest.setUpc                 C   s8   t  }ttj|}| |jdg | t|d d S )N
tensorflowztensorflow.float32)r   r
   transform_py_valuer+   float32assertEqualr   repr)r   import_managerfloat32_valuer   r   r   test_special_value_codegen?   s   z!TfTest.test_special_value_codegenc                 C   sh   t jttjd}dt| }t	dkrd}d}nd}d}d| d	| d
}| 
t|t| d S )Nr   
__main__ r   z+from fiddle._src.extensions import tf_test
ztf_test.fooz
import fiddle as fdl
zBimport tensorflow as tf


def build_config():
  root = fdl.Config(z0)
  root.dtype = tf.bfloat16

  return root
    )fdlConfigr   r+   bfloat16joinr   codegen_dot_syntaxlinesr"   r2   r   )r   configr   tf_test_importfoo_nameexpectedr   r   r   test_codegenF   s   zTfTest.test_codegenc                 C   s,   t jttjd}t|}| d|j d S )Nr   ztf.bfloat16)	r:   r;   r   r+   r<   r   renderassertInsourcer   r@   resultr   r   r   test_graphviz]   s   
zTfTest.test_graphvizc                 C   s*   t jttjd}t|}| d| d S )Nr   zdtype = tf.bfloat16)r:   r;   r   r+   r<   r   as_str_flattenedr2   rH   r   r   r   test_str_printingb   s   
zTfTest.test_str_printingc                 C   s   |  tdd d S )N   1)r2   r   pretty_printr   r   r   r   &test_int_does_not_get_printed_as_dtypeg   s   z-TfTest.test_int_does_not_get_printed_as_dtypec                 C   s:   t jttjd}tj|_t|}d	 }| 
|| d S )Nr   z
dtype = tf\.float32 @ .*/tf_test.py:\d+:test_history_printing
  - previously: tf.float16 @ .*/tf_test.py:\d+:test_history_printing
)r:   r;   r   r+   float16r1   r   r   history_per_leaf_parameterr   assertRegex)r   r@   rI   rC   r   r   r   test_history_printingk   s   
zTfTest.test_history_printingc                 C   s$   t t}t|}| d| d S )Nz'dtype = <[unset; default: tf.bfloat16]>)r:   r;   r   r   rK   r2   rH   r   r   r   test_default_printingu   s   

zTfTest.test_default_printing)rM         zAtensorflow.constant([1, 2, 3], dtype=tensorflow.int32, shape=[3])ztensorflow.int32Nztensorflow.TensorShape(None)z!tensorflow.TensorShape([1, 2, 3]))rM   NrW   z$tensorflow.TensorShape([1, None, 3])c                 C   s:   t |}ttt|gg}| |j | d S r   )	r	   convert_py_val_to_cstcstModuleSimpleStatementLineExprr2   r   r   )r   valuerC   cst_expr
cst_moduler   r   r   test_py_val_to_cst_converterz   s   
	z#TfTest.test_py_val_to_cst_converterc                 C   s2   t tttj}t |}| |j	tj d S r   )
r   	dump_jsonr:   r;   r   r+   int32	load_jsonassertIsr   )r   serialized_cfgdeserialized_cfgr   r   r   test_serialization   s   
zTfTest.test_serialization)r"   r#   r$   r(   r6   rD   rJ   rL   rP   rT   rU   r   
parametersr+   constantrb   TensorShaper`   rg   __classcell__r   r   r-   r   r&   9   s(    

r&   r8   )!__doc__typingr   absl.testingr   r   r)   r:   r   r   fiddle._src.codegenr   r   r	   r
   fiddle._src.experimentalr   fiddle.extensions.tflibcstrY   r/   r+   r   r%   r   r<   r   ImportManagerApir   TestCaser&   r"   mainr   r   r   r   <module>   s.   
T