scalars.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. import sys
  2. import datetime as dt
  3. import pytest
  4. import numpy as np
  5. # Construction
  6. class D:
  7. def __index__(self) -> int:
  8. return 0
  9. class C:
  10. def __complex__(self) -> complex:
  11. return 3j
  12. class B:
  13. def __int__(self) -> int:
  14. return 4
  15. class A:
  16. def __float__(self) -> float:
  17. return 4.0
  18. np.complex64(3j)
  19. np.complex64(A())
  20. np.complex64(C())
  21. np.complex128(3j)
  22. np.complex128(C())
  23. np.complex128(None)
  24. np.complex64("1.2")
  25. np.complex128(b"2j")
  26. np.int8(4)
  27. np.int16(3.4)
  28. np.int32(4)
  29. np.int64(-1)
  30. np.uint8(B())
  31. np.uint32()
  32. np.int32("1")
  33. np.int64(b"2")
  34. np.float16(A())
  35. np.float32(16)
  36. np.float64(3.0)
  37. np.float64(None)
  38. np.float32("1")
  39. np.float16(b"2.5")
  40. if sys.version_info >= (3, 8):
  41. np.uint64(D())
  42. np.float32(D())
  43. np.complex64(D())
  44. np.bytes_(b"hello")
  45. np.bytes_("hello", 'utf-8')
  46. np.bytes_("hello", encoding='utf-8')
  47. np.str_("hello")
  48. np.str_(b"hello", 'utf-8')
  49. np.str_(b"hello", encoding='utf-8')
  50. # Array-ish semantics
  51. np.int8().real
  52. np.int16().imag
  53. np.int32().data
  54. np.int64().flags
  55. np.uint8().itemsize * 2
  56. np.uint16().ndim + 1
  57. np.uint32().strides
  58. np.uint64().shape
  59. # Time structures
  60. np.datetime64()
  61. np.datetime64(0, "D")
  62. np.datetime64(0, b"D")
  63. np.datetime64(0, ('ms', 3))
  64. np.datetime64("2019")
  65. np.datetime64(b"2019")
  66. np.datetime64("2019", "D")
  67. np.datetime64(np.datetime64())
  68. np.datetime64(dt.datetime(2000, 5, 3))
  69. np.datetime64(None)
  70. np.datetime64(dt.date(2000, 5, 3))
  71. np.datetime64(None, "D")
  72. np.timedelta64()
  73. np.timedelta64(0)
  74. np.timedelta64(0, "D")
  75. np.timedelta64(0, ('ms', 3))
  76. np.timedelta64(0, b"D")
  77. np.timedelta64("3")
  78. np.timedelta64(b"5")
  79. np.timedelta64(np.timedelta64(2))
  80. np.timedelta64(dt.timedelta(2))
  81. np.timedelta64(None)
  82. np.timedelta64(None, "D")
  83. np.void(1)
  84. np.void(np.int64(1))
  85. np.void(True)
  86. np.void(np.bool_(True))
  87. np.void(b"test")
  88. np.void(np.bytes_("test"))
  89. # Protocols
  90. i8 = np.int64()
  91. u8 = np.uint64()
  92. f8 = np.float64()
  93. c16 = np.complex128()
  94. b_ = np.bool_()
  95. td = np.timedelta64()
  96. U = np.str_("1")
  97. S = np.bytes_("1")
  98. AR = np.array(1, dtype=np.float64)
  99. int(i8)
  100. int(u8)
  101. int(f8)
  102. int(b_)
  103. int(td)
  104. int(U)
  105. int(S)
  106. int(AR)
  107. with pytest.warns(np.ComplexWarning):
  108. int(c16)
  109. float(i8)
  110. float(u8)
  111. float(f8)
  112. float(b_)
  113. float(td)
  114. float(U)
  115. float(S)
  116. float(AR)
  117. with pytest.warns(np.ComplexWarning):
  118. float(c16)
  119. complex(i8)
  120. complex(u8)
  121. complex(f8)
  122. complex(c16)
  123. complex(b_)
  124. complex(td)
  125. complex(U)
  126. complex(AR)
  127. # Misc
  128. c16.dtype
  129. c16.real
  130. c16.imag
  131. c16.real.real
  132. c16.real.imag
  133. c16.ndim
  134. c16.size
  135. c16.itemsize
  136. c16.shape
  137. c16.strides
  138. c16.squeeze()
  139. c16.byteswap()
  140. c16.transpose()