
     TiD                        S SK Jr  S SKrS SKrS SKJrJrJr  S SKrS SK	r
S SKJrJr  \R                  " S5      r\R                   r " S S\
R"                  5      rg)    )annotationsN)AnySequenceUnion)type_annotationvalues
onnxscriptc                     ^  \ rS rSrSrSSU 4S jjjr\SS j5       r\SS j5       rSS jr	SS jr
SS jrSS	 jrSS
 jrSS jrSrU =r$ )
IRFunction   z Represents a function in the IR.c                |   > [         R                  " / / / US9n[        TU ]  X!U/ S9  / U l        0 U l        0 U l        g )N)inputsoutputsnodesname)graph
attributes)irGraphsuper__init__ordered_inputs_and_attrsnested_functionsouter_scope_variables)selfr   domainr   	__class__s       ]/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxscript/_internal/irbuilder.pyr   IRFunction.__init__   sG    BbtDUrBHJ% 8: 68"    c                p    U  VVs/ s H!  oR                     H  o"R                  PM     M#     snn$ s  snnf )z;Returns the list of variables assigned to by this function.)r   r   )r   nvs      r   assigned_namesIRFunction.assigned_names)   s(     !%81iii888s   (2c                    U R                    Vs/ s H&  n[        U[        R                  5      (       d  M$  UPM(     sn$ s  snf N)r   
isinstancer   Attr)r   attrs     r   attrsIRFunction.attrs.   s2    !%!>!>\!>*TSUSZSZB[!>\\\s   #??c           	     0   [        U 5      nSU 3Ul        U R                  U5        UR                  nUR                  nX0R
                  ;  a  X@R
                  U'   g U R
                  U   nXT:w  a&  [        R                  " SU< SU SU S3[        SS9  g g )Nr"   zVersion conflict: domain: z, versions z and z used.   )category
stacklevel)	lenr   appendr   versionopset_importswarningswarnUserWarning)r   nodecountr   r3   existing_versions         r   append_nodeIRFunction.append_node2   s    D	wK	D,,+++)0v&#11&9*0
 ;  01wivG( 	 +r    c                R   U R                   R                  U5        [        U[        R                  5      (       a  U R
                  R                  U5        g [        U[        R                  5      (       d  [        S[        U5       35      eU R                  R                  U5        g )Nz"Expected ir.Value or ir.Attr, got )r   r2   r(   r   Valuer   r)   	TypeErrortyper   add)r   	parameters     r   append_parameterIRFunction.append_parameterD   st    %%,,Y7i**KKy)i11"DT)_DU VWWOO	*r    c                4    XR                   UR                  '   g r'   )r   r   )r   funs     r   add_nested_functionIRFunction.add_nested_functionM   s    *-chh'r    c                B   ^^^ 0 mSU4S jjmSUU4S jjmT" U 5        T$ )Nc                   > [         R                  R                  U R                  5       HH  nUR                  R                  SS 5      n[        U[        R                  5      (       d  M@  T" U5        MJ     g )Ncallee)	r   	traversalRecursiveGraphIteratorr   metagetr(   r   OnnxFunction)function_irr8   rK   rA   s      r   visit.IRFunction.get_called_functions.<locals>.visitS   sQ    ;;K<M<MNx6ff&9&9::K Or    c                j   > U R                   T;   a  g U TU R                   '   T" U R                  5        g r'   )r   rQ   )fcalled_functionsrR   s    r   rA   ,IRFunction.get_called_functions.<locals>.addY   s.    vv))'(QVV$!-- r    )rQ   r   )rU   zvalues.OnnxFunction )r   rA   rV   rR   s    @@@r   get_called_functionsIRFunction.get_called_functionsP   s'    ;=	 	! 	! 	dr    c                T    [         R                  R                  U R                  5      $ )z0Converts this instance into a `onnx.GraphProto`.)r   serdeserialize_graphr   r   s    r   to_graph_protoIRFunction.to_graph_protoc   s    xx''

33r    c                @    [         R                  R                  U 5      $ )z3Converts this instance into a `onnx.FunctionProto`.)r   r\   serialize_functionr^   s    r   to_function_protoIRFunction.to_function_protog   s    xx**400r    )r   r   r   ) )r   strr   rf   returnNone)rg   zSequence[str])rg   zSequence[ir.Attr])r8   zir.Noderg   rh   )rB   zir.Value | ir.Attrrg   rh   )rF   r   rg   rh   )rg   zdict[str, values.OnnxFunction])rg   zonnx.GraphProto)rg   zonnx.FunctionProto)__name__
__module____qualname____firstlineno____doc__r   propertyr$   r+   r;   rC   rG   rY   r_   rc   __static_attributes____classcell__)r   s   @r   r   r      s]    *8 8& 9 9 ] ]$+. &41 1r    r   )
__future__r   loggingr5   typingr   r   r   onnxonnx_irr   onnxscript._internalr   r   	getLoggerloggerTypeAnnotationValueFunctionr   rX   r    r   <module>r{      sM    #   ' '   8			<	(%99 V1 V1r    