o
    "j                     @   st   d dl Z d dlZd dlZd dlZdd Zdd Zdd Zedkr8e Zej	Z	ej
Z
ejZejZee	e
ee dS dS )	    Nc                  C   sZ   t jdd} | jdtdd | jdtdd | jdtd	d | jd
tddd |  }|S )Nz#prim ops Code Generator Args Parser)descriptionz--ops_yaml_pathzpath to ops.yaml)typehelpz--ops_legacy_yaml_pathzpath to legacy_ops.yamlz--ops_compat_yaml_pathzpath to op_compat.yamlz--phi_ops_map_pathz./phi_ops_map.pyzpath to target phi_ops_map.py)r   defaultr   )argparseArgumentParseradd_argumentstr
parse_args)parserargs r   i/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/incubate/autograd/generate_op_map.pyParseArguments   s$   r   c                 C   s<   |   D ]}| | D ]}t| | | }|| | |< q
qd S )N)keysr	   )itemkeysubkeyvaluer   r   r   _trans_value_type/   s   r   c              
   C   s  i }i }| |fD ]}t dt j}t|d2}t|}	|	D ]"}
|
d }||v r/td| t ||
d d |
d d||< qW d	   n1 sKw   Y  t|dk}t|}|D ][}
|
d }|d
rt 	d|
dd}|d|d}}d|i||< n|}d|i||< dD ]}||
 v r|
| || |< qdD ]}||
 v rt|
|  |
| || |< qq]W d	   n1 sw   Y  t|d,}|d tj||dd |d |d tj||dd |d W d	   n1 sw   Y  qd	S )z
    Generate dictiorary and save to file phi_ops_map.py. The target file records gap
    of description between current op and standard ones.
    z
[(](.*)[)]rtopzThere already exists op r   r   output)r   r   N)z(.*)\((.*)\)        phi_name)ZinputsZoutputsattrs)ZscalarZ	int_arraywz	op_map =    )indent
z
op_info = )recompileSopenyamlZ	safe_load
ValueErrorfindallendswithmatchreplacegroupr   r   writejsondump)ops_yaml_pathops_legacy_yaml_pathops_compat_yaml_pathphi_ops_map_pathdctZmap_dctZop_pathpatternfopsr   r   Z
ops_compattmpr   Zop_nameelementr   r   r   generate_code6   s^   





r<   __main__)r   r0   r$   r(   r   r   r<   __name__r   r2   r3   r4   r5   r   r   r   r   <module>   s(   2