Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 577c6af

Browse files
committedDec 11, 2022
clarify the 4300-digit limit on int-str conversion
1 parent 2e279e8 commit 577c6af

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed
 

‎Doc/library/stdtypes.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -5503,15 +5503,15 @@ When an operation would exceed the limit, a :exc:`ValueError` is raised:
55035503
>>> _ = int('2' * 5432)
55045504
Traceback (most recent call last):
55055505
...
5506-
ValueError: Exceeds the limit (4300) for integer string conversion: value has 5432 digits; use sys.set_int_max_str_digits() to increase the limit.
5506+
ValueError: Exceeds the limit (4300 digits) for integer string conversion: value has 5432 digits; use sys.set_int_max_str_digits() to increase the limit.
55075507
>>> i = int('2' * 4300)
55085508
>>> len(str(i))
55095509
4300
55105510
>>> i_squared = i*i
55115511
>>> len(str(i_squared))
55125512
Traceback (most recent call last):
55135513
...
5514-
ValueError: Exceeds the limit (4300) for integer string conversion: value has 8599 digits; use sys.set_int_max_str_digits() to increase the limit.
5514+
ValueError: Exceeds the limit (4300 digits) for integer string conversion: value has 8599 digits; use sys.set_int_max_str_digits() to increase the limit.
55155515
>>> len(hex(i_squared))
55165516
7144
55175517
>>> assert int(hex(i_squared), base=16) == i*i # Hexadecimal is unlimited.

‎Objects/longobject.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ medium_value(PyLongObject *x)
3636
#define IS_SMALL_INT(ival) (-_PY_NSMALLNEGINTS <= (ival) && (ival) < _PY_NSMALLPOSINTS)
3737
#define IS_SMALL_UINT(ival) ((ival) < _PY_NSMALLPOSINTS)
3838

39-
#define _MAX_STR_DIGITS_ERROR_FMT_TO_INT "Exceeds the limit (%d) for integer string conversion: value has %zd digits; use sys.set_int_max_str_digits() to increase the limit"
40-
#define _MAX_STR_DIGITS_ERROR_FMT_TO_STR "Exceeds the limit (%d) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit"
39+
#define _MAX_STR_DIGITS_ERROR_FMT_TO_INT "Exceeds the limit (%d digits) for integer string conversion: value has %zd digits; use sys.set_int_max_str_digits() to increase the limit"
40+
#define _MAX_STR_DIGITS_ERROR_FMT_TO_STR "Exceeds the limit (%d digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit"
4141

4242
/* If defined, use algorithms from the _pylong.py module */
4343
#define WITH_PYLONG_MODULE 1

0 commit comments

Comments
 (0)
Please sign in to comment.