o
    ZZhO                     @   sL  d Z ddlZddlmZ ddlmZ G dd dZdd Zdd
dZ	dd	d	dddZ
edkred eejd  e  ed e  ed e	ejd ddd	 e  ed e	ejd ddd	 e  ed e	ejd ddd e  ed e	ejd ddd e  ed e	ejd ddd	d ed e
dddd dS dS )z:Prints type-coercion tables for the built-in NumPy types

    N)
obj2sctype)
namedtuplec                   @   s.   e Zd Zdd Zdd Zdd ZedZdS )	GenericObjectc                 C   s
   || _ d S N)v)selfr    r   R/var/www/auris/lib/python3.10/site-packages/numpy/testing/print_coercion_tables.py__init__   s   
zGenericObject.__init__c                 C      | S r   r   r   otherr   r   r	   __add__      zGenericObject.__add__c                 C   r   r   r   r   r   r   r	   __radd__   r   zGenericObject.__radd__ON)__name__
__module____qualname__r
   r   r   npdtyper   r   r   r	   r   
   s
    r   c                 C   s   t ddd | D ]}t |dd qt   | D ]@}t |dd | D ]2}t||dr,d}n t||dr6d}nt||dr@d	}nt||d
rJd}nd}t |dd q t   qd S )NX endequiv#safe=Z	same_kind~unsafe.)printr   can_cast)ntypescharrowcolcastr   r   r	   print_cancast_table   s&   r)   Fc              
   C   sB  t ddd | D ]}t |dd qt   | D ]}|dkrt}nt|}t |dd | D ]o}|dkr4t}	nt|}	z<|rFtj||g|d}
n||}
|	|}|rZt|
j|jj}nt|
|}t	|tj
rk|jj}ntt|j}W n ty   d}Y n ty   d}Y n ty   d}Y nw t |dd q+t   qd S )	N+r   r   r   )r   !@r   )r"   r   r   r   arraypromote_typesr   r%   add
isinstanceZndarraytype
ValueErrorOverflowError	TypeError)r$   ZinputfirstvalueZinputsecondvalueZ
firstarrayZuse_promote_typesr%   r&   Zrowtyper'   ZcoltypeZrowvalueZcolvaluevaluer   r   r	   print_coercion_table+   sF   
r6   Tr#   legacyflagsc              	      s  ddl m} ddddddd}d	d
ddddddd}tdg d}|ddd| }i t  |D ]Y} |d   |d  |d vrMi |d < |d  }	||d  } |d r_dnd}d}|d rk|dO }|d rs|dO }|d r{|dO }|| }|| ||d|	|d < q1tjd fd d!}
t |
d" d. fd$d%	}| rt  td& t  |d# |rt  td' t  |d |rt  t|d  d(|d  d)|d  d*|d  d+ t  |d, d-S d-S )/z[Prints new casts, the values given are default "can-cast" values, not
    actual ones.
    r   )get_all_cast_informationr   r   r   r   r!   )r               u   ▗u   █u   ▚u   ▐u   ▄u   ▜u   ▙u   ▟)r      r<   r=   r?   r>         	cast_infor7   fromtoZcastingr8   LZrequires_pyapir<   Zsupports_unalignedr=   Zno_floatingpoint_errorsr?   Allc                    s@   t | j}z |j}W n ty   t j}Y nw ||jfS r   )r   r   r1   indexr%   r2   inf)xr   Zindx)typesr   r	   sorter   s   

z$print_new_cast_table.<locals>.sorter)keyr#   c                    s   t ddd  D ]}t t|jjdd qt    D ](}t t|jjdd |i } D ]}t t||| dd q0t   qd S )Nr   r   r   )r"   r   r   r1   r%   getgetattr)fielddtZfrom_dtr&   Zto_dt)dtypesno_cast_infotabler   r	   print_table   s   z)print_new_cast_table.<locals>.print_tablezDCasting: # is equivalent, = is safe, ~ is same-kind, and . is unsafez+L denotes a legacy cast . a non-legacy one.z: no flags, z	: PyAPI, z: supports unaligned, z: no-float-errorsr9   N)r#   )	Znumpy._core._multiarray_testsr:   r   setr/   r   	typecodessortedr"   )r#   r8   r9   r:   Z
cast_tableZflags_tablerC   Zcastsr(   to_dictrL   rU   r   )rR   rS   rT   rK   r	   print_new_cast_tableT   sv   	


rZ   __main__zcan castrG   zJIn these tables, ValueError is '!', OverflowError is '@', TypeError is '#'zscalar + scalarzscalar + neg scalarr;   zarray + scalarzarray + neg scalarr.   zNew casting type promotion:)F)__doc__numpyr   Znumpy._core.numerictypesr   collectionsr   r   r)   r6   rZ   r   r"   rW   r   r   r   r	   <module>   s>   
)`