o
    Zh9                      @  s  d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	m
Z
mZ edZejeeeef Zejeef ZedZedZed	Zed
ZedZedZzddlmZ W n eyo   edZY nw d2ddZd2ddZd2ddZd2ddZ d2ddZ!d2ddZ"dd Z#d2ddZ$d2dd Z%d2d!d"Z&d2d#d$Z'eee e!ee%e&e%e"e$e#e'd%Z(d&d' Z)d3d)d*Z*d+d, Z+ed(fd-d.Z,d2d(d/d0d1Z-dS )4zZ "Normalize" arguments: convert array_likes to tensors, dtypes to torch dtypes and so on.
    )annotationsN   )_dtypes_dtypes_impl_util	ArrayLike	DTypeLikeAxisLikeNDArrayCastingModesKeepDimsOutArray)NotImplementedTyper   c                 C  s   ddl m} || jS )Nr   )asarray)_ndarrayr   tensor)xparmr    r   K/var/www/auris/lib/python3.10/site-packages/torch/_numpy/_normalizations.pynormalize_array_like.   s   
r   c                 C  s   t | r| S t| |S N)r   Zis_scalar_or_symbolicr   r   r   r   r   r   normalize_array_like_or_scalar4   s   

r   c                 C     | d u rd S t | |S r   )r   r   r   r   r   'normalize_optional_array_like_or_scalar:   s   
r   c                 C  r   r   r   r   r   r   r   normalize_optional_array_like@   s   r   c                 C  s   t dd | D S )Nc                 s      | ]}t |V  qd S r   r   ).0valuer   r   r   	<genexpr>G       z+normalize_seq_array_like.<locals>.<genexpr>)tupler   r   r   r   normalize_seq_array_likeF   s   r$   c                 C  s    d }| d urt | } | j}|S r   )r   dtypetorch_dtype)r%   r   r&   r   r   r   normalize_dtypeJ   s
   
r'   c                 C  s    | |j krtd|j dd S )N'z' parameter is not supported.)defaultNotImplementedErrornameargr   r   r   r   normalize_not_implementedS   s   
r.   c                 C  s$   ddl m} t| |rt| } | S Nr   ndarray)r   r1   
isinstanceoperatorindexr-   r   r1   r   r   r   normalize_axis_likeX   s   

r6   c                 C  s:   | d u r| S ddl m} t| |std|j d| jS Nr   r0   r(   z' must be an array)r   r1   r2   	TypeErrorr+   r   r5   r   r   r   normalize_ndarray`   s   
r9   c                 C  sL   | d u r| S ddl m} t| tjr|| } t| |s$td|j d| S r7   )r   r1   r2   torchTensorr8   r+   r5   r   r   r   normalize_outarrayl   s   
r<   c                 C  s   | dvrt d|  d| S )N)noequivsafeZ	same_kindunsafezMcasting must be one of 'no', 'equiv', 'safe', 'same_kind', or 'unsafe' (got 'z'))
ValueErrorr,   r   r   r   normalize_casting|   s
   
rB   )r   ArrayLikeOrScalarzOptional[ArrayLike]zSequence[ArrayLike]zOptional[ArrayLikeOrScalar]zOptional[NDArray]zOptional[OutArray]r
   zOptional[DTypeLike]r	   r   zOptional[CastingModes]c                 C  s    t |jd}|r|| |S | S )z,Normalize arg if a normalizer is registered.N)normalizersget
annotation)r-   r   
normalizerr   r   r   maybe_normalize   s   rH   Fc                   s   | d u r|S t |tjr;|j| jkr3| dko| jdk} r&|r&| }ntd| j d|j d| j	| | S t |t
tfrRt| fddt| |D S t)Nr   r   z'Bad size of the out array: out.shape = z while result.shape = .c                 3  s     | ]\}}t || V  qd S r   )maybe_copy_to)r   orpromote_scalar_resultr   r   r!      s    
z maybe_copy_to.<locals>.<genexpr>)r2   r:   r;   shapeZnumelndimZsqueezerA   r   Zcopy_r#   listtypezipAssertionError)outresultrN   Zcan_fitr   rM   r   rJ      s&   

rJ   c                 C  sH   ddl m} t| tjr|| S t| ttfr"t| dd | D } | S )Nr   r0   c                 s  r   r   )wrap_tensors)r   r   r   r   r   r!      r"   zwrap_tensors.<locals>.<genexpr>)r   r1   r2   r:   r;   r#   rQ   rR   )rV   r1   r   r   r   rW      s   rW   c                 C  s$   |r||   S ddlm} || S r/   )itemr   r1   )valuesZpy_typeZreturn_scalarr1   r   r   r   array_or_scalar   s   rZ   rM   c                  s     fdd}| d u r|S || S )Nc                   s   t   fdd}|S )Nc                    s4  t }|jtt   jt jjkr! fdd| D } nt	dd t
|  D | t d   } fdd| D }| i |}d }dv rxd jdkrx|j| i |j}|dd	rx| d
 }|d}t|||j}dv r|d u r|j| i |j}|d}t||}t|}|S )Nc                   s   g | ]}t | qS r   rH   )r   r-   )first_paramr   r   
<listcomp>   s    zInormalizer.<locals>.normalizer_inner.<locals>.wrapped.<locals>.<listcomp>c                 s  s    | ]
\}}t ||V  qd S r   r[   )r   r-   r   r   r   r   r!      s
    
zHnormalizer.<locals>.normalizer_inner.<locals>.wrapped.<locals>.<genexpr>c                   s,   i | ]\}}|| v rt | | n|qS r   r[   )r   r+   r-   )paramsr   r   
<dictcomp>   s    zInormalizer.<locals>.normalizer_inner.<locals>.wrapped.<locals>.<dictcomp>Zkeepdimsr   Fr   axisrU   )inspect	signature
parametersnextiterrY   kind	ParameterVAR_POSITIONALr#   rS   lenitemsrF   bind	argumentsrE   r   Zapply_keepdimsrP   rJ   rW   )argskwdssigrV   Z
bound_argsr   r`   rU   )funcrN   )r\   r^   r   wrapped   s:   



z5normalizer.<locals>.normalizer_inner.<locals>.wrapped)	functoolswraps)rp   rq   rM   )rp   r   normalizer_inner   s   0z$normalizer.<locals>.normalizer_innerr   )Z_funcrN   rt   r   rM   r   rG      s   4rG   r   )F).__doc__
__future__r   rr   ra   r3   typingr:    r   r   r   TypeVarr   UnionintfloatcomplexboolZScalarrC   r   r	   r
   r   r   r   r   ImportErrorr   r   r   r   r$   r'   r.   r6   r9   r<   rB   rD   rH   rJ   rW   rZ   rG   r   r   r   r   <module>   sf   












	



	
	
