You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
>>> import struct
>>> struct.pack(">Q", -1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
struct.error: int too large to convert
I don't think -1 is that large to convert to ulonglong, so the error message is wrong. The problem is that -1 is not in the range of ulonglong. The current error message is not helpful for users to debug.
Compared to other error messages:
Code
import struct
for endianness in "<>":
for size in "BHILQ":
try:
fmt = endianness + size
struct.pack(fmt, -1)
except struct.error as e:
print("Error msg of " + fmt + ":", e)
stdout
Error msg of <B: ubyte format requires 0 <= number <= 255
Error msg of <H: ushort format requires 0 <= number <= 65535
Error msg of <I: argument out of range
Error msg of <L: argument out of range
Error msg of <Q: argument out of range
Error msg of >B: ubyte format requires 0 <= number <= 255
Error msg of >H: argument out of range
Error msg of >I: argument out of range
Error msg of >L: argument out of range
Error msg of >Q: int too large to convert
2. Inconsistent error messages when packing into different integral types
See the output above.
A possible solution
I can create a PR to fix the 1st problem. For the 2nd problem, #28178 (comment) and #89197 (comment) said that the inconsistency can be fixed, so I can probably fix this in the same PR.
Your environment
CPython versions tested on: Python 3.12.0a0 (heads/main:ccab67b, Oct 12 2022, 15:25:20) [GCC 12.2.0] on linux
Operating system and architecture: Arch Linux 5.19.13.arch1-1, x86-64
Bug report
1. Misleading error message
I don't think
-1
is that large to convert to ulonglong, so the error message is wrong. The problem is that-1
is not in the range of ulonglong. The current error message is not helpful for users to debug.Compared to other error messages:
Code
stdout
2. Inconsistent error messages when packing into different integral types
See the output above.
A possible solution
I can create a PR to fix the 1st problem. For the 2nd problem, #28178 (comment) and #89197 (comment) said that the inconsistency can be fixed, so I can probably fix this in the same PR.
Your environment
Linked PRs
The text was updated successfully, but these errors were encountered: