mirror of
https://github.com/python/cpython.git
synced 2025-11-01 14:11:41 +00:00
gh-121249: adjust formatting codes for complex types in struct/ctypes (#132827)
* F - for float _Complex * D - for double _Complex * G - for long double _Complex (not supported by the struct module)
This commit is contained in:
parent
41dec4158d
commit
85f89cb3e6
8 changed files with 58 additions and 58 deletions
|
|
@ -23,7 +23,7 @@
|
|||
NAN = float('nan')
|
||||
|
||||
try:
|
||||
struct.pack('C', 1j)
|
||||
struct.pack('D', 1j)
|
||||
have_c_complex = True
|
||||
except struct.error:
|
||||
have_c_complex = False
|
||||
|
|
@ -801,23 +801,23 @@ def test_c_complex_round_trip(self):
|
|||
values = [complex(*_) for _ in combinations([1, -1, 0.0, -0.0, 2,
|
||||
-3, INF, -INF, NAN], 2)]
|
||||
for z in values:
|
||||
for f in ['E', 'C', '>E', '>C', '<E', '<C']:
|
||||
for f in ['F', 'D', '>F', '>D', '<F', '<D']:
|
||||
with self.subTest(z=z, format=f):
|
||||
round_trip = struct.unpack(f, struct.pack(f, z))[0]
|
||||
self.assertComplexesAreIdentical(z, round_trip)
|
||||
|
||||
@unittest.skipIf(have_c_complex, "requires no C11 complex type support")
|
||||
def test_c_complex_error(self):
|
||||
msg1 = "'E' format not supported on this system"
|
||||
msg2 = "'C' format not supported on this system"
|
||||
msg1 = "'F' format not supported on this system"
|
||||
msg2 = "'D' format not supported on this system"
|
||||
with self.assertRaisesRegex(struct.error, msg1):
|
||||
struct.pack('E', 1j)
|
||||
struct.pack('F', 1j)
|
||||
with self.assertRaisesRegex(struct.error, msg1):
|
||||
struct.unpack('E', b'1')
|
||||
struct.unpack('F', b'1')
|
||||
with self.assertRaisesRegex(struct.error, msg2):
|
||||
struct.pack('C', 1j)
|
||||
struct.pack('D', 1j)
|
||||
with self.assertRaisesRegex(struct.error, msg2):
|
||||
struct.unpack('C', b'1')
|
||||
struct.unpack('D', b'1')
|
||||
|
||||
|
||||
class UnpackIteratorTest(unittest.TestCase):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue