a
    ç´«jO  ã                   @   sJ  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�rFe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 )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   úb/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/testing/print_coercion_tables.pyÚ__init__   s    zGenericObject.__init__c                 C   s   | S r   r   ©r   Úotherr   r   r	   Ú__add__   s    zGenericObject.__add__c                 C   s   | S r   r   r   r   r   r	   Ú__radd__   s    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 ]d}t ||d¡rXd}n@t ||d¡rld}n,t ||d¡r€d	}nt ||d
¡r”d}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   sJ  t ddd� | D ]}t |dd� qt ƒ  | D �]}|dkr@t}nt|ƒ}t |dd� | D ]ä}|dkrjt}	nt|ƒ}	zx|rŽtj||ƒg|d�}
n||ƒ}
|	|ƒ}|r¶t |
j|j¡j}n2t |
|¡}t	|tj
ƒrØ|jj}nt t|ƒ¡j}W nD t�y   d}Y n. t�y   d}Y n t�y.   d}Y n0 t |dd� qXt ƒ  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+   s@    


r4   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 ]²}ˆ  |d ¡ ˆ  |d ¡ |d ˆvrši ˆ|d < ˆ|d  }	||d  } |d r¾dnd}d}|d rÖ|dO }|d ræ|dO }|d rö|dO }|| }|| ||d�|	|d < qbtjd ‰‡fd d!„}
tˆ |
d"�‰ d.‡ ‡‡fd$d%„	}| �rltƒ  td&ƒ tƒ  |d#ƒ |�rŽtƒ  td'ƒ tƒ  |dƒ |�rØtƒ  t|d › d(|d › d)|d › d*|d › d+�ƒ tƒ  |d,ƒ 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_infor5   ÚfromÚtoZcastingr6   ÚLZrequires_pyapir:   Zsupports_unalignedr;   Zno_floatingpoint_errorsr=   ÚAllc                    s@   t  | j¡}zˆ  |j¡}W n ty4   t j}Y n0 ||jfS r   )r   r   r/   Úindexr#   r0   Ú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 ]P}t t |j¡jdd� ˆ |i ¡}ˆ D ]}t t| |ˆ¡| ƒdd� q`t ƒ  q6d S )Nr   r   r   )r    r   r   r/   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-errorsr7   N)r!   )	Znumpy._core._multiarray_testsr8   r   Úsetr-   r   Ú	typecodesÚsortedr    )r!   r6   r7   r8   Z
cast_tableZflags_tablerA   Zcastsr&   Úto_dictrJ   rS   r   )rP   rQ   rR   rI   r	   Úprint_new_cast_tableT   st    ú	ü

ÿÿ
rX   Ú__main__zcan castrE   zJIn these tables, ValueError is '!', OverflowError is '@', TypeError is '#'zscalar + scalarzscalar + neg scalarr9   zarray + scalarzarray + neg scalarr,   zNew casting type promotion:)F)Ú__doc__Únumpyr   Znumpy._core.numerictypesr   Úcollectionsr   r   r'   r4   rX   r   r    rU   r   r   r   r	   Ú<module>   s:   
)`
