
    iS                       d dl mZ d dlZd dlZd dlZd dlmZ d dlZddlm	Z	m
Z
mZmZmZ ddlmZmZmZmZ dZg dZdd	d
ddddddd	Z G d d      ZdQdZi ddddddddddddddddddddddd dd!dd"dd#dd$dd%ddddddddddddd&Zd'dd(d)d*d+d,d-d.Zdd/d0d1d2d3d4d5d6d7d8d9dd:Zd; Zd< Zd= Zd> Zd? Z G d@ dA      Z  e        e _!         G dB dC      Z"dD Z#dQdEdFdGd ddHdIZ$dRddJdKZ%dQddJdLZ&dM Z'dN Z(dSdOZ)dP Z*y)T    )annotationsN)Sequence   )_dtypes_dtypes_impl_funcs_ufuncs_util)	ArrayLikenormalize_array_like
normalizerNotImplementedType)C_CONTIGUOUSF_CONTIGUOUSOWNDATA	WRITEABLEALIGNEDWRITEBACKIFCOPYFNCFORCBEHAVEDCARRAYFARRAYr   r   r   r   r   r   r   r   r   )	CFOWAXBCAFAc                  :     e Zd ZddZddZd Z fdZd Z xZS )Flagsc                V    t        d |j                         D              sJ || _        y )Nc              3  ,   K   | ]  }|t         v   y wN)FLAGS).0ks     O/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_numpy/_ndarray.py	<genexpr>z!Flags.__init__.<locals>.<genexpr>4   s     <!1:<s   )allkeys_flag_to_value)selfflag_to_values     r+   __init__zFlags.__init__3   s'    <}'9'9';<<<<+    c                    |j                         r)|j                         t        v r| |j                            S t        d| d      )NzNo flag attribute '')islowerupperr(   AttributeError)r0   attrs     r+   __getattr__zFlags.__getattr__7   s>    <<>djjle3

%% #6tfA!>??r3   c                    |t         j                         v r	t         |   }|t        v r	 | j                  |   S t	        d| d      # t        $ r}t        d|      |d }~ww xY w)Nzkey=No flag key 'r5   )SHORTHAND_TO_FLAGSr.   r(   r/   KeyErrorNotImplementedError)r0   keyes      r+   __getitem__zFlags.__getitem__=   sv    $))++$S)C%<<**3// ]3%q122  <)TSF)4!;<s   A 	A$AA$c                    |j                         r*|j                         t        v r|| |j                         <   y t        |   ||       y r'   )r6   r7   r(   super__setattr__)r0   r9   value	__class__s      r+   rE   zFlags.__setattr__H   s8    <<>djjle3!&DGe,r3   c                r    |t         v s|t        j                         v rt        d      t	        d| d      )Nz"Modifying flags is not implementedr<   r5   )r(   r=   r.   r?   r>   )r0   r@   rF   s      r+   __setitem__zFlags.__setitem__N   s:    %<3"4"9"9";;%&JKK]3%q122r3   )r1   dict)r9   str)	__name__
__module____qualname__r2   r:   rB   rE   rI   __classcell__)rG   s   @r+   r$   r$   2   s    ,@	3-3r3   r$   c                T     |xs  j                   } fd}||_         d| |_        |S )Nc                      | i |S r'    )argskwargsfns     r+   fzcreate_method.<locals>.fX   s    4"6""r3   zndarray.)rL   rN   )rU   namerV   s   `  r+   create_methodrX   U   s2    2;;D# AJv&ANHr3   clipnonzerorepeatroundsqueezeswapaxesraveldiagonaldottraceargsortsearchsortedargmaxargminanyr-   max)minptpsumprodmeanvarstdcumsumcumprodtakechooseabsolutepositivenegativegreaterlessgreater_equal
less_equal)absinvertposneggtltgelesubtractmultiplydividefloor_dividepower	remainderbitwise_and
bitwise_orbitwise_xor
left_shiftright_shift)addsubmultruedivfloordivpowmodandorxorlshiftrshiftmatmulc                T   t        | t        j                        rk| j                  t        j                  t        j
                  t        j                  t        j                  fv r| j                  t        j                        S | S t        | t              rt        d | D              S | S )Nc              3  2   K   | ]  }t        |        y wr'   )_upcast_int_indices)r)   is     r+   r,   z&_upcast_int_indices.<locals>.<genexpr>   s     ;(+;   )
isinstancetorchTensordtypeint8int16int32uint8toint64tupleindexs    r+   r   r      sq    %&;;5::u{{EKKMM88EKK(( L 
E5	!;U;;;Lr3   c                &    t        d | D              S )z&Check if there's any advanced indexingc              3     K   | ]f  }t        |t        t        f      xsJ t        |t        j                        xr. |j
                  t        j                  k(  xs |j                  d kD   h ywr   N)r   r   boolr   r   r   ndimr)   idxs     r+   r,   z)_has_advanced_indexing.<locals>.<genexpr>   s`        	34() 	YsELL)WsyyEJJ/F/V#((UV,	Ys   A,A.)rg   r   s    r+   _has_advanced_indexingr      s        r3   c                   t        | t              s| f} t        |       }|s| S g }| D ]  }t        |t              r#t        |t              s|j                  |g       6t        |t        j                        rT|j                  dk(  rEt        j                  |      s0|j                  t        j                  k7  r|j                  |g       |j                  |        t        |      S )zZConvert scalar indices to lists when advanced indexing is present for NumPy compatibility.r   )r   r   r   intr   appendr   r   r   is_floating_pointr   )r   has_advanced	convertedr   s       r+   _numpy_compatible_indexingr      s    eU# *%0L I "c3
3(=cU#sELL)A++C0		UZZ' cU# S!"  r3   c                   t        | t              ryt        | t        j                        r+| j                  t        j                  k(  rd| j
                  fS t        | t              r
| r| d   | k7  syt        | d         \  }}||dz   fS )z.Returns the depth of a boolean sequence/tensor)Tr   Tr   )Fr   r   )r   r   r   r   r   r   r   _get_bool_depth)sis_booldepths      r+   r   r      st    !T!U\\"qww%**'<QVV|q(#adai$QqT*NGUEAIr3   c                   t        | t              s| f} d}t        |       D ]  \  }}|t        u s|} n || d d fS d}| D ](  }t	        |      \  }}|r||z  }|t        u s|$|dz  }* ||z
  }|dk(  r^t        | d|       }	t        | |dz   d       }
|	r=|
r;| d| dz   | |dz   d z   }dt        d | |dz   d D              z   fd}fd	}|||fS | d
 d fS )a  
    Patch for NumPy-compatible ellipsis behavior when ellipsis doesn't match any dimensions.

    In NumPy, when an ellipsis (...) doesn't actually match any dimensions of the input array,
    it still acts as a separator between advanced indices. PyTorch doesn't have this behavior.

    This function detects when we have:
    1. Advanced indexing on both sides of an ellipsis
    2. The ellipsis doesn't actually match any dimensions
    Nc                    | S r'   rR   xs    r+   <lambda>z-_numpy_empty_ellipsis_patch.<locals>.<lambda>   s     r3   c                    | S r'   rR   r   s    r+   r   z-_numpy_empty_ellipsis_patch.<locals>.<lambda>   s    Q r3   r   r   r'   c              3  B   K   | ]  }t        |t              sd   yw)r   N)r   slicer   s     r+   r,   z._numpy_empty_ellipsis_patch.<locals>.<genexpr>  s       *S%:P s   c                (    | j                         S r'   )r]   r   	end_ndimss    r+   
squeeze_fnz/_numpy_empty_ellipsis_patch.<locals>.squeeze_fn  s    yy),,r3   c                ~    t        | t        j                        r!| j                  k\  r| j	                         S | S r'   )r   r   r   r   	unsqueezer   s    r+   unsqueeze_fnz1_numpy_empty_ellipsis_patch.<locals>.unsqueeze_fn  s2    a.166Y3F;;	z22r3   c                    | S r'   rR   r   s    r+   r   z-_numpy_empty_ellipsis_patch.<locals>.<lambda>!  s    A r3   c                    | S r'   rR   r   s    r+   r   z-_numpy_empty_ellipsis_patch.<locals>.<lambda>!  s     r3   )r   r   	enumerateEllipsisr   r   rk   )r   tensor_ndimellipsis_posr   r   consumed_dimsr   r   ellipsis_dimsleft_advancedright_advanced	new_indexr   r   r   s                 @r+   _numpy_empty_ellipsis_patchr      s[    eU# LE" 3(?L k;.. M (-U"MH_QM  -/M .u]l/CD/lQ6F6H0IJ^ m|,w6|a?O?Q9RRIC  "<!#3#56   I-
 j,66+{**r3   c                      e Zd Zy)_UnspecifiedN)rL   rM   rN   rR   r3   r+   r   r   &  s    r3   r   c                     e Zd Zd:dZej                         D ]#  \  ZZ ee	exs e      Z
 ee
e       e       e<   %  eej                  d      Z eej                        Zej                         D ])  \  ZZ eeexs e      Z
de dZ ee
e       e       e<   + ej                         D ]]  \  ZZ eeexs e      Z
de dZ ee
e       e       e<   de dZ ee
fde       e       e<   de dZ ee
fde       e       e<   _  eej*                  d	      Z ed
 d      Z[[[[[
[ed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Z ed        Z!ed        Z"ed        Z#e#jH                  d        Z#ed        Z%e%jH                  d        Z%d;dZ&e'd<d=d       Z(e'd<d=d       Z)ddd Z*e+jX                  e+jX                  fd!Z-e'd>d"       Z.d# Z/d$ Z0d% Z1 ee1      Z2d& Z3d' Z4d( Z5d) Z6d* Z7d+ Z8d, Z9d- Z:d. Z;d/ Z<d0 Z=dd1d2Z>d?d3Z?d4 Z@d5 ZAd6 ZBe	j                  ZCe	j                  ZDdd7d8ZEd9 ZFy)@ndarrayNc                    |t        j                         | _        y t        |t         j                        r|| _        y t	        d      )NzSndarray constructor is not recommended; prefereither array(...) or zeros/empty(...))r   r   tensorr   
ValueError)r0   ts     r+   r2   zndarray.__init__2  s;    9,,.DK5<<(DK8 r3   conj____rc                     |||       S r'   rR   r0   otherrU   s      r+   r   zndarray.<lambda>P  s    5$ r3   __ic                     || ||       S )N)outrR   r   s      r+   r   zndarray.<lambda>S  s    r$4'@ r3   
__divmod__c                .    t        j                  ||       S r'   )r	   divmodr0   r   s     r+   r   zndarray.<lambda>Y  s    GNN5$7 r3   __rdivmod__c                @    t        | j                  j                        S r'   )r   r   shaper0   s    r+   r   zndarray.shape_  s    T[[&&''r3   c                6    | j                   j                         S r'   )r   numelr   s    r+   sizezndarray.sizec  s    {{  ""r3   c                .    | j                   j                  S r'   )r   r   r   s    r+   r   zndarray.ndimg  s    {{r3   c                T    t        j                  | j                  j                        S r'   )r   r   r   r   s    r+   r   zndarray.dtypek  s    }}T[[..//r3   c                    | j                   j                         t        fd| j                   j                         D              S )Nc              3  (   K   | ]	  }|z    y wr'   rR   )r)   strideelsizes     r+   r,   z"ndarray.strides.<locals>.<genexpr>r  s     HVf_Hs   )r   element_sizer   r   )r0   r   s    @r+   strideszndarray.strideso  s3    ))+H4;;3E3E3GHHHr3   c                6    | j                   j                         S r'   )r   r   r   s    r+   itemsizezndarray.itemsizet  s    {{''))r3   c                    t        | j                  j                         | j                  j                  j                         | j                  j                  d u dd      S )NT)r   r   r   r   )r$   r   is_contiguousT_baser   s    r+   flagszndarray.flagsx  sO      $ 9 9 ; $ ; ; =;;,,4!	
 	
r3   c                6    | j                   j                         S r'   )r   data_ptrr   s    r+   datazndarray.data  s    {{##%%r3   c                R    | j                   j                         j                         S r'   )r   storagenbytesr   s    r+   r  zndarray.nbytes  s    {{""$++--r3   c                "    | j                         S r'   )	transposer   s    r+   r  z	ndarray.T  s    ~~r3   c                ,    t        j                  |       S r'   )r   realr   s    r+   r  zndarray.real      {{4  r3   c                L    t        |      j                  | j                  _        y r'   )asarrayr   r  r0   rF   s     r+   r  zndarray.real      "5>00r3   c                ,    t        j                  |       S r'   )r   imagr   s    r+   r  zndarray.imag  r  r3   c                L    t        |      j                  | j                  _        y r'   )r  r   r  r  s     r+   r  zndarray.imag  r  r3   c                    |dk7  rt        d| d      |dk7  rt        d| d      |st        d| d      |st        d| d      t        j                  |      j                  }| j                  j                  |      }t        |      S )NKzastype(..., order= is not implemented.unsafezastype(..., casting=zastype(..., subok=zastype(..., copy=)r?   r   r   torch_dtyper   r   r   )r0   r   ordercastingsubokcopyr  r   s           r+   astypezndarray.astype  s    C<%(:5'AU&VWWh%&wi/CD  %(:5'AU&VWW%(9$?S&TUUmmE*66KKNN;'qzr3   r   c                "    | j                         S r'   )cloner0   r  s     r+   r!  zndarray.copy  s    zz|r3   c                ,    t        j                  |       S r'   )r   flattenr%  s     r+   r'  zndarray.flatten  s    }}T""r3   F)refcheckc                  |rt        d| d      |dv ry t        |      dk(  r|d   }t        |t              r|f}t	        j
                  d |D              rt        d      t        j                  |      | j                  j                         }}| j                  j                  |       ||k\  rJ| j                  j                         sJ | j                  j                         }||d  j                          y y )Nzresize(..., refcheck=r  )rR   r'   r   r   c              3  &   K   | ]	  }|d k    ywr   rR   r)   r   s     r+   r,   z!ndarray.resize.<locals>.<genexpr>  s     1!A1s   z0all elements of `new_shape` must be non-negative)r?   lenr   r   builtinsrg   r   mathrl   r   r   resize_r  r'  zero_)r0   r(  	new_shape	new_numel	old_numelbs         r+   resizezndarray.resize  s    %'z1EF  % y>Q!!Ii%"I<<1y11OPP#yy3T[[5F5F5H9	I&	!;;,,...##%AijM!	 "r3   c                
   |t         j                  u r| j                  }|t         j                  urt        d| d      t	        j                  |      j
                  }| j                  j                  |      }t        |      S )Nzview(..., type=r  )	r   unspecifiedr   r?   r   r  r   viewr   )r0   r   typer  tviews        r+   r8  zndarray.view  sn    L,,,JJE|///%v=Q&RSSmmE*66  -u~r3   c                :    | j                   j                  |       y r'   )r   fill_r  s     r+   fillzndarray.fill  s     	% r3   c                6    | j                   j                         S r'   )r   tolistr   s    r+   r?  zndarray.tolist  s    {{!!##r3   c                D    d | j                   j                         D        S )Nc              3  2   K   | ]  }t        |        y wr'   )r   r+  s     r+   r,   z#ndarray.__iter__.<locals>.<genexpr>  s     ;q
;r   )r   __iter__r   s    r+   rB  zndarray.__iter__  s    ;DKK$8$8$:;;r3   c                l    t        | j                        j                  dd      j                  dd      S )Nr   ztorch.ndarrayzdtype=torch.zdtype=)rK   r   replacer   s    r+   __str__zndarray.__str__  s+    WX/W^X.	
r3   c                    	 t        j                  | |      S # t        t        f$ r4 t	        j
                  | j                  dt              }t        |      cY S w xY w)NF)
fill_valuer   )	r	   equalRuntimeError	TypeErrorr   fullr   r   r  )r0   r   falsys      r+   __eq__zndarray.__eq__  sL    	"==u--i( 	"JJtzze4HE5>!	"s    A AAc                    | |k(   S r'   rR   r   s     r+   __ne__zndarray.__ne__  s    r3   c                    	 t        j                  | j                  j                               S # t        $ r}t        d      |d }~ww xY w)Nz=only integer scalar arrays can be converted to a scalar index)operatorr   r   item	ExceptionrJ  )r0   excs     r+   	__index__zndarray.__index__  sF    	>>$++"2"2"455 	O	s   ,/ 	A	AA	c                ,    t        | j                        S r'   )r   r   r   s    r+   __bool__zndarray.__bool__  s    DKK  r3   c                ,    t        | j                        S r'   )r   r   r   s    r+   __int__zndarray.__int__  s    4;;r3   c                ,    t        | j                        S r'   )floatr   r   s    r+   	__float__zndarray.__float__  s    T[[!!r3   c                ,    t        | j                        S r'   )complexr   r   s    r+   __complex__zndarray.__complex__  s    t{{##r3   c                |    	 | j                   j                         }t        |      |k(  }|S # t        $ r d}Y |S w xY w)NF)r   rR  r   rS  )r0   vresults      r+   
is_integerzndarray.is_integer  sH    	  "AVq[F   	F	s   (, ;;c                4    | j                   j                  d   S )Nr   )r   r   r   s    r+   __len__zndarray.__len__  s    {{  ##r3   c                8    | j                   j                  |      S r'   )r   __contains__)r0   r   s     r+   rg  zndarray.__contains__  s    {{''**r3   c                .    t        j                  | |      S r'   )r   r  )r0   axess     r+   r  zndarray.transpose  s    d++r3   r  c               2    t        j                  | ||      S )Nrj  )r   reshape)r0   r  r   s      r+   rl  zndarray.reshape#  s    ~~dE77r3   c           	     \    t        j                  | t        j                  | |||             y r'   )r   copytosort)r0   axiskindr  s       r+   ro  zndarray.sort'  s    dFKKdD%@Ar3   c                    |dk(  r| j                   j                         S t        |      dk(  r| j                         |d      S | j	                  |      S )NrR   r   r   )r   rR  r,  r_   rB   )r0   rS   s     r+   rR  zndarray.item+  sO     2:;;##%%Y!^::<Q((##D))r3   c                l   | j                   fdt        |t              r$ t        |      fdt	        |      D              }n	 d|      }t        j                  |      }t        |      }t        |      }t        |j                        \  }}} |t        j                  |                  S )Nc                   t        |t              r|j                  |j                  dk  s|S t        j                  | f      t        |j
                  t              s|j
                  J t        |j                  t              s|j                  J |j                  r|j                  dz   nd }|j
                  r|j
                  dz   nd }t        |||j                         S )Nr   r   )r   r   stepr   flipstartr   stop)r   r   rw  rx  r   s       r+   neg_stepz%ndarray.__getitem__.<locals>.neg_step:  s    q%(QVV-?AFFQJ ZZ-F aggs+qww>>affc*affn<<"#&&AFFQJdE"#''177Q;tDqvvg..r3   c              3  6   K   | ]  \  }} ||        y wr'   rR   )r)   r   r   ry  s      r+   r,   z&ndarray.__getitem__.<locals>.<genexpr>J  s     L41aALs   r   )r   r   r   r9  r   r
   ndarrays_to_tensorsr   r   r   r   r   rB   )r0   r   maybe_squeeze_ry  r   s       @@r+   rB   zndarray.__getitem__7  s    	/ eX&DKL9U;KLLEQ&E))%0#E**51"=eV[["Q}aWV%7%7%>?@@r3   c                x   t        j                  |      }t        |      }t        |      }t	        || j
                  j                        \  }}}t        j                  |      s5t        |      }t        j                  || j
                  j                        }| j
                  j                  | ||            S r'   )r
   r{  r   r   r   r   r   r   	is_scalarr   cast_if_neededr   rI   )r0   r   rF   r}  maybe_unsqueezes        r+   rI   zndarray.__setitem__U  s    ))%0#E**51$?t{{GWGW$X!q/%%e,(/E((0A0ABE{{&&uoe.DEEr3   streamc               :    | j                   j                  |      S )Nr  )r   
__dlpack__)r0   r  s     r+   r  zndarray.__dlpack__f  s    {{%%V%44r3   c                6    | j                   j                         S r'   )r   __dlpack_device__r   s    r+   r  zndarray.__dlpack_device__i  s    {{,,..r3   r'   )r  r  TT)r   )r0   r   r  r   )rF   r   )NN)GrL   rM   rN   r2   methodsitemsmethodrW   getattrr   rU   rX   varsr	   	conjugater   dunder	ri_dunderplainrvarivarr   r   r   propertyr   r   r   r   r   r  r  r	  r  r  r  setterr  r"  r   r!  r'  r5  r   r7  r8  r=  r?  rB  rE  __repr__rM  rO  rU  rW  rY  r\  r_  rc  re  rg  r  rl  ro  rR  rB   rI   rr   putr  r  rR   r3   r+   r   r   1  s   	   3VT^V,&r62v3
 **F3Dg//0I 3Wdnf-fXR&r62v3
 ") 	
Wdnf-VHB%b%0uVHB$B%OQUVtVHB$#%@$
t	
 w~~|<J7K
 	dD%V( ( # #     0 0 I I * * 	
 	
 & & . .     ! ! 
[[1 1 ! ! 
[[1 1   # # +0 "8 &118P8P  ! !
$<
 W%H" ! "$$+, %( 8B
*A<F ;;D
**C#' 5/r3   r   c                    g }| D ]n  }t        |t        t        f      rt        |      }t        |t              r*|j                  |j                  j                                ^|j                  |       p |S )z'Recursively convert tensors into lists.)r   listr   _tolistr   r   r   r?  )obja1elems      r+   r  r  m  sb    	B dT5M*4=DdG$IIdkk((*+IIdO Ir3   Tr  F)r!  r  r   ndminlikec                  |durt        d      |t        d      |dk7  rt         t        | t              r|du r||| j                  k  r| S t        | t        t
        f      r5| r(t        d | D              rt        j                  |       } nt        |       } t        | t              r| j                  } d }|t        j                  |      j                  }t        j                  | |||      }t        |      S )NFz#'subok' parameter is not supported.z"'like' parameter is not supported.r  c              3  P   K   | ]  }t        |t        j                           y wr'   )r   r   r   r+  s     r+   r,   zarray.<locals>.<genexpr>  s     @qz!U\\2@s   $&)r?   r   r   r   r  r   r-   r   stackr  r   r   r   r  r
   _coerce_to_tensor)	r  r   r!  r  r   r  r  r  r   s	            r+   arrayr  ~  s    E!"GHH!"FGG|!! 	3 EMMSXX
#e}%3@C@@++c"C #,C #wjj KmmE*66$$S+tUCF6?r3   )r  c               $    t        | |||dd      S )NFr   )r   r  r  r!  r  )r  )ar   r  r  s       r+   r  r    s    %u4e1MMr3   c                   t        | ||      }|j                  j                         s|j                  j                         |_        |S )N)r   r  )r  r   r  
contiguous)r  r   r  arrs       r+   ascontiguousarrayr    s9    
!5t
,C::##%ZZ**,
Jr3   c               B    t        j                  |       }t        |      S r'   )r   from_dlpackr   )r   r   s     r+   r  r    s    !A1:r3   c                |    	 t        j                  |       }|S # t        $ r t        |       j                  }Y |S w xY wr'   )r   r   rS  r  )entrydtys     r+   _extract_dtyper    sA    #mmE" J  #en""J#s    ;;c                    t        |       } t        |      }t        j                  | j                  |j                  |      S r'   )r  r   can_cast_implr  )from_r   r  to_s       r+   can_castr    s5    5!E

C%%e&7&7'RRr3   c                 P   g }| D ])  }	 t        |      j                  }|j                  |       + t        j                  | }t        j                  |      S # t        t        t        f$ r9 t        j                  |      }t        j                  d|j                        }Y w xY w)Nr   )r   )r  r   rI  r   rJ  r   r   r   emptyr  r   r   result_type_impl)arrays_and_dtypestensorsr  r   r  r  s         r+   result_typer    s    G" 	6%%A 	q //9K==%% j)4 	6--&CAS__5A	6s   AA
B%$B%r'   )Nr  )safe)+
__future__r   r-  r.  rQ  collections.abcr   r    r   r   r   r	   r
   _normalizationsr   r   r   r   newaxisr(   r=   r$   rX   r  r  r  r   r   r   r   r   r   r7  r   r  r  r  r  r  r  r  r  rR   r3   r+   <module>r     s=   #    $  ; ;  	 
						


  3  3F"
D"t" d" T	"
 t" " T" " 
4" T" t" D"  d!"" d#"$ 
4%"& 
4'"( 
4)"* C"J 



	
 
	"B	?+H	 	 (> y/ y/x	
"%4s%qt %PNd NT 
S&r3   