o
    z¨Êhç\  ã                   @   sº  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 d dlZd dl	m
Z
mZ d dlmZ ddlmZ daed7de d¡ie¤ŽZd	d
„ Zdd„ Zdd„ Zdd„ ZG dd„ dƒZeƒ Zg d¢ZddgiZed dg ed< ed dg ed< dged< dged< ed ddg ed< ed ddg ed< ed ddg ed< ed ddg ed< ed dg ed< ed dg ed< ed dg ed< ed dg ed< ed ddg ed< ed g d ¢ ed!< ed d"g ed"< d#ged#< d$ged$< dged< e ¡ jjd%k�s	e ¡ jjd&k�r?ejd'k�r?e  ¡ e !¡ fd(k�r?e "g d)¢¡ ed g d*¢ ed+< ed+ g d,¢ ed-< ed! d"d.g ed.< G d/d0„ d0ƒZ#G d1d2„ d2ƒZ$G d3d4„ d4ƒZ%G d5d6„ d6ƒZ&dS )8é    N)ÚPath)Úassert_Úassert_equal)Úc_names_dicté   )ÚutilÚ	CHARACTERÚcc                  C   s   t tƒ ¡ jd } | d S )NÚsrcÚarray_from_pyobj)r   Ú__file__ÚresolveÚparent)Útestroot© r   úX/var/www/html/env/lib/python3.10/site-packages/numpy/f2py/tests/test_array_from_pyobj.pyÚget_testdir   s   r   c                  C   s*   t du rtƒ d g} tj| dd�a dS dS )z6
    Build the required testing extension module

    Nzwrapmodule.cÚtest_array_from_pyobj_ext)Úmodule_name)Úwrapr   r   Úbuild_meson)r
   r   r   r   Úsetup_module   s
   ÿür   c                 C   s   t  | ¡d }t|ƒS )Né   )r   Úarray_attrsÚflags2names)ÚarrÚflagsr   r   r   Ú
flags_info)   s   r   c                 C   s0   g }dD ]}t | ƒtt|dƒ@ r| |¡ q|S )N)Ú
CONTIGUOUSÚFORTRANÚOWNDATAÚ
ENSURECOPYÚENSUREARRAYÚALIGNEDÚ
NOTSWAPPEDÚ	WRITEABLEÚWRITEBACKIFCOPYÚUPDATEIFCOPYÚBEHAVEDÚ
BEHAVED_ROÚCARRAYÚFARRAYr   )ÚabsÚgetattrr   Úappend)r   ÚinfoÚflagnamer   r   r   r   .   s   
€r   c                   @   s@   e Zd Zg fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚIntentc                 C   sP   |d d … | _ d}|D ]}|dkr|tjO }q|ttd| ¡  ƒO }q|| _d S )Nr   ÚoptionalÚF2PY_INTENT_)Úintent_listr   ÚF2PY_OPTIONALr-   Úupperr   )Úselfr4   r   Úir   r   r   Ú__init__F   s   
zIntent.__init__c                 C   s&   |  ¡ }|dkr
d}|  | j|g ¡S )NÚin_Úin)ÚlowerÚ	__class__r4   )r7   Únamer   r   r   Ú__getattr__P   s   zIntent.__getattr__c                 C   s   dd  | j¡ S )Nz
intent(%s)ú,)Újoinr4   ©r7   r   r   r   Ú__str__V   s   zIntent.__str__c                 C   s
   d| j  S )Nz
Intent(%r)©r4   rB   r   r   r   Ú__repr__Y   ó   
zIntent.__repr__c                    s   t ‡ fdd„|D ƒƒS )Nc                 3   s   � | ]}|ˆ j v V  qd S ©NrD   )Ú.0r>   rB   r   r   Ú	<genexpr>]   s   € z#Intent.is_intent.<locals>.<genexpr>)Úall©r7   Únamesr   rB   r   Ú	is_intent\   s   zIntent.is_intentc                 G   s   t | jƒt |ƒko| j|Ž S rG   )Úlenr4   rM   rK   r   r   r   Úis_intent_exact_   s   zIntent.is_intent_exactN)	Ú__name__Ú
__module__Ú__qualname__r9   r?   rC   rE   rM   rO   r   r   r   r   r1   E   s    
r1   )ÚBOOLÚBYTEÚUBYTEÚSHORTÚUSHORTÚINTÚUINTÚLONGÚULONGÚLONGLONGÚ	ULONGLONGÚFLOATÚDOUBLEÚCFLOATÚSTRING1ÚSTRING5r   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   )rY   r^   r_   r_   r`   ra   rb   é   é   Úwin32)ÚDarwinÚarm)Ú
LONGDOUBLEÚCDOUBLEÚCLONGDOUBLE)r[   r^   r_   rh   rh   )r`   ri   rj   rj   ri   c                   @   sP   e Zd Zi Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTypec                 C   sˆ   t |tjƒr"|}d }t ¡ D ]\}}t |tƒs!|j|ju r!|} nq| j | ¡ d ¡}|d ur1|S t	 
| ¡}| |¡ || j| ¡ < |S rG   )Ú
isinstanceÚnpÚdtyper   ÚitemsÚtypeÚ_type_cacheÚgetr6   ÚobjectÚ__new__Ú_init)Úclsr>   Údtype0Únr8   Úobjr   r   r   rt   ­   s   €

zType.__new__c                 C   sì   |  ¡ | _| jdkrt| j }ttdƒ| _d| _t d¡| _nE| j 	d¡rKt| jd d…  }ttdƒ| _t
| jdd … p=dƒ| _t d| j› �¡| _nt| j }ttd	| j ƒ| _|j| _t |j¡| _| j|jkslJ ‚|j| _|j| _d S )
Nr   Ú
NPY_STRINGr   r	   ÚSTRINGr   r   ÚSÚNPY_)r6   ÚNAMEr   r-   r   Útype_numÚelsizerm   rn   Ú
startswithÚintÚitemsizerp   ÚnumÚcharÚ	dtypechar)r7   r>   r/   r   r   r   ru   ½   s$   



z
Type._initc                 C   s4   d| j › d| j› d| j› d| j› d| j› d| j› �S )NzType(z)|type_num=z, dtype=z, type=z	, elsize=z, dtypechar=)r~   r   rn   rp   r€   r†   rB   r   r   r   rE   Ô   s   ÿþþýzType.__repr__c                    s   ‡ fdd„t ˆ j D ƒS )Nc                    ó   g | ]}ˆ   |¡‘qS r   ©r=   ©rH   Ú_mrB   r   r   Ú
<listcomp>Û   ó    z#Type.cast_types.<locals>.<listcomp>)Ú
_cast_dictr~   rB   r   rB   r   Ú
cast_typesÚ   s   zType.cast_typesc                    s   ‡ fdd„t D ƒS )Nc                    r‡   r   rˆ   r‰   rB   r   r   r‹   Þ   rŒ   z"Type.all_types.<locals>.<listcomp>)Ú_type_namesrB   r   rB   r   Ú	all_typesÝ   s   zType.all_typesc                 C   s:   t | j j}g }tD ]}t | j|k r| t|ƒ¡ q
|S rG   ©r   r~   Ú	alignmentr�   r.   rk   ©r7   ÚbitsÚtypesr>   r   r   r   Úsmaller_typesà   ó   €zType.smaller_typesc                 C   sF   t | j j}g }tD ]}|| jkrq
t | j|kr | t|ƒ¡ q
|S rG   r‘   r“   r   r   r   Úequal_typesè   s   
€zType.equal_typesc                 C   s:   t | j j}g }tD ]}t | j|kr| t|ƒ¡ q
|S rG   r‘   r“   r   r   r   Úlarger_typesò   r—   zType.larger_typesN)rP   rQ   rR   rq   rt   ru   rE   rŽ   r�   r–   r˜   r™   r   r   r   r   rk   ª   s    
rk   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚArrayc              
   C   s,   d| j › d| j› d| j› d| j› d| j› �
S )NzArray(z, z)|arr=)rp   ÚdimsÚintentry   r   rB   r   r   r   rE   ý   s
   ÿÿzArray.__repr__c                 C   sF  || _ || _|| _t |¡| _|| _t |j	|j
||j|¡| _t| jtjƒs(J ‚t | j¡| _t|ƒdkr€| j d¡r^|jtj@ sCJ ‚| jjd rKJ ‚| jjd sSJ ‚| jd tj@ r]J ‚n"|jtj@ rfJ ‚| jjd snJ ‚| jjd rvJ ‚| jd tj@ s€J ‚|d u rŒd | _d | _d S | d¡r«t|tjƒsŸJ tt |ƒƒƒ‚t |¡j|Ž  ¡ | _n!tjtj||jd�j|Ž | j d¡r¿dpÀd	d
�| _| jj|ksÌJ ‚| jj| jjd d� | jjd sãJ ||fƒ‚t | j¡| _t|ƒdk�r3| j d¡�r| jjd �rJ ‚| jjd �s
J ‚| jd tj@ �rJ ‚n| jjd �sJ ‚| jjd �r(J ‚| jd tj@ �s3J ‚| jd | jd k�s@J ‚| jd | jd k�sMJ ‚| jd dk�rv| jd | jd k�svJ t| jd | jd | j ¡ | j ¡ fƒƒ‚| jd dd … | jd dd … k�s—J t| jd | jd fƒƒ‚| jd | jd k�sÄJ t| jd | jd td| jd  | jd  ƒt| jd ƒ|fƒƒ‚| d¡�rÙ| jd d | j j
k�sØJ ‚n| jd d | j j
k�sçJ ‚|   | j| j¡�sòJ ‚t| jtjƒ�r|j
t!|jƒj
k�r| d¡�s| jd dk�r|  "¡ �s!J ‚d S d S d S d S d S )Nr   r	   r   r   r   Úcache©rn   ÚCÚF)Úorderr%   ©Úwriter    é   é   é   éþÿÿÿr   Úcopy)#rp   r›   rœ   r¨   ÚdeepcopyÚobj_copyry   r   Úcallr   r€   r   r   rl   rm   Úndarrayr   Úarr_attrrN   rM   ÚF2PY_INTENT_Cr   ÚpyarrÚ
pyarr_attrÚreprÚarrayÚreshaper†   rn   ÚsetflagsÚtobytesr   Ú	arr_equalrk   Úhas_shared_memory)r7   Útypr›   rœ   ry   r   r   r   r9     s–   þ
þü*ÿûýzArray.__init__c                 C   s   |j |j krdS ||k ¡ S )NF)ÚshaperJ   )r7   Úarr1Úarr2r   r   r   r¶   X  s   zArray.arr_equalc                 C   s
   t | jƒS rG   )Ústrr   rB   r   r   r   rC   ]  rF   zArray.__str__c                 C   s@   | j | ju rdS t| j tjƒsdS t | j ¡}|d | jd kS )z6Check that created array shares data with input array.TFr   )ry   r   rl   rm   r¬   r   r   r­   )r7   Úobj_attrr   r   r   r·   `  s   zArray.has_shared_memoryN)rP   rQ   rR   rE   r9   r¶   rC   r·   r   r   r   r   rš   û   s    Wrš   c                   @   s   e Zd Zdd„ ZdS )Ú
TestIntentc                 C   st   t tjjƒdks
J ‚tjj d¡sJ ‚tjj d¡rJ ‚tjj dd¡s&J ‚tjj dd¡s0J ‚tj d¡r8J ‚d S )Nzintent(in,out)r	   r;   )r¼   rœ   r:   Úoutr	   rM   rO   rB   r   r   r   Útest_in_outk  s   zTestIntent.test_in_outN)rP   rQ   rR   rÀ   r   r   r   r   r¾   j  s    r¾   c                   @   s"  e Zd Zejdded�dd„ ƒZedd„ ƒZedd	„ ƒZ	d
d„ Z
dd„ Zej dddg¡ej dddg¡ej dddg¡dd„ ƒƒƒZdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?S )@ÚTestSharedMemoryTÚclass)ÚautouseÚscopeÚparamsc                    s"   t ˆ jƒˆ j_‡ fdd„ˆ j_d S )Nc                    s   t tˆ jƒ|||ƒS rG   )rš   rk   Úparam)r7   r›   rœ   ry   ©Úrequestr   r   Ú<lambda>y  s    ÿz-TestSharedMemory.setup_type.<locals>.<lambda>)rk   rÆ   rv   rp   r²   )r7   rÈ   r   rÇ   r   Ú
setup_typev  s   zTestSharedMemory.setup_typec                 C   s.   | j j d¡r| j j}d| d| gS ddgS )Nr{   Ú1Ú2r   r¤   ©rp   r~   r�   r€   ©r7   r€   r   r   r   Únum2seq|  s   zTestSharedMemory.num2seqc                 C   sR   | j j d¡r!| j j}d| d| d| gd| d| d| ggS g d¢g d	¢gS )
Nr{   rË   rÌ   Ú3Ú4Ú5Ú6)r   r¤   r¥   )rc   r¦   r   rÍ   rÎ   r   r   r   Únum23seqƒ  s   ÿzTestSharedMemory.num23seqc                 C   s$   |   dgtj| j¡}| ¡ rJ ‚d S )Nr¤   )r²   rœ   r:   rÏ   r·   ©r7   Úar   r   r   Útest_in_from_2seq‹  s   z"TestSharedMemory.test_in_from_2seqc                 C   sx   | j  ¡ D ]4}tj| j|jd�}|  t| jƒgtj|¡}|j	| j j	kr3| 
¡ s2J t| j j|jfƒƒ‚q| 
¡ r9J ‚qd S ©Nrž   )rp   rŽ   rm   r²   rÏ   rn   rN   rœ   r:   r€   r·   r±   ©r7   Útry   rÖ   r   r   r   Útest_in_from_2casttype�  s    úz'TestSharedMemory.test_in_from_2casttyper£   ÚwÚror¡   rŸ   r    ÚinpÚ2seqÚ23seqc                 C   sd   t | d| ƒ}tj|| jj|d�}|j|dkd� |  |j|dkr%tjj	p'tj|¡}| 
¡ s0J ‚dS )z5Test if intent(in) array can be passed without copiesr„   ©rn   r¡   rÜ   r¢   rŸ   N)r-   rm   r²   rp   rn   r´   r¹   rœ   r:   r	   r·   )r7   r£   r¡   rÞ   Úseqry   rÖ   r   r   r   Útest_in_nocopy˜  s   ÿzTestSharedMemory.test_in_nocopyc              
   C   s�   t j| j| jjd�}|  t| jƒgtj|¡}| ¡ sJ ‚z|  dgtj	j| j¡}W tdƒ‚ t
yG } zt|ƒ d¡s<‚ W Y d }~d S d }~ww )Nrž   r¤   z6failed to initialize intent(inout|inplace|cache) arrayz,intent(inout) should have failed on sequence)rm   r²   rÏ   rp   rn   rN   rœ   Úinoutr·   r:   Ú	TypeErrorr¼   r�   ÚSystemError)r7   ry   rÖ   Úmsgr   r   r   Útest_inout_2seq¤  s   ûÿþ€ÿz TestSharedMemory.test_inout_2seqc              
   C   sÎ   t j| j| jjdd�}t| jƒt| jd ƒf}|  |tjj|¡}| 	¡ s&J ‚t j| j| jjdd�}t| jƒt| jd ƒf}z|  |tjj|¡}W tdƒ‚ t
yf } zt|ƒ d¡s[‚ W Y d }~d S d }~ww )Nr    rá   r   rŸ   z(failed to initialize intent(inout) arrayz2intent(inout) should have failed on improper array)rm   r²   rÔ   rp   rn   rN   rœ   r:   rä   r·   Ú
ValueErrorr¼   r�   ræ   )r7   ry   r¹   rÖ   rç   r   r   r   Útest_f_inout_23seq²  s&   ÿûÿþ€ÿz#TestSharedMemory.test_f_inout_23seqc                 C   sP   t j| j| jjd�}t| jƒt| jd ƒf}|  |tjjj	|¡}| 
¡ s&J ‚d S ©Nrž   r   )rm   r²   rÔ   rp   rn   rN   rœ   r:   r	   rä   r·   ©r7   ry   r¹   rÖ   r   r   r   Útest_c_inout_23seqÄ  s   z#TestSharedMemory.test_c_inout_23seqc                 C   sL   | j  ¡ D ]}tj| j|jd�}|  t| jƒgtjj	|¡}| 
¡ r#J ‚qd S rØ   )rp   rŽ   rm   r²   rÏ   rn   rN   rœ   r:   r¨   r·   rÙ   r   r   r   Útest_in_copy_from_2casttypeÊ  s
   ýz,TestSharedMemory.test_in_copy_from_2casttypec                 C   s6   |   t| jƒt| jd ƒgtj| j¡}| ¡ rJ ‚d S ©Nr   )r²   rN   rÔ   rœ   r:   r·   rÕ   r   r   r   Útest_c_in_from_23seqÐ  s
   þz%TestSharedMemory.test_c_in_from_23seqc                 C   sV   | j  ¡ D ]#}tj| j|jd�}|  t| jƒt| jd ƒgtj|¡}| 	¡ r(J ‚qd S rë   )
rp   rŽ   rm   r²   rÔ   rn   rN   rœ   r:   r·   rÙ   r   r   r   Útest_in_from_23casttypeÖ  s   ÿüz(TestSharedMemory.test_in_from_23casttypec                 C   st   | j  ¡ D ]2}tj| j|jdd�}|  t| jƒt| jd ƒgtj|¡}|j	| j j	kr1| 
¡ s0J ‚q| 
¡ r7J ‚qd S ©Nr    rá   r   )rp   rŽ   rm   r²   rÔ   rn   rN   rœ   r:   r€   r·   rÙ   r   r   r   Útest_f_in_from_23casttypeÝ  s   ÿùz*TestSharedMemory.test_f_in_from_23casttypec                 C   st   | j  ¡ D ]2}tj| j|jd�}|  t| jƒt| jd ƒgtjj	|¡}|j
| j j
kr1| ¡ s0J ‚q| ¡ r7J ‚qd S rë   )rp   rŽ   rm   r²   rÔ   rn   rN   rœ   r:   r	   r€   r·   rÙ   r   r   r   Útest_c_in_from_23casttypeç  s   ÿùz*TestSharedMemory.test_c_in_from_23casttypec                 C   sZ   | j  ¡ D ]%}tj| j|jdd�}|  t| jƒt| jd ƒgtjj	|¡}| 
¡ r*J ‚qd S rò   )rp   rŽ   rm   r²   rÔ   rn   rN   rœ   r:   r¨   r·   rÙ   r   r   r   Útest_f_copy_in_from_23casttypeñ  s   þûz/TestSharedMemory.test_f_copy_in_from_23casttypec                 C   sZ   | j  ¡ D ]%}tj| j|jd�}|  t| jƒt| jd ƒgtjj	j
|¡}| ¡ r*J ‚qd S rë   )rp   rŽ   rm   r²   rÔ   rn   rN   rœ   r:   r	   r¨   r·   rÙ   r   r   r   Útest_c_copy_in_from_23casttypeù  s   þûz/TestSharedMemory.test_c_copy_in_from_23casttypec                 C   s6  | j  ¡ D ]“}|j| j jkrqtj| j|jd�}t| jƒf}|  |tj	j
j|¡}| ¡ s.J ‚|  |tj	j|¡}| ¡ s=J ‚tj| j|jdd�}|  |tj	j
j|¡}| ¡ sWJ ‚|  |tj	j|¡}| ¡ skJ t|jƒƒ‚z|  |tj	j|d d d… ¡}W tdƒ‚ ty˜ } zt|ƒ d¡sŽ‚ W Y d }~qd }~ww d S )Nrž   r    rá   éÿÿÿÿú(failed to initialize intent(cache) arrayz8intent(cache) should have failed on multisegmented array)rp   r�   r€   rm   r²   rÏ   rn   rN   rœ   r:   r	   r�   r·   r±   ré   r¼   r�   ræ   )r7   rÚ   ry   r¹   rÖ   rç   r   r   r   Útest_in_cache_from_2casttype  s8   ÿûÿþ€ÿìz-TestSharedMemory.test_in_cache_from_2casttypec                 C   sÐ   | j  ¡ D ]`}|jdkrq|j| j jkrqt |jtj¡}|r.t| j	d ƒt 
|j¡jkr.qtj| j	|jd�}t| j	ƒf}z|  |tjj|¡ W tdƒ‚ tye } zt|ƒ d¡s[‚ W Y d }~qd }~ww d S )Nr{   r   rž   rø   z1intent(cache) should have failed on smaller array)rp   r�   r~   r€   rm   Ú
issubdtypern   Úintegerr‚   rÏ   ÚiinfoÚmaxr²   rN   rœ   r:   r�   ré   r¼   r�   ræ   )r7   rÚ   Úis_intry   r¹   rç   r   r   r   Ú$test_in_cache_from_2casttype_failure  s0   
 ÿûÿþ€ÿòz5TestSharedMemory.test_in_cache_from_2casttype_failurec              
   C   s¤   d}|   |tjjd ¡}|jj|ksJ ‚d}|   |tjjd ¡}|jj|ks&J ‚d}z|   |tjjd ¡}W t	dƒ‚ tyQ } zt|ƒ d¡sF‚ W Y d }~d S d }~ww )N©r¤   ©r¤   r¥   ©r÷   r¥   ú2failed to create intent(cache|hide)|optional arrayz8intent(cache) should have failed on undefined dimensions)
r²   rœ   r�   Úhider   r¹   ré   r¼   r�   ræ   ©r7   r¹   rÖ   rç   r   r   r   Útest_cache_hidden5  s(   ÿûÿþ€ÿz"TestSharedMemory.test_cache_hiddenc              
   C   s\  d}|   |tjd ¡}|jj|ksJ ‚| |jtj|| jj	d�¡s"J ‚d}|   |tjd ¡}|jj|ks4J ‚| |jtj|| jj	d�¡sDJ ‚|jj
d rP|jj
d rRJ ‚d}|   |tjjd ¡}|jj|kseJ ‚| |jtj|| jj	d�¡suJ ‚|jj
d s�|jj
d sƒJ ‚d}z|   |tjd ¡}W tdƒ‚ ty­ } zt|ƒ d¡s¢‚ W Y d }~d S d }~ww )	Nr   rž   r  r   r   r  r  z7intent(hide) should have failed on undefined dimensions)r²   rœ   r  r   r¹   r¶   rm   Úzerosrp   rn   r   r	   ré   r¼   r�   ræ   r  r   r   r   Útest_hiddenI  s8      ÿûÿþ€ÿzTestSharedMemory.test_hiddenc                 C   s
  d}|   |tjd ¡}|jj|ksJ ‚| |jtj|| jj	d�¡s"J ‚d}|   |tjd ¡}|jj|ks4J ‚| |jtj|| jj	d�¡sDJ ‚|jj
d rP|jj
d rRJ ‚d}|   |tjjd ¡}|jj|kseJ ‚| |jtj|| jj	d�¡suJ ‚|jj
d s�|jj
d sƒJ ‚d S )Nr   rž   r  r   r   )r²   rœ   r2   r   r¹   r¶   rm   r  rp   rn   r   r	   )r7   r¹   rÖ   r   r   r   Útest_optional_nonef  s       z#TestSharedMemory.test_optional_nonec                 C   s@   | j }t|ƒf}|  |tj|¡}|jj|ksJ ‚| ¡ rJ ‚d S rG   )rÏ   rN   r²   rœ   r2   r   r¹   r·   rì   r   r   r   Útest_optional_from_2seqx  s
   
z(TestSharedMemory.test_optional_from_2seqc                 C   sx   | j }t|ƒt|d ƒf}|  |tj|¡}|jj|ksJ ‚| ¡ r#J ‚|  |tjj|¡}|jj|ks4J ‚| ¡ r:J ‚d S rï   )	rÔ   rN   r²   rœ   r2   r   r¹   r·   r	   rì   r   r   r   Útest_optional_from_23seq  s   z)TestSharedMemory.test_optional_from_23seqc                 C   sæ   t j| j| jjd�}|jd s|jd sJ ‚|j}|  |tj|¡}|d d |j	d d ks7J t
||j	fƒƒ‚d|j	d d< |d d |j	d d   krYt jd| jjd�ks\J ‚ J ‚|j	|u scJ ‚|jd sjJ ‚|jd rqJ ‚d S ©Nrž   r   r   r   r¤   é6   )rm   r²   rÔ   rp   rn   r   r¹   rœ   Úinplacer   r±   rì   r   r   r   Útest_inplaceŠ  s   ,<zTestSharedMemory.test_inplacec                 C   s:  | j  ¡ D ]•}|| j u rqtj| j|jd�}|jj |j ksJ ‚|jj | j j us)J ‚|jd s3|jd s5J ‚|j}|  |tj	|¡}|d d |j
d d ksVJ t||j
fƒƒ‚d|j
d d< |d d |j
d d   krxtjd| j jd�ks{J ‚ J ‚|j
|u s‚J ‚|jd s‰J ‚|jd r�J ‚|jj | j j u sšJ ‚qd S r  )rp   rŽ   rm   r²   rÔ   rn   r   r¹   rœ   r  r   r±   )r7   rÚ   ry   r¹   rÖ   r   r   r   Útest_inplace_from_casttype–  s&   
,$ÿðz+TestSharedMemory.test_inplace_from_casttypeN)"rP   rQ   rR   ÚpytestÚfixturer�   rÊ   ÚpropertyrÏ   rÔ   r×   rÛ   ÚmarkÚparametrizerã   rè   rê   rí   rî   rð   rñ   ró   rô   rõ   rö   rù   rÿ   r  r  r	  r
  r  r  r  r   r   r   r   rÁ   t  s@    


		

rÁ   r   )'ÚosÚsysr¨   Úplatformr  Úpathlibr   Únumpyrm   Únumpy.testingr   r   Únumpy._core._type_aliasesr   Ú_c_names_dictÚ r   r   Údictrn   r   r   r   r   r1   rœ   r�   r�   Úintprƒ   Úclongdoubler’   ÚsystemÚ	processorÚextendrk   rš   r¾   rÁ   r   r   r   r   Ú<module>   sj    ÿþ





$Qo
