
     TiM                    X    S SK Jr  S SKJrJr  S SKrS SKJrJ	r	  S SK
Jr   " S S5      rg)    )annotations)AnyOptionalN)ir
onnx_opset)autocastc                  X   \ rS rSrSrS'S(S jjr\S)S j5       r\S*S j5       r\S+S j5       r	\S,S j5       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S rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S&r(g)0Tensor   zAn implementation of ONNX Tensors, based on a wrapper around numpy arrays.
Serves to define overloaded ops with an ONNX/ONNXScript semantics.
Nc                    Ub7  [        U[        R                  5      (       d  [        S[	        U5       S35      eXl        U=(       d    [        R                  U l        g )NUnexpected type z#. It must be a numpy array or None.)	
isinstancenpndarray	TypeErrortype_nparrayr   opset18_opset)selfnparrayopsets      P/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxscript/tensor.py__init__Tensor.__init__   sO    z'2::'F'F"4=/1TU    6J$6$6    c                J    U R                   c  [        S5      eU R                   $ )NzTensor does not have a value.)r   
ValueErrorr   s    r   valueTensor.value   s"    == <==}}r   c                @    [        U R                  R                  5      $ N)lenr    shaper   s    r   rankTensor.rank%   s    4::##$$r   c                     U R                   S:H  $ Nr   )r&   r   s    r   	is_scalarTensor.is_scalar)   s    yyA~r   c                .    U R                   R                  $ r#   )r    r%   r   s    r   r%   Tensor.shape-       zzr   c                .    U R                   R                  $ r#   )r    dtyper   s    r   r0   Tensor.dtype1   r.   r   c                T    [         R                  R                  U R                  5      $ r#   )r   DataType
from_numpyr0   r   s    r   
onnx_dtypeTensor.onnx_dtype5   s    {{%%djj11r   c                P    U R                   R                   SU R                  < S3$ )N())	__class____name__r    r   s    r   __repr__Tensor.__repr__9   s$    ..))*!DJJ>;;r   c                ,    [        U R                  5      $ r#   )boolr    r   s    r   __bool__Tensor.__bool__<   s    DJJr   c                ,    [        U R                  5      $ r#   )intr    r   s    r   __int__Tensor.__int__?   s    4::r   c                ,    [        U R                  5      $ r#   )floatr    r   s    r   	__float__Tensor.__float__B   s    TZZ  r   c                     U R                   S   $ r)   )r%   r   s    r   __len__Tensor.__len__E   s    zz!}r   c                6    U R                   R                  5       $ r#   )r    	__index__r   s    r   rN   Tensor.__index__H   s    zz##%%r   c                4   U R                   nUR                  S:  a  [        S5      e[        U[        5      (       d  U4n[        U5      U R                  :  a$  [        S[        U5       SU R                   35      eU Vs/ s H  n[        R                  " U5      PM     nnU R                  n/ n/ n/ n/ n[        U5       GH  u  p[        U
[        5      (       a  U
R                  c  U
R                  c  U
R                  c  MD  U
R                  b  U
R                  S:  aX  UR!                  U
R                  =(       d    SU
R                  b  U
R                  OXI   U	U
R                  =(       d    S/5        M  UR!                  U
R                  b  U
R                  OXI   S-
  U
R                  b  U
R                  OXI   S-   * U	U
R                  /5        GM  [        U
["        5      (       aQ  U
R$                  (       a+  UR!                  XS-   U	S/5        UR!                  U	5        GMi  UR!                  X45        GM~  ['        S[)        U
5       S35      e   U(       d  U(       d  U(       d  UR+                  U 5      $ U(       d)  [        U5      S:X  a  US   nX   nUR-                  XUS	9nOU(       d  U(       a  XV-   n[.        R0                  " U[.        R2                  S
9R4                  n[#        US   5      n[#        US   5      n[#        US   5      n[#        US   5      nUR7                  XUUU5      nU(       a1  [#        [.        R8                  " UR:                  [	        U5      S	95      nOU nU H  u  nnUR-                  UUUS	9nM     U$ s  snf )N   z$Indexing requires opset 13 or later.zNumber of indices z is greater than rank r      r   z: slice or int expected.)axis)r0         )r   versionRuntimeErrorr   tupler$   r&   r   r   cast_pyvalue_to_os_tensorr%   	enumerateslicestartstopstepappendr
   r*   r   r   IdentityGatherr   arrayint64TSlicesqueezer    )r   indexopxr%   sliced_indicesscalar_indices
to_squeezenon_scalar_indicesaxis_srS   index_valueresultindicesstartsendsaxesstepsr    s                       r   __getitem__Tensor.__getitem__K   s   [[::?EFF%'' HEu:		!$SZL0FtyykR 
 AFF133A6F


!%(HE!U##77?qvv~!&&.66>QVVaZ"))GGLq&'ff&8AFFel!FFKa	 #))'(ww':AGGPQAQ&'ff&8AFFq@P>Q!FF	 Av&&;;"))1!eUA*>?%%e,&--uj9"247);S TUU; )L .4F;;t$$#n"5": a=D+KYYttY<F~+<Nhh~RXX>@@GGAJ'F'!*%D'!*%D71:&EXXdD$>F

6<<eJ>O PQF-KD%YYvu4Y8F . M Gs    Nc                T   U R                   [        R                  R                  [        R                  R                  [        R                  R
                  [        R                  R                  1;   a  U R                  R                  XSS9$ U R                  R                  X5      $ )NrR   )fmod)	r5   r   r3   FLOATDOUBLEFLOAT16BFLOAT16r   Modr   others     r   __mod__Tensor.__mod__   ss    ??KKKKKKKK  	
 
 ;;??4Q?77{{t++r   c                n    U R                   R                  X5      nU R                   R                  U5      $ r#   )r   EqualNot)r   r   temps      r   __ne__Tensor.__ne__   s)    {{  -{{t$$r   c                8    U R                   R                  U 5      $ r#   )r   Negr   s    r   __neg__Tensor.__neg__   s    {{t$$r   c                8    U R                   R                  X5      $ r#   r   Addr   s     r   __add__Tensor.__add__       {{t++r   c                8    U R                   R                  X5      $ r#   r   r   s     r   __radd__Tensor.__radd__       {{u++r   c                8    U R                   R                  X5      $ r#   r   Andr   s     r   __and__Tensor.__and__   r   r   c                8    U R                   R                  X5      $ r#   r   r   s     r   __rand__Tensor.__rand__   r   r   c                8    U R                   R                  X5      $ r#   r   Mulr   s     r   __mul__Tensor.__mul__   r   r   c                8    U R                   R                  X5      $ r#   r   r   s     r   __rmul__Tensor.__rmul__   r   r   c                8    U R                   R                  X5      $ r#   )r   MatMulr   s     r   
__matmul__Tensor.__matmul__   s    {{!!$..r   c                8    U R                   R                  X5      $ r#   )r   Orr   s     r   __or__Tensor.__or__   s    {{~~d**r   c                8    U R                   R                  X5      $ r#   )r   Powr   s     r   __pow__Tensor.__pow__   r   r   c                8    U R                   R                  X5      $ r#   r   Subr   s     r   __sub__Tensor.__sub__   r   r   c                8    U R                   R                  X5      $ r#   r   r   s     r   __rsub__Tensor.__rsub__   r   r   c                8    U R                   R                  X5      $ r#   )r   Divr   s     r   __truediv__Tensor.__truediv__   r   r   c                8    U R                   R                  X5      $ r#   )r   Lessr   s     r   __lt__Tensor.__lt__   s    {{,,r   c                8    U R                   R                  X5      $ r#   )r   LessOrEqualr   s     r   __le__Tensor.__le__   s    {{&&t33r   c                8    U R                   R                  X5      $ r#   )r   r   r   s     r   __eq__Tensor.__eq__   s    {{  --r   c                8    U R                   R                  X5      $ r#   )r   GreaterOrEqualr   s     r   __ge__Tensor.__ge__   s    {{))$66r   c                8    U R                   R                  X5      $ r#   )r   Greaterr   s     r   __gt__Tensor.__gt__   s    {{""4//r   )r   r   r#   )r   zOptional[np.ndarray])returnz
np.ndarray)r   rC   )r   r?   )r   ztuple[int, ...])r   znp.dtype)r   str)r   rG   ))r;   
__module____qualname____firstlineno____doc__r   propertyr    r&   r*   r%   r0   r5   r<   r@   rD   rH   rK   rN   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__ r   r   r
   r
      s   7  
 % %           2 2< !&Tl,%%,,,,,,/+,,,,-4.70r   r
   )
__future__r   typingr   r   numpyr   
onnxscriptr   r   onnxscript._internalr   r
   r   r   r   <module>r      s"    #    % )U0 U0r   