U
    ÉZj$  ã                   @   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   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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   sT  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 nJ tk
�r   d}Y n2 tk
�r    d}Y n tk
�r8   d}Y nX 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dœ}tddddgƒ}|dddƒ‰|ƒ }i ‰tƒ ‰ |D ]²}ˆ  |d ¡ ˆ  |d ¡ |d ˆk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 < qdtjd! ‰‡fd"d#„}
tˆ |
d$�‰ d.‡ ‡‡fd%d&„	}| �rntƒ  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   é   r9   r:   r<   r;   é   é   Ú	cast_infor    r5   r6   ÚfromÚtoZcastingÚLZrequires_pyapir9   Zsupports_unalignedr:   Zno_floatingpoint_errorsr<   r4   ÚAllc                    sB   t  | j¡}zˆ  |j¡}W n tk
r6   t j}Y nX ||jfS r   )r   r   r.   Úindexr"   r/   Úinf)Úxr   Zindx)Útypesr   r   Úsorter†   s    z$print_new_cast_table.<locals>.sorter)Úkeyc                    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-errorsN)r    )	Znumpy.core._multiarray_testsr7   r   Úsetr,   r   Ú	typecodesÚsortedr   )r    r5   r6   r7   Z
cast_tableZflags_tabler@   Zcastsr%   Úto_dictrI   rR   r   )rO   rP   rQ   rH   r   Úprint_new_cast_tableS   st    ú	    ü

0rW   Ú__main__zcan castrD   zJIn these tables, ValueError is '!', OverflowError is '@', TypeError is '#'zscalar + scalarzscalar + neg scalarr8   zarray + scalarzarray + neg scalarr+   zNew casting type promotion:)F)Ú__doc__Únumpyr   Úcollectionsr   r   r&   r3   rW   r   r   rT   r   r   r   r   Ú<module>   s8   
)`
