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
U
O±dòã@sÌdZddlZddlZddlZddlmZejddddd„ƒZej    j
ed    d
d d „ƒZ ej      d ej d¡dd„ƒZej      d ej d¡dd„ƒZej      dejejejg¡dd„ƒZdd„Zdd„Zdd„ZdS)zÛ
This file adds basic tests to test the NEP 50 style promotion compatibility
mode.  Most of these test are likely to be simply deleted again once NEP 50
is adopted in the main test suite.  A few may be moved elsewhere.
éN)ÚIS_WASMÚmoduleT)ZscopeZautouseccs&t ¡}t d¡dVt |¡dS)NZ weak_and_warn)ÚnpZ_get_promotion_stateÚ_set_promotion_state)Ústate©rú]d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/core/tests/test_nep50_promotions.pyÚ_weak_promotion_enableds
r    z'wasm doesn't have support for fp errors)Úreasonc
Csltjtddt d¡d}W5QRX|jtjks8t‚tjtdd t dgtj¡t d¡}W5QRX|jtjks|t‚tjtdd&t dgtj¡tjdtjd}W5QRX|jtjksÆt‚tjtdd,tj    ddt d¡d    }W5QRXW5QRX|jtjkst‚t t
¡}t  d¡d
}W5QRXt |  t¡jƒ}| d¡s\t‚t |  t¡jƒ}| d ¡s|t‚t|ƒd ksŽt‚t |¡sžt‚|jtj ks°t‚t d gtj ¡t d ¡k}|d dksÜt‚tjtdd t d gtj ¡t d ¡}W5QRX|jtjks"t‚tjtdd t dgtj ¡t d¡}W5QRX|jtjksht‚dS)Nzresult dtype changed©Úmatchéé©ÚdtypeÚraise©ZoverédéÈg;%_¸ƒnËTZoverflowrgš™™™™™¹?Fgð?é)ÚpytestÚwarnsÚ UserWarningrÚuint8rÚAssertionErrorÚarrayÚint64ÚerrstateÚWarningÚfloat32ÚstrÚpopÚmessageÚ
startswithÚRuntimeWarningÚlenÚisinfÚfloat64)ÚresZrecwarnÚwarningrrrÚtest_nep50_exampless<$*" $$r*rZ
AllIntegerc
Cs’t d¡t |¡j}tt |¡jƒ}tjdd(t     t
¡|dƒ|}W5QRXW5QRX|j|ksnt ‚tj d|d|}|j|ksŽt ‚dS)NÚweakÚwarnrrr) rrrÚtypeÚintZiinfoÚmaxrrrr$rr)rÚ scalar_typeZmaxintr(rrrÚtest_nep50_weak_integersFs
   r1ZAllFloatc    CsDt d¡t |¡j}tt |¡jƒd}|dkr~t t    ¡|dƒ|W5QRXt t    ¡tj
d|d|W5QRXnÂ|dkr²z t |ƒWnt k
r°t  d¡YnXt t¡|dƒ|}W5QRX|j|ksât‚|tjksðt‚t t¡ tjtj
d|d||d}W5QRX|j|ks0t‚|tjks@t‚dS)Nr+rZdDGr rZgGz)`huge_int -> string -> longdouble` failed)rrrr-r.Zfinfor/rÚraisesÚ OverflowErrorrr Ú
ValueErrorÚskiprr$rÚinfÚadd)rr0Z too_big_intr(rrrÚ%test_nep50_weak_integers_with_inexactYs*
      $r8Úopc    Cs¬t d¡|t d¡dƒ}||ddƒks,t‚|jtjksF|jtksFt‚t t¡|t d¡dƒW5QRX|t     d¡dƒ}||ddƒksŽt‚|jtj    ks¨|jtks¨t‚dS)Nr+réièg@g@)
rrrrrÚboolrr2r3r)r9r(rrrÚtest_weak_promotion_scalar_path„s
 r<c    CsPt d¡tjtddt d¡tddƒ}W5QRXt|ƒtjksLt‚dS)Nr+z
.*overflowr rré,)    rrrrr$Z    complex64Úcomplexr-r)r(rrrÚtest_nep50_complex_promotion—s
 r?c    CsŒt d¡tjtddt dgtj¡dW5QRXtjtddt d¡dW5QRXtjtddt d¡dW5QRXdS)Nr+z.*uint8r r r=z)Python integer -1 out of bounds for uint8éÿÿÿÿ)rrrr2r3rrrrrrÚ$test_nep50_integer_conversion_errors s
ÿrAcCsDt d¡t d¡}|djtjks(t‚|ddjtjks@t‚dS)NÚlegacyr lr)rrrrr'r)ZarrrrrÚtest_nep50_integer_regression°s
 
rC)Ú__doc__ÚoperatorÚnumpyrrZ numpy.testingrZfixturer    ÚmarkZskipifr*Z parametrizeZ    typecodesr1r8r7ÚpowÚeqr<r?rArCrrrrÚ<module>s"  
 
.
 
*