
     Ti"R                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
JrJrJrJrJr  S SKrS SKrS SKJr  \R&                  " \5      r " S S5      r\" 5       r\\R2                  R4                  \\R2                  R8                  \\R2                  R<                  \\R2                  R8                  \R@                  \R2                  RB                  \RD                  \R2                  RB                  \RF                  \R2                  RH                  \RJ                  \R2                  RH                  0r&\\R2                  RN                  \\R2                  RP                  \\R2                  RR                  \\R2                  RP                  \R@                  \R2                  RT                  \RD                  \R2                  RT                  \RF                  \R2                  RV                  \RJ                  \R2                  RV                  0r,\RZ                   V s1 s H  n \R]                  U 5      iM     sn \RZ                   V s1 s H#  n \R_                  \R]                  U 5      5      iM%     sn -  \RZ                   V s1 s H#  n \Ra                  \R]                  U 5      5      iM%     sn -  r1\	r2\Rf                  " SS9 " S	 S
5      5       r4\Rf                  " SS9 " S S5      5       r5\Rf                  " SS9 " S S5      5       r6    SS jr7      SS jr8SS jr9SS jr:SS jr;    SS jr<\Rf                   " S S5      5       r=gs  sn f s  sn f s  sn f )    )annotationsN)AnyIteratorMappingOptionalSequenceTypeVarUnion)irc                      \ rS rSrS rSrg)_Empty   c                    g)N_EMPTY_DEFAULT selfs    U/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxscript/ir/_schemas.py__repr___Empty.__repr__   s        r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s     r   r   T)frozenc                      \ rS rSr% SrS\S'   S\S'   SrS\S'   SS	 jrSS
 jr\	SSS jj5       r
\	SSS jj5       rSrg)TypeConstraintParamH   zType constraint for a parameter.

Attributes:
    name: Name of the parameter. E.g. "TFloat"
    allowed_types: Allowed types for the parameter.
strnameset[ir.TypeProtocol]allowed_types descriptionc                V    [        U R                  [        U R                  5      45      $ N)hashr"   tupler$   r   s    r   __hash__TypeConstraintParam.__hash__U   s!    TYYd&8&8 9:;;r   c                h    SR                  S U R                   5       5      nU R                   SU 3$ )Nz | c              3  8   #    U  H  n[        U5      v   M     g 7fr(   r!   ).0ts     r   	<genexpr>.TypeConstraintParam.__str__.<locals>.<genexpr>Y   s     &J7I!s1vv7I   =)joinr$   r"   )r   allowed_types_strs     r   __str__TypeConstraintParam.__str__X   s4    !JJ&Jt7I7I&JJ))A/011r   c           	         U " U[         R                   Vs1 s H  n[         R                  " U5      iM     snU5      $ s  snf r(   )r   DataType
TensorType)clsr"   r&   dtypes       r   
any_tensorTypeConstraintParam.any_tensor\   s0    4BKKHK5"--.KH+VVHs    >
c                    U " U[         U5      $ r(   )_ALL_VALUE_TYPES)r=   r"   r&   s      r   	any_valueTypeConstraintParam.any_value`   s    4);77r   r   N)returnintrE   r!   )r%   )r"   r!   r&   r!   rE   r   )r   r   r   r   __doc____annotations__r&   r+   r8   classmethodr?   rC   r   r   r   r   r   r   H   sR     I''K<2 W W 8 8r   r   c                      \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
rS\S'   SrS\S'   \r	S\S'   SS jr
SS jrSrg)	Parametere   z"A formal parameter of an operator.r!   r"   r   type_constraintboolrequiredvariadicThomogeneous   rF   	min_arityr   defaultc                    U R                   R                  nU R                  5       (       a  U R                   SU SU R                   3$ U R                   SU 3$ Nz: z = )rN   r"   has_defaultrU   r   type_strs     r   r8   Parameter.__str__r   sV    '',,ii[8*C~>>))Bxj))r   c                &    U R                   [        L$ r(   )rU   r   r   s    r   rX   Parameter.has_defaultx   s    ||>11r   r   NrG   rE   rO   )r   r   r   r   rH   rI   rR   rT   r   rU   r8   rX   r   r   r   r   rL   rL   e   sB    ,
I((NNKIs!GS!*2r   rL   c                  Z    \ rS rSr% SrS\S'   S\S'   S\S'   S	rS
\S'   SS jrSS jrSr	g	)AttributeParameter|   zHA parameter in the function signature that represents an ONNX attribute.r!   r"   ir.AttributeTypetyperO   rP   Nzir.Attr | NonerU   c                    U R                   R                  nU R                  5       (       a  U R                   SU SU R                   3$ U R                   SU 3$ rW   )rc   r"   rX   rU   rY   s     r   r8   AttributeParameter.__str__   sR    99>>ii[8*C~>>))Bxj))r   c                    U R                   S L$ r(   )rU   r   s    r   rX   AttributeParameter.has_default   s    ||4''r   r   rG   r^   )
r   r   r   r   rH   rI   rU   r8   rX   r   r   r   r   r`   r`   |   s)    R
I
N"G^"*(r   r`   c                   U R                  S5      nUR                  S5      n[        R                  US   R	                  5          n[        R
                  " [        R                  R                  5      n[        USS 5       Hm  nUS:X  a  [        R
                  " U5      nM!  US:X  a  [        R                  " U5      nM?  US:X  a  [        R                  " U5      nM]  [        SU S	U  S
35      e   U$ )zConverter a type_str from ONNX OpSchema to ir.TypeProtocol.

A type str has the form of "tensor(float)" or composite type like "seq(tensor(float))".
)(NtensorseqoptionalzUnknown type part: 'z' in type '')rstripsplitr   r;   upperr<   	UNDEFINEDreversedSequenceTypeOptionalType
ValueError)rZ   striped
type_partsr>   type_	type_parts         r   _get_type_from_strr|      s     ooc"Gs#J KK
2,,./E  ]]2;;+@+@AE j"o.	 MM%(E%OOE*E*$OOE*E3I;k(STUVV / Lr   c           	        U R                   U;   a  XR                      nO([        U R                  [        U R                   5      1S9n[	        U R                  UU R
                  [        R                  R                  R                  R                  :g  U R
                  [        R                  R                  R                  R                  :H  U R                  U R                  S9$ )z;Convert a formal parameter from ONNX OpSchema to Parameter.r"   r$   )r"   rN   rP   rQ   rR   rT   )rZ   r   r"   r|   rL   optiononnxdefsOpSchemaFormalParameterOptionr   Variadicis_homogeneousrT   )paramtype_constraintsrN   s      r   _convert_formal_parameterr      s    
 ~~))*>>: .-enn=>
 ZZ'!3!3!I!I!R!RR!3!3!I!I!R!RR((// r   c                6   [         R                  " U 5      nU[        L a$  [        S5      [         R                  " U 5      ;   a  gU[
        L a  g[        [        S5      (       a7  U[        R                  L a$  [        S5      [         R                  " U 5      ;   a  gg)z'Returns whether a type_ is an Optional.NT	UnionTypeF)	typing
get_originr
   rc   get_argsr   hasattrtypesr   )rz   origin_types     r   _is_optionalr      sr    ##E*KeT
fooe.D Dh{##5??*J&//%00 r   c                0    U [         ;   a	  [         U    $ [        R                  " U 5      nUc  [        R                  R
                  $ U[        R                  R                  [        [        R                  [        [        R                  [        4;   a,  [        R                  " U 5      S   nU[        ;   a	  [        U   $ [        R                  R
                  $ ! [         a1    [         R#                  SU SS9   [        R                  R
                  $ f = f)z5Obtain the type of the attribute from a Python class.r   zTypeError when checking %s.T)exc_info)_PY_TYPE_TO_ATTR_TYPEr   r   r   AttributeTypers   collectionsabcr   ListlistTupler*   r   _LIST_TYPE_TO_ATTR_TYPE	TypeErrorloggerwarning)rz   r   
inner_types      r   get_attr_typer      s    L))(//''.##---OO$$KKLL
 
  /2J44.z:: %%%  L4edK%%%Ls   C 2C A7C DDc                   [        U [        5      (       a  U R                  $ [        U 5      (       aG  [        R
                  " U 5      nU H+  nU[        S5      L a  M  [        U5      nU(       a  Us  $ Ss  $    [        R                  " U 5      n[        U[        5      (       aG  [        U[        5      (       a2  [        R
                  " U 5      n[        US   5      nU(       a  SU 3$ S$ g)zReturns the name of the type constraint for a given type annotation.

Args:
    type_: A Python type.

Returns:
    The name of the type constraint if it is a TypeVar.
    - Prefixes the name with "Sequence_" if the type annotation is a Sequence[].
Nr   	Sequence_)
isinstancer	   r   r   r   r   rc   _get_type_constraint_namer   
issubclassr   )rz   subtypessubtypetype_param_namer   s        r   r   r      s     %!!~~E??5)G$t*$7@O&5??4?	  
 ##E*K+t$$K)J)J??5)3HQK@0??+,ITIr   c                   U [         R                  R                  L a5  [        R                   Vs1 s H  n[        R                  " U5      iM     sn$ [        U [        5      (       au  [        5       nU R                  =n(       a%  U H  nUR                  [        U5      5        M     U$ U R                  nUc  [        nU$ UR                  [        U5      5        U$ [        U S5      (       a5  [        R                  " [        R                  " U R                  5      5      1$ [        U 5      (       aU  [        5       n[         R"                  " U 5      nU H-  nU[%        S5      L a  M  UR                  [        U5      5        M/     U$ [         R&                  " U 5      nU[(        L aZ  [        5       n[         R"                  " U 5      nU H2  nU[%        S5      Ld   S5       eUR                  [        U5      5        M4     U$ [        U[$        5      (       a^  [+        U[,        5      (       aI  [         R"                  " U 5      n[        US   5       V	s1 s H  n	[        R.                  " U	5      iM     sn	$ [        $ s  snf s  sn	f )z0Obtain the allowed types from a type annotation.Nr>   zIUnion should not contain None type because it is handled by _is_optional.r   )
onnxscript
onnx_typesr<   r   r;   r   r	   set__constraints__update'_get_allowed_types_from_type_annotation	__bound__rB   r   r>   r   r   r   rc   r   r
   r   r   ru   )
rz   r>   r$   constraints
constraintboundr   r   r   r1   s
             r   r   r     s    
%%00024++>+e$+>> %!!///;/)
$$%LZ%XY *  OOE} 0  $$%LU%STugbkk%++6788E??5)G$t*$  !H!QR  
 ##E*Ke??5)G$t*, [,   !H!QR	  
 +t$$K)J)J??5)(OPXYZP[(\
(\1BOOA(\
 	

 _ ?T
s    I: I?c                      \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   \R                  " SSS9rS\S'   Sr	S\S'   S r
SS jrSS jrSS jrS S jr\S!S j5       r\S"S j5       r\S#S j5       r\   S$         S%S jj5       rSrg)&OpSignatureiD  a  Schema for an operator.

Attributes:
    domain: Domain of the operator. E.g. "".
    name: Name of the operator. E.g. "Add".
    overload: Overload name of the operator.
    params: Input parameters. When the op is an ONNX function definition,
      the order is according to the function signature. This mean we can
      interleave ONNX inputs and ONNX attributes in the list.
    outputs: Output parameters.
r!   domainr"   overloadz(Sequence[Parameter | AttributeParameter]paramsSequence[Parameter]outputsF)initreprz,Mapping[str, Parameter | AttributeParameter]
params_maprS   rF   since_versionc                f    U R                    Vs0 s H  oR                  U_M     snU l        g s  snf r(   )r   r"   r   r   r   s     r   __post_init__OpSignature.__post_init__\  s&    :>++F+::u,+FFs   .c                     U R                   U   $ r(   r   r   r"   s     r   getOpSignature.get_  s    t$$r   c                    XR                   ;   $ r(   r   r   s     r   __contains__OpSignature.__contains__b  s    &&r   c                ,    [        U R                  5      $ r(   )iterr   r   s    r   __iter__OpSignature.__iter__e  s    DKK  r   c           
        U R                   =(       d    SnU R                  (       a  SU R                   3OSnSR                  S U R                   5       5      nSR                  S U R                   5       5      n0 nU R                   H<  n[        U[        5      (       d  M  UR                  XVR                  R                  '   M>     U R                   H%  nUR                  XVR                  R                  '   M'     SR                  S UR                  5        5       5      nU SU R                   U SU S	U S
U 3
$ )Nz''z::r%   z, c              3  8   #    U  H  n[        U5      v   M     g 7fr(   r/   r0   r   s     r   r2   &OpSignature.__str__.<locals>.<genexpr>l  s     ?;%3u::;r4   c              3  `   #    U  H$  n[        UR                  R                  5      v   M&     g 7fr(   )r!   rN   r"   r   s     r   r2   r   m  s$     VC 5 5 : :;;s   ,.c              3  8   #    U  H  n[        U5      v   M     g 7fr(   r/   )r0   rN   s     r   r2   r   t  s      )
8Q_C  8Qr4   rj   z) -> (z) where )
r   r   r6   r   r   r   rL   rN   r"   values)r   r   r   r   r   r   r   type_constraints_strs           r   r8   OpSignature.__str__h  s   $+/==R'b?4;;??))VVV[[E%++?D?T?T !6!6!;!;< ! \\E;@;P;P22778 "#yy )
8H8O8O8Q)
  
 DII;xj&yQePfggr   c                t    U R                    Vs/ s H  n[        U[        5      (       d  M  UPM     sn$ s  snf )zReturns the input parameters.)r   r   rL   r   s     r   inputsOpSignature.inputsy  s)     $(;;O;%*UI2N;OOO   55c                t    U R                    Vs/ s H  n[        U[        5      (       d  M  UPM     sn$ s  snf )z!Returns the attribute parameters.)r   r   r`   r   s     r   
attributesOpSignature.attributes~  s*     $(;;X;%*UDV2W;XXXr   c                Z   UR                    VVs0 s HQ  nUR                  [        UR                  UR                   Vs1 s H  n[	        U5      iM     snUR
                  S9_MS     nnnUR                   Vs/ s H  n[        XT5      PM     nnUR                  R                  5        H  nUR                  b)  [        R                  R                  UR                  5      OSnUb  UR                  Ul        UR                  [!        UR                  [        R"                  " UR$                  5      UR&                  US95        M     UR(                   Vs/ s H  n[        XT5      PM     nnU " UR*                  UR                  SUUUR,                  S9$ s  snf s  snnf s  snf s  snf )z-Produce an OpSignature from an ONNX OpSchema.)r"   r$   r&   Nr"   rc   rP   rU   r%   r   r"   r   r   r   r   )r   type_param_strr   allowed_type_strsr|   r&   r   r   r   r   default_valuer   serdedeserialize_attributer"   appendr`   r   rc   rP   r   r   r   )	r=   	op_schemar   rZ   r   r   r   default_attrr   s	            r   from_op_schemaOpSignature.from_op_schema  s    (88	
 9
 %%':..AKA]A]A]X&x0A] '22(  9 	 	
 MVL\L\
L\5%e>L\ 	 
 ))002E &&2 ..u/B/BC 
 '$)JJ!MM"))%**5"^^(	 3& MVL]L]
L]5%e>L] 	 
 ###11
 	
E	

,
s"   /FFF9F#F(FNc                L   [         R                  " U5      n[        R                  " U5      n/ n0 n	UR                  R                  5        GH  n
U
R                  U;  a  [        R                  SU
R                  U5        [        R                  SU
R                   35      nXU
R                  '   UR                  [        U
R                  UU
R                  [         R                  R                  L SSU
R                  [         R                  R                  La  U
R                  O[        S95        M  XzR                     n[!        U5      =n["        R$                  R&                  :w  a  U
R                  [         R                  R                  La,  ["        R(                  " U
R                  XR                  5      nOSnUR                  [+        U
R                  UU
R                  [         R                  R                  L US95        GM  [-        U5      nUc  SU
R                   3nX;   a  X   nO[        U[/        U5      S9nXU'   UR                  [        U
R                  UU
R                  [         R                  R                  L SSU
R                  [         R                  R                  La  U
R                  O[        S95        GM     UR1                  S	5      n/ nUc  O[        R2                  " U5      [4        L a  [        R6                  " U5      nOU/n[9        U5       HZ  u  nn[-        U5      =nU	;   a  U	U   nOS
U 3n[        U[/        U5      S9nXU'   UR                  [        UUSSS[        S95        M\     U " UU=(       d    UR:                  UUUUS9$ )z=Produce an OpSignature from a function using type annotation.zDMissing annotation for parameter '%s' from %s. Treating as an Input.T_FT)r"   rN   rP   rQ   rR   rU   Nr   r~   rE   TReturnr   )inspect	signaturer   get_type_hints
parametersr   r"   r   debugr   rC   r   rL   rU   emptyr   r   r   r   rs   Attrr`   r   r   r   r   r*   r   	enumerater   )r=   funcr   r"   r   r   py_signature
type_hintsr   r   r   rN   rz   	attr_typerU   type_constraint_namereturn_typer   return_typesireturn_type_ireturn_param_names                         r   from_functionOpSignature.from_function  sH    ((. **40
79;=!,,335Ezz+ZJJ 
 #6"?"?"UZZL@Q"R/>,"ZZ(7!&'2C2C2I2I!I!&$( ==0A0A0G0GG !&+
 #::.!.u!55I":J:J:T:TT}}G,=,=,C,CC"$''%**i"O"&MM*!&!*%*]]g6G6G6M6M%M$+	 ,EU+K(+313EJJ</@, ,?*:*P +>!5*QRW*X+ BQ)=>MM!!&,;%*]]g6G6G6M6M%M%*(,$}}G4E4E4K4KK %*MM!/
y 6T !nnX.  -6%{; +}$-l$; =)B=)QQ%%& '77H&IO*1!%&9.&Mm&\'O ;J%67.(7!%!&$( .	 %<. &'
 	
r   r   )r"   r!   rE   zParameter | AttributeParameter)r"   r!   rE   rO   )rE   z(Iterator[Parameter | AttributeParameter]rG   )rE   r   )rE   zSequence[AttributeParameter])r   zonnx.defs.OpSchemarE   r   )Nr%   rS   )
r   r!   r"   
str | Noner   r!   r   rF   rE   r   )r   r   r   r   rH   rI   dataclassesfieldr   r   r   r   r   r   r8   propertyr   r   rJ   r   r  r   r   r   r   r   r   D  s   
 K
IM44  ?J?P?P@J<  M3G%'!h" P P Y Y .
 .
` 
  H
 H
 	H

 H
 H
 
H
 H
r   r   )rZ   r!   rE   z1ir.TensorType | ir.SequenceType | ir.OptionalType)r   z"onnx.defs.OpSchema.FormalParameterr   z!Mapping[str, TypeConstraintParam]rE   rL   )rz   rc   rE   rO   )rz   rc   rE   rb   )rz   TypeAnnotationValuerE   r  )rz   r  rE   r#   )>
__future__r   collections.abcr   r  r   loggingr   r   r   r   r   r   r   r	   r
   r   r   r   	getLoggerr   r   r   r   floatr   FLOATrF   INTr!   STRINGrO   TensorTENSORTensorProtocolGraphGRAPHGraphProtocolr   FLOATSINTSSTRINGSTENSORSGRAPHSr   r;   r<   ru   rv   rB   r  	dataclassr   rL   r`   r|   r   r   r   r   r   r   )r>   s   0r   <module>r     s   #       M M M   			8	$   
  
2!!							 	 "



IIr&&r''..HHb$$b&&,,	  
2""							!	!"



IIr''r''//HHb%%b&&--	  (*{{3{eR]]5{3:<++F+rr}}U+,+FG:<++F+rr}}U+,+FG    d#8 8 $88 d#2 2 $2, d#( ( $($6@-7 .&&06555p x
 x
 x
] 4FFs   $M*M*M#