You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
3.4 KiB
255 lines
3.4 KiB
2 years ago
|
import sys
|
||
|
import datetime as dt
|
||
|
|
||
|
import pytest
|
||
|
import numpy as np
|
||
|
|
||
|
b = np.bool_()
|
||
|
u8 = np.uint64()
|
||
|
i8 = np.int64()
|
||
|
f8 = np.float64()
|
||
|
c16 = np.complex128()
|
||
|
U = np.str_()
|
||
|
S = np.bytes_()
|
||
|
|
||
|
|
||
|
# Construction
|
||
|
class D:
|
||
|
def __index__(self) -> int:
|
||
|
return 0
|
||
|
|
||
|
|
||
|
class C:
|
||
|
def __complex__(self) -> complex:
|
||
|
return 3j
|
||
|
|
||
|
|
||
|
class B:
|
||
|
def __int__(self) -> int:
|
||
|
return 4
|
||
|
|
||
|
|
||
|
class A:
|
||
|
def __float__(self) -> float:
|
||
|
return 4.0
|
||
|
|
||
|
|
||
|
np.complex64(3j)
|
||
|
np.complex64(A())
|
||
|
np.complex64(C())
|
||
|
np.complex128(3j)
|
||
|
np.complex128(C())
|
||
|
np.complex128(None)
|
||
|
np.complex64("1.2")
|
||
|
np.complex128(b"2j")
|
||
|
|
||
|
np.int8(4)
|
||
|
np.int16(3.4)
|
||
|
np.int32(4)
|
||
|
np.int64(-1)
|
||
|
np.uint8(B())
|
||
|
np.uint32()
|
||
|
np.int32("1")
|
||
|
np.int64(b"2")
|
||
|
|
||
|
np.float16(A())
|
||
|
np.float32(16)
|
||
|
np.float64(3.0)
|
||
|
np.float64(None)
|
||
|
np.float32("1")
|
||
|
np.float16(b"2.5")
|
||
|
|
||
|
if sys.version_info >= (3, 8):
|
||
|
np.uint64(D())
|
||
|
np.float32(D())
|
||
|
np.complex64(D())
|
||
|
|
||
|
np.bytes_(b"hello")
|
||
|
np.bytes_("hello", 'utf-8')
|
||
|
np.bytes_("hello", encoding='utf-8')
|
||
|
np.str_("hello")
|
||
|
np.str_(b"hello", 'utf-8')
|
||
|
np.str_(b"hello", encoding='utf-8')
|
||
|
|
||
|
# Array-ish semantics
|
||
|
np.int8().real
|
||
|
np.int16().imag
|
||
|
np.int32().data
|
||
|
np.int64().flags
|
||
|
|
||
|
np.uint8().itemsize * 2
|
||
|
np.uint16().ndim + 1
|
||
|
np.uint32().strides
|
||
|
np.uint64().shape
|
||
|
|
||
|
# Time structures
|
||
|
np.datetime64()
|
||
|
np.datetime64(0, "D")
|
||
|
np.datetime64(0, b"D")
|
||
|
np.datetime64(0, ('ms', 3))
|
||
|
np.datetime64("2019")
|
||
|
np.datetime64(b"2019")
|
||
|
np.datetime64("2019", "D")
|
||
|
np.datetime64(np.datetime64())
|
||
|
np.datetime64(dt.datetime(2000, 5, 3))
|
||
|
np.datetime64(dt.date(2000, 5, 3))
|
||
|
np.datetime64(None)
|
||
|
np.datetime64(None, "D")
|
||
|
|
||
|
np.timedelta64()
|
||
|
np.timedelta64(0)
|
||
|
np.timedelta64(0, "D")
|
||
|
np.timedelta64(0, ('ms', 3))
|
||
|
np.timedelta64(0, b"D")
|
||
|
np.timedelta64("3")
|
||
|
np.timedelta64(b"5")
|
||
|
np.timedelta64(np.timedelta64(2))
|
||
|
np.timedelta64(dt.timedelta(2))
|
||
|
np.timedelta64(None)
|
||
|
np.timedelta64(None, "D")
|
||
|
|
||
|
np.void(1)
|
||
|
np.void(np.int64(1))
|
||
|
np.void(True)
|
||
|
np.void(np.bool_(True))
|
||
|
np.void(b"test")
|
||
|
np.void(np.bytes_("test"))
|
||
|
|
||
|
# Protocols
|
||
|
i8 = np.int64()
|
||
|
u8 = np.uint64()
|
||
|
f8 = np.float64()
|
||
|
c16 = np.complex128()
|
||
|
b_ = np.bool_()
|
||
|
td = np.timedelta64()
|
||
|
U = np.str_("1")
|
||
|
S = np.bytes_("1")
|
||
|
AR = np.array(1, dtype=np.float64)
|
||
|
|
||
|
int(i8)
|
||
|
int(u8)
|
||
|
int(f8)
|
||
|
int(b_)
|
||
|
int(td)
|
||
|
int(U)
|
||
|
int(S)
|
||
|
int(AR)
|
||
|
with pytest.warns(np.ComplexWarning):
|
||
|
int(c16)
|
||
|
|
||
|
float(i8)
|
||
|
float(u8)
|
||
|
float(f8)
|
||
|
float(b_)
|
||
|
float(td)
|
||
|
float(U)
|
||
|
float(S)
|
||
|
float(AR)
|
||
|
with pytest.warns(np.ComplexWarning):
|
||
|
float(c16)
|
||
|
|
||
|
complex(i8)
|
||
|
complex(u8)
|
||
|
complex(f8)
|
||
|
complex(c16)
|
||
|
complex(b_)
|
||
|
complex(td)
|
||
|
complex(U)
|
||
|
complex(AR)
|
||
|
|
||
|
|
||
|
# Misc
|
||
|
c16.dtype
|
||
|
c16.real
|
||
|
c16.imag
|
||
|
c16.real.real
|
||
|
c16.real.imag
|
||
|
c16.ndim
|
||
|
c16.size
|
||
|
c16.itemsize
|
||
|
c16.shape
|
||
|
c16.strides
|
||
|
c16.squeeze()
|
||
|
c16.byteswap()
|
||
|
c16.transpose()
|
||
|
|
||
|
# Aliases
|
||
|
np.str0()
|
||
|
np.bool8()
|
||
|
np.bytes0()
|
||
|
np.string_()
|
||
|
np.object0()
|
||
|
np.void0(0)
|
||
|
|
||
|
np.byte()
|
||
|
np.short()
|
||
|
np.intc()
|
||
|
np.intp()
|
||
|
np.int0()
|
||
|
np.int_()
|
||
|
np.longlong()
|
||
|
|
||
|
np.ubyte()
|
||
|
np.ushort()
|
||
|
np.uintc()
|
||
|
np.uintp()
|
||
|
np.uint0()
|
||
|
np.uint()
|
||
|
np.ulonglong()
|
||
|
|
||
|
np.half()
|
||
|
np.single()
|
||
|
np.double()
|
||
|
np.float_()
|
||
|
np.longdouble()
|
||
|
np.longfloat()
|
||
|
|
||
|
np.csingle()
|
||
|
np.singlecomplex()
|
||
|
np.cdouble()
|
||
|
np.complex_()
|
||
|
np.cfloat()
|
||
|
np.clongdouble()
|
||
|
np.clongfloat()
|
||
|
np.longcomplex()
|
||
|
|
||
|
b.item()
|
||
|
i8.item()
|
||
|
u8.item()
|
||
|
f8.item()
|
||
|
c16.item()
|
||
|
U.item()
|
||
|
S.item()
|
||
|
|
||
|
b.tolist()
|
||
|
i8.tolist()
|
||
|
u8.tolist()
|
||
|
f8.tolist()
|
||
|
c16.tolist()
|
||
|
U.tolist()
|
||
|
S.tolist()
|
||
|
|
||
|
b.ravel()
|
||
|
i8.ravel()
|
||
|
u8.ravel()
|
||
|
f8.ravel()
|
||
|
c16.ravel()
|
||
|
U.ravel()
|
||
|
S.ravel()
|
||
|
|
||
|
b.flatten()
|
||
|
i8.flatten()
|
||
|
u8.flatten()
|
||
|
f8.flatten()
|
||
|
c16.flatten()
|
||
|
U.flatten()
|
||
|
S.flatten()
|
||
|
|
||
|
b.reshape(1)
|
||
|
i8.reshape(1)
|
||
|
u8.reshape(1)
|
||
|
f8.reshape(1)
|
||
|
c16.reshape(1)
|
||
|
U.reshape(1)
|
||
|
S.reshape(1)
|