1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
U
P±dŸ`ã@sèddlZddlZddlZddlZddlZddlZddlmZm    Z    ddl
m Z ddl mZdae dZefdeeƒdejd    ejejfƒie —ŽZ d
d „Zd d „Zdd„ZGdd„dƒZeƒZddddddddddddddd d!dgZddgiZeddged<eddged<dged<dged<edddged<edddged<edddged<edddged<eddged<eddged<eddged<eddged<edddged<eddddged<eddged<d ged <d!ged!<dged<e ¡jjd"ks8e ¡jjd    kr¬ejd#kr¬e  ¡e !¡fd$kr¬e "d%d&d'g¡eddddd%ged%<ed%dd&d'ged'<eddd&ged&<Gd(d)„d)ƒZ#Gd*d+„d+ƒZ$Gd,d-„d-ƒZ%Gd.d/„d/ƒZ&dS)0éN)Úassert_Ú assert_equal)Útypeinfoé)ÚutilÚSTRINGÚ    CHARACTERÚcécCsbt ¡st d¡tdkr^d}tj t¡}t     dddd¡t     dd¡t     dd    ¡g}t 
||d
¡adS) z6
    Build the required testing extension module
 
    zNo C compiler availableNz¼
        config.add_extension('test_array_from_pyobj_ext',
                             sources=['wrapmodule.c', 'fortranobject.c'],
                             define_macros=[])
        ÚtestsÚsrcZarray_from_pyobjz wrapmodule.czfortranobject.czfortranobject.hZtest_array_from_pyobj_ext) rZhas_c_compilerÚpytestÚskipÚwrapÚosÚpathÚdirnameÚ__file__ZgetpathZbuild_module_distutils)Z config_codeÚdr ©rú]d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/f2py/tests/test_array_from_pyobj.pyÚ setup_modules
 
 
ýÿrcCst |¡d}t|ƒS)Né)rÚ array_attrsÚ flags2names)ÚarrÚflagsrrrÚ
flags_info1srcCs0g}dD]"}t|ƒtt|dƒ@r| |¡q|S)N)Ú
CONTIGUOUSÚFORTRANÚOWNDATAZ
ENSURECOPYZ ENSUREARRAYZALIGNEDZ
NOTSWAPPEDÚ    WRITEABLEZWRITEBACKIFCOPYZ UPDATEIFCOPYZBEHAVEDZ
BEHAVED_ROZCARRAYZFARRAYr)ÚabsÚgetattrrÚappend)rÚinfoZflagnamerrrr6s
 rc@s@eZdZgfdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd S)ÚIntentcCsP|dd…|_d}|D].}|dkr.|tjO}q|ttd| ¡ƒO}q||_dS)NrÚoptionalZ F2PY_INTENT_)Ú intent_listrZ F2PY_OPTIONALr#Úupperr)Úselfr(rÚirrrÚ__init__Ns zIntent.__init__cCs&| ¡}|dkrd}| |j|g¡S)NÚin_Úin)ÚlowerÚ    __class__r()r*ÚnamerrrÚ __getattr__XszIntent.__getattr__cCsdd |j¡S)Nz
intent(%s)ú,)Újoinr(©r*rrrÚ__str__^szIntent.__str__cCs
d|jS)Nz
Intent(%r)©r(r5rrrÚ__repr__aszIntent.__repr__cGs|D]}||jkrdSqdS)NFTr7)r*Únamesr1rrrÚ    is_intentds
zIntent.is_intentcGst|jƒt|ƒko|j|ŽS©N)Úlenr(r:)r*r9rrrÚis_intent_exactjszIntent.is_intent_exactN)    Ú__name__Ú
__module__Ú __qualname__r,r2r6r8r:r=rrrrr&Ms 
r&ÚBOOLÚBYTEZUBYTEÚSHORTÚUSHORTÚINTÚUINTÚLONGÚULONGZLONGLONGZ    ULONGLONGÚFLOATÚDOUBLEZCFLOATZSTRING1ZSTRING5éÚwin32)ÚDarwinÚarmZ
LONGDOUBLEZCDOUBLEZ CLONGDOUBLEc@sPeZdZiZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Z    d d„Z
dd„Z dS)ÚTypecCsˆt|tjƒrD|}d}t ¡D]&\}}t|tƒs|j|jkr|}qDq|j | ¡d¡}|dk    rb|St     
|¡}|  |¡||j| ¡<|Sr;) Ú
isinstanceÚnpÚdtyperÚitemsÚtypeÚ _type_cacheÚgetr)ÚobjectÚ__new__Ú_init)Úclsr1Zdtype0Únr+ÚobjrrrrX¸s 
 
z Type.__new__cCsð| ¡|_|jdkr>t|j}ttdƒ|_d|_t d¡|_nŽ|j     d¡r–t|jdd…}ttdƒ|_t
|jdd…pzdƒ|_t d|j›¡|_n6t|j}ttd    |jƒ|_|j d
|_t |j ¡|_|j|j ksÜt‚|j |_ |j|_dS) NrZ
NPY_STRINGrr    rrrÚSZNPY_r
)r)ÚNAMErr#rÚtype_numÚelsizerQrRÚ
startswithÚintÚbitsrTÚnumÚAssertionErrorÚcharÚ    dtypechar)r*r1r%rrrrYÈs$
 
 
 
 z
Type._initc Cs4d|j›d|j›d|j›d|j›d|j›d|j› S)NzType(z )|type_num=z, dtype=z, type=z    , elsize=z , dtypechar=)r^r_rRrTr`rgr5rrrr8ßsz Type.__repr__cs‡fdd„tˆjDƒS)Ncsg|]}ˆ |¡‘qSr©r0©Ú.0Ú_mr5rrÚ
<listcomp>æsz#Type.cast_types.<locals>.<listcomp>)Ú
_cast_dictr^r5rr5rÚ
cast_typesåszType.cast_typescs‡fdd„tDƒS)Ncsg|]}ˆ |¡‘qSrrhrir5rrrlész"Type.all_types.<locals>.<listcomp>)Ú _type_namesr5rr5rÚ    all_typesèszType.all_typescCs:t|jj}g}tD] }t|j|kr| t|ƒ¡q|Sr;©rr^Ú    alignmentror$rO©r*rcÚtypesr1rrrÚ smaller_typesës  zType.smaller_typescCsFt|jj}g}tD],}||jkr$qt|j|kr| t|ƒ¡q|Sr;rqrsrrrÚ equal_typesós 
zType.equal_typescCs:t|jj}g}tD] }t|j|kr| t|ƒ¡q|Sr;rqrsrrrÚ larger_typesýs  zType.larger_typesN) r>r?r@rUrXrYr8rnrprurvrwrrrrrOµs
rOc@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) ÚArrayc
Cs,d|j›d|j›d|j›d|j›d|j›
S)NzArray(z, z)|arr=)rTÚdimsÚintentr\rr5rrrr8szArray.__repr__cCsH||_||_||_t |¡|_||_t |j    |j
||j |¡|_ t |j tjƒsPt‚t |j ¡|_t|ƒdkr|j d¡r¾|j tj@sˆt‚|j j dr˜t‚|j j ds¨t‚|jdtj@r¼t‚nF|j tj@rÎt‚|j j dsÞt‚|j j drît‚|jdtj@st‚|dkrd|_d|_dS| d¡r`t |tjƒsHttt|ƒƒƒ‚t |¡j|Ž ¡|_nHtjtj||jdj|Ž|j d¡rŒdpŽd    d
|_|jj|ks¨t‚|jj|j j d d |jj d sØt||fƒ‚t |j¡|_t|ƒdkrx|j d¡r>|jj drt‚|jj ds&t‚|jdtj@rxt‚n:|jj dsPt‚|jj drbt‚|jdtj@sxt‚|jd|jdks’t‚|jd|jdks¬t‚|jddkrþ|jd|jdksþtt|jd|jd|j  ¡|j ¡fƒƒ‚|jddd…|jddd…ks@tt|jd|jdfƒƒ‚|jd|jdksštt|jd|jdt d|jd|jdƒt |jdƒ|fƒƒ‚| d¡rÄ|jdd|jj
ksöt‚n2|jdd|jj
ksàt‚| !|j|j ¡söt‚t |jtjƒrD|j
t"|jƒj
krD| d¡sD|jddkrD| #¡sDt‚dS)Nrr    rrrÚcache©rRÚCÚF)Úorderr!©Úwriter ééééþÿÿÿrÚcopy)$rTryrzr†ÚdeepcopyZobj_copyr\rÚcallr_r`rrrPrQÚndarrayrerÚarr_attrr<r:Z F2PY_INTENT_CrZpyarrZ
pyarr_attrÚreprÚarrayZreshapergrRÚsetflagsÚtobytesrÚ    arr_equalrOÚhas_shared_memory)r*Útypryrzr\rrrr, s” þ 
 þü*ÿ û zArray.__init__cCs|j|jkrdS||k ¡S)NF)ÚshapeÚall)r*Zarr1Zarr2rrrrcs zArray.arr_equalcCs
t|jƒSr;)Ústrrr5rrrr6hsz Array.__str__cCs@|j|jkrdSt|jtjƒs"dSt |j¡}|d|jdkS)z6Check that created array shares data with input array.TFr)r\rrPrQr‰rrrŠ)r*Zobj_attrrrrrks   zArray.has_shared_memoryN)r>r?r@r8r,rr6rrrrrrxs
Wrxc@seZdZdd„ZdS)Ú
TestIntentcCstttjjƒdkst‚tjj d¡s&t‚tjj d¡r8t‚tjj dd¡sLt‚tjj dd¡s`t‚tj d¡rpt‚dS)Nzintent(in,out)r    r.)r”rzr-Úoutrer    r:r=r5rrrÚ test_in_outvs zTestIntent.test_in_outN)r>r?r@r—rrrrr•usr•c@s"eZdZejddeddd„ƒZedd„ƒZedd    „ƒZ    d
d „Z
d d „Z ej   dddg¡ej   dddg¡ej   dddg¡dd„ƒƒƒZdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?S)@ÚTestSharedMemoryTÚclass)ZautouseZscopeÚparamscs"tˆjƒˆj_‡fdd„ˆj_dS)Ncsttˆjƒ|||ƒSr;)rxrOÚparam)r*ryrzr\©ÚrequestrrÚ<lambda>„s
ÿz-TestSharedMemory.setup_type.<locals>.<lambda>)rOr›rZrTrŒ)r*rrrœrÚ
setup_typeszTestSharedMemory.setup_typecCs.|jj d¡r&|jj}d|d|gSddgS)NrÚ1Ú2rr‚©rTr^rar`©r*r`rrrÚnum2seq‡szTestSharedMemory.num2seqcCsV|jj d¡rB|jj}d|d|d|gd|d|d|ggSdd    d
gd d d ggS)Nrr r¡Ú3Ú4Ú5Ú6rr‚rƒrKr„rr¢r£rrrÚnum23seqŽs ÿzTestSharedMemory.num23seqcCs$| dgtj|j¡}| ¡r t‚dS)Nr‚)rŒrzr-r¤rre©r*ÚarrrÚtest_in_from_2seq–sz"TestSharedMemory.test_in_from_2seqcCsx|j ¡D]h}tj|j|jd}| t|jƒgtj|¡}|j    |jj    krf| 
¡srt t |jj|jfƒƒ‚q
| 
¡r
t ‚q
dS©Nr|) rTrnrQrŒr¤rRr<rzr-r`rrer‹©r*Útr\r«rrrÚtest_in_from_2casttypešs  z'TestSharedMemory.test_in_from_2casttyperÚwÚrorr}r~ÚinpZ2seqZ23seqcCsdt|d|ƒ}tj||jj|d}|j|dkd| |j|dkrJtjj    pNtj|¡}| 
¡s`t ‚dS)z5Test if intent(in) array can be passed without copiesrd©rRrr±r€r}N) r#rQrŒrTrRrr’rzr-r    rre)r*rrr³Úseqr\r«rrrÚtest_in_nocopy£sÿzTestSharedMemory.test_in_nocopyc
Cs’tj|j|jjd}| t|jƒgtj|¡}| ¡s8t    ‚z| dgtj
j|j¡}Wn2t k
r„}zt |ƒ  d¡st‚W5d}~XYn
Xtdƒ‚dS)Nr|r‚z6failed to initialize intent(inout|inplace|cache) arrayz,intent(inout) should have failed on sequence)rQrŒr¤rTrRr<rzÚinoutrrer-Ú    TypeErrorr”raÚ SystemError)r*r\r«ÚmsgrrrÚtest_inout_2seq¯s ÿz TestSharedMemory.test_inout_2seqc
CsÐtj|j|jjdd}t|jƒt|jdƒf}| |tjj|¡}|     ¡sLt
‚tj|j|jjdd}t|jƒt|jdƒf}z| |tjj|¡}Wn2t k
rÂ}zt |ƒ  d¡s²‚W5d}~XYn
Xtdƒ‚dS)Nr~r´rr}z(failed to initialize intent(inout) arrayz2intent(inout) should have failed on improper array)rQrŒr©rTrRr<rzr-r·rreÚ
ValueErrorr”rar¹)r*r\r’r«rºrrrÚtest_f_inout_23seq½s  ÿÿz#TestSharedMemory.test_f_inout_23seqcCsPtj|j|jjd}t|jƒt|jdƒf}| |tjjj    |¡}| 
¡sLt ‚dS©Nr|r) rQrŒr©rTrRr<rzr-r    r·rre©r*r\r’r«rrrÚtest_c_inout_23seqÏsz#TestSharedMemory.test_c_inout_23seqcCsL|j ¡D]<}tj|j|jd}| t|jƒgtjj    |¡}| 
¡r
t ‚q
dSr­) rTrnrQrŒr¤rRr<rzr-r†rrer®rrrÚtest_in_copy_from_2casttypeÕsz,TestSharedMemory.test_in_copy_from_2casttypecCs6| t|jƒt|jdƒgtj|j¡}| ¡r2t‚dS©Nr)rŒr<r©rzr-rrerªrrrÚtest_c_in_from_23seqÛs þz%TestSharedMemory.test_c_in_from_23seqcCsV|j ¡D]F}tj|j|jd}| t|jƒt|jdƒgtj|¡}|     ¡r
t
‚q
dSr¾) rTrnrQrŒr©rRr<rzr-rrer®rrrÚtest_in_from_23casttypeásÿz(TestSharedMemory.test_in_from_23casttypecCst|j ¡D]d}tj|j|jdd}| t|jƒt|jdƒgtj|¡}|j    |jj    krb| 
¡snt ‚q
| 
¡r
t ‚q
dS©Nr~r´r) rTrnrQrŒr©rRr<rzr-r`rrer®rrrÚtest_f_in_from_23casttypeèsÿz*TestSharedMemory.test_f_in_from_23casttypecCst|j ¡D]d}tj|j|jd}| t|jƒt|jdƒgtjj    |¡}|j
|jj
krb|  ¡snt ‚q
|  ¡r
t ‚q
dSr¾) rTrnrQrŒr©rRr<rzr-r    r`rrer®rrrÚtest_c_in_from_23casttypeòsÿz*TestSharedMemory.test_c_in_from_23casttypecCsZ|j ¡D]J}tj|j|jdd}| t|jƒt|jdƒgtjj    |¡}| 
¡r
t ‚q
dSrÅ) rTrnrQrŒr©rRr<rzr-r†rrer®rrrÚtest_f_copy_in_from_23casttypeüsþz/TestSharedMemory.test_f_copy_in_from_23casttypecCsZ|j ¡D]J}tj|j|jd}| t|jƒt|jdƒgtjj    j
|¡}|  ¡r
t ‚q
dSr¾) rTrnrQrŒr©rRr<rzr-r    r†rrer®rrrÚtest_c_copy_in_from_23casttypesþz/TestSharedMemory.test_c_copy_in_from_23casttypec Cs>|j ¡D],}|j|jjkr q
tj|j|jd}t|jƒf}| |tj    j
j |¡}|  ¡s^t ‚| |tj    j |¡}|  ¡s|t ‚tj|j|jdd}| |tj    j
j |¡}|  ¡s°t ‚| |tj    j |¡}|  ¡sØt t|jƒƒ‚z | |tj    j |ddd…¡}Wn6tk
r.}zt|ƒ d¡s‚W5d}~XYq
Xtdƒ‚q
dS)Nr|r~r´éÿÿÿÿú(failed to initialize intent(cache) arrayz8intent(cache) should have failed on multisegmented array)rTrpr`rQrŒr¤rRr<rzr-r    r{rrer‹r¼r”rar¹)r*r¯r\r’r«rºrrrÚtest_in_cache_from_2casttype s0     ÿÿz-TestSharedMemory.test_in_cache_from_2casttypec Cs |j ¡D]}|jdkrq
|j|jjkr*q
tj|j|jd}t|jƒf}z| |t    j
j |¡Wn2t k
r}zt |ƒ d¡s€‚W5d}~XYq
Xtdƒ‚q
dS)Nrr|rËz1intent(cache) should have failed on smaller array)rTrpr^r`rQrŒr¤rRr<rzr-r{r¼r”rar¹)r*r¯r\r’rºrrrÚ$test_in_cache_from_2casttype_failure)s"
 ÿÿz5TestSharedMemory.test_in_cache_from_2casttype_failurec
Cs¦d}| |tjjd¡}|jj|ks&t‚d}| |tjjd¡}|jj|ksLt‚d}z| |tjjd¡}Wn2tk
r˜}zt|ƒ     d¡sˆ‚W5d}~XYn
Xt
dƒ‚dS)N©r‚©r‚rƒ©rÊrƒú2failed to create intent(cache|hide)|optional arrayz8intent(cache) should have failed on undefined dimensions) rŒrzr{Úhiderr’rer¼r”rar¹©r*r’r«rºrrrÚtest_cache_hidden<s"ÿÿz"TestSharedMemory.test_cache_hiddenc
Csfd}| |tjd¡}|jj|ks$t‚| |jtj||j    j
d¡sDt‚d}| |tjd¡}|jj|ksht‚| |jtj||j    j
d¡sˆt‚|jj dr |jj dr¤t‚d}| |tj jd¡}|jj|ksÊt‚| |jtj||j    j
d¡sêt‚|jj ds|jj ds
t‚d}z| |tjd¡}Wn6t k
rX}zt|ƒ d¡sH‚W5d}~XYn
Xtdƒ‚dS)    NrÎr|rÏrrrÐrÑz7intent(hide) should have failed on undefined dimensions)rŒrzrÒrr’rerrQÚzerosrTrRrr    r¼r”rar¹rÓrrrÚ test_hiddenPs2    ÿÿzTestSharedMemory.test_hiddencCsd}| |tjd¡}|jj|ks$t‚| |jtj||j    j
d¡sDt‚d}| |tjd¡}|jj|ksht‚| |jtj||j    j
d¡sˆt‚|jj dr |jj dr¤t‚d}| |tj jd¡}|jj|ksÊt‚| |jtj||j    j
d¡sêt‚|jj ds|jj ds
t‚dS)NrÎr|rÏrr) rŒrzr'rr’rerrQrÕrTrRrr    )r*r’r«rrrÚtest_optional_nonems   z#TestSharedMemory.test_optional_nonecCs@|j}t|ƒf}| |tj|¡}|jj|ks0t‚| ¡r<t‚dSr;)    r¤r<rŒrzr'rr’rerr¿rrrÚtest_optional_from_2seqs
 
z(TestSharedMemory.test_optional_from_2seqcCsx|j}t|ƒt|dƒf}| |tj|¡}|jj|ks:t‚| ¡rFt‚| |tjj    |¡}|jj|ksht‚| ¡rtt‚dSrÂ)
r©r<rŒrzr'rr’rerr    r¿rrrÚtest_optional_from_23seq†s z)TestSharedMemory.test_optional_from_23seqcCsätj|j|jjd}|jds(|jds,t‚|j}| |tj    |¡}|dd|j
ddksntt ||j
fƒƒ‚d|j
dd<|dd|j
ddkr°tjd|jjdks¶nt‚|j
|ksÄt‚|jdsÒt‚|jdràt‚dS©Nr|rrrr‚é6) rQrŒr©rTrRrrer’rzÚinplacerr‹r¿rrrÚ test_inplace‘s,:zTestSharedMemory.test_inplacecCs@|j ¡D].}||jkrq
tj|j|jd}|jj|jks@t‚|jj|jjk    sTt‚|jdsh|jdslt‚|j}| |t    j
|¡}|dd|j ddks®tt ||j fƒƒ‚d|j dd<|dd|j ddkrðtjd|jjdksönt‚|j |kst‚|jdst‚|jdr&t‚|jj|jjks
t‚q
dSrÚ) rTrnrQrŒr©rRrerr’rzrÜrr‹)r*r¯r\r’r«rrrÚtest_inplace_from_casttypes$
,$ÿz+TestSharedMemory.test_inplace_from_casttypeN)"r>r?r@r ZfixturerorŸÚpropertyr¤r©r¬r°ÚmarkZ parametrizer¶r»r½rÀrÁrÃrÄrÆrÇrÈrÉrÌrÍrÔrÖr×rØrÙrÝrÞrrrrr˜s>
 
 
        
 
  r˜)'rÚsysr†Úplatformr ÚnumpyrQZ numpy.testingrrZnumpy.core.multiarrayrZ    _typeinfoÚrrZ_tiÚdictrTrdrrrrrr&rzrormZintprRÚitemsizeZ clongdoubleÚsystemÚ    processorÚextendrOrxr•r˜rrrrÚ<module>sž  ÿþ!ï
 
 
 
 
 
$ÿþü
ý
Qo