Skip to content

Commit 817fa28

Browse files
gh-90716: Refactor PyLong_FromString to separate concerns (GH-96808)
This is a preliminary PR to refactor `PyLong_FromString` which is currently quite messy and has spaghetti like code that mixes up different concerns as well as duplicating logic. In particular: - `PyLong_FromString` now only handles sign, base and prefix detection and calls a new function `long_from_string_base` to parse the main body of the string. - The `long_from_string_base` function handles all string validation and then calls `long_from_binary_base` or a new function `long_from_non_binary_base` to construct the actual `PyLong`. - The existing `long_from_binary_base` function is simplified by factoring duplicated logic to `long_from_string_base`. - The new function `long_from_non_binary_base` factors out much of the code from `PyLong_FromString` including in particular the quadratic algorithm reffered to in gh-95778 so that this can be seen separately from unrelated concerns such as string validation.
1 parent ea4be27 commit 817fa28

File tree

2 files changed

+299
-258
lines changed

2 files changed

+299
-258
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
The ``PyLong_FromString`` function was refactored to make it more maintainable
2+
and extensible.

0 commit comments

Comments
 (0)