a
    hÝEb  ã                   @   s>  d Z ddl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�r:e
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)Ú
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   úc/home/ja/django-apps/lartica_env/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   sN  t ddd� | D ]}t |dd� qt ƒ  | D �]}|dkr@t}n
t |¡}t |dd� | D ]æ}|dkrlt}	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�y2   d}Y n0 t |dd� qZt ƒ  q,d S )	Nú+r   r   r   )r   ú!ú@r   )r   r   r   Z
obj2sctypeÚ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@    




r3   T©r    ÚlegacyÚflagsc              	      sÚ  ddl m} 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 < q`tjd ‰‡fd d!„}
tˆ |
d"�‰ d.‡ ‡‡fd$d%„	}| �rjtƒ  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   é   é   é   é   u   â–—u   â–ˆu   â–šu   â–�u   â–„u   â–œu   â–™u   â–Ÿ)r   é   r8   r9   r;   r:   é   é   Ú	cast_infor4   r   ÚfromÚtoZcastingr5   ÚLZrequires_pyapir8   Zsupports_unalignedr9   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"   r/   Ú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-errorsr6   N)r    )	Znumpy.core._multiarray_testsr7   r   Úsetr,   r   Ú	typecodesÚsortedr   )r    r5   r6   r7   Z
cast_tableZflags_tabler?   Zcastsr%   Úto_dictrH   rQ   r   )rN   rO   rP   rG   r   Úprint_new_cast_tableS   sr    ûü

ÿÿ
rV   Ú__main__zcan castrC   zJIn these tables, ValueError is '!', OverflowError is '@', TypeError is '#'zscalar + scalarzscalar + neg scalaréÿÿÿÿzarray + scalarzarray + neg scalarr+   zNew casting type promotion:)F)Ú__doc__Únumpyr   Úcollectionsr   r   r&   r3   rV   r   r   rS   r   r   r   r   Ú<module>   s8   
)_
