
     Ti                        S r SSKJr  SSKJrJrJrJr  SSKJ	r	  \(       a  SSKr
\\\\\   4      r " S S\	R                   5      rg)z,Convenience methods for constructing the IR.    )annotations)TYPE_CHECKINGAnyOptionalSequence)tapeNc                  :   ^  \ rS rSrSrSS jrSU 4S jjrSrU =r$ )Builder   a  An extension of the tape that provides a more convenient API for constructing the IR.

Example:
    >>> from onnxscript import ir
    >>> from onnxscript.ir import _tape
    >>> op = _tape.Builder()
    >>> input = ir.Value(name="input", type=ir.TensorType(ir.DataType.FLOAT), shape=ir.Shape((1, 2)))
    >>> relu_val = op.Relu(input, _name="relu_node", _domain="", _version=18, _outputs=["relu_out"])

Note: When passing `_name`, ensure it is unique to avoid duplicate node names.
c                   ^ ^ UU 4S j$ )Nc                 (   > TR                  TX5      $ )N)
_make_node)argskwargsop_typeselfs     R/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxscript/ir/_tape.py<lambda>%Builder.__getattr__.<locals>.<lambda>!   s    tw'M     )r   r   s   ``r   __getattr__Builder.__getattr__    s	    MMr   c           
       > UR                  SS5      nUR                  SS 5      nUR                  SS5      nUR                  SS 5      n[        U[        5      (       a  [        U5      nO[        U[        5      (       d   eUnUS:X  a3  [
        TU ]  UUUUUUS9n	[        U[        5      (       a
  US   U	l        U	$ [
        TU ]!  UUUUUUUS	9n
[        U[        5      (       a  [        X5       H  u  pXyl        M     U
$ )
N_domain _version_outputs   _name)inputs
attributesdomainversionnamer   )r!   r"   r#   r$   r%   num_outputs)
pop
isinstancer   lenintsuperopr%   op_multi_outzip)r   r   r!   r   r#   r$   outputsr%   r&   valuevalues	__class__s              r   r   Builder._make_node#   s   Ir***Z.**Z+zz'4(gx((g,Kgs++++!K!GJ!  E '8,,$QZ
L%# & 
 gx(("63!
  4r   r   )r   strreturnr   )r   r4   r!   zSequence[ir.Value]r   zdict[str, Any])	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classcell__)r2   s   @r   r
   r
      s    
N$ $r   r
   )r:   
__future__r   typingr   r   r   r   onnx_irr   irsettupler4   r*   
UsedOpsetsTaper
   r   r   r   <module>rE      sF    3 " 9 9  sHSM)*+
4dii 4r   