U
    rh                     @  s   U d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
Zddddd	d
dZeeZded< G dd deZG dd dedZdS )    )annotationsN)defaultdict)dedent)AnyClassVarstrr   ztuple[str, str])op_namenameexportreturnc                 C  sj   |t dd  p|  }tt|}| }|d dks>t|d dsPt|td|dd  fS )NZexport_r   z@staticmethod   z
def export
   )	lenlowerr   inspect	getsource
splitlinesAssertionError
startswithjoin)r   r	   r
   Zsnippet_nameZsource_codelines r   ?/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/base.pyprocess_snippet   s    r   z dict[str, list[tuple[str, str]]]Snippetsc                      s:   e Zd ZU eeZded< ddddd fdd	Z  ZS )
	_Exporterz*ClassVar[dict[str, list[tuple[str, str]]]]exportsr   ztuple[type[Any], ...]zdict[str, Any]None)r	   basesdctr   c                   sv   |  D ]X\}}|drt|ts,tdt| |}t| t||| t	j
jdd |  qt ||| d S )Nr
   z-Only staticmethods could be named as export.*r   )seed)itemsr   
isinstancestaticmethod
ValueErrorgetattrr   appendr   nprandomr!   super__init__)clsr	   r   r    kvr
   	__class__r   r   r+      s    


z_Exporter.__init__)	__name__
__module____qualname__r   listr   __annotations__r+   __classcell__r   r   r/   r   r      s   
r   c                   @  s   e Zd ZdS )BaseN)r1   r2   r3   r   r   r   r   r7   .   s   r7   )	metaclass)
__future__r   r   collectionsr   textwrapr   typingr   r   Znumpyr(   r   r4   r   r5   typer   r7   r   r   r   r   <module>   s    
