commit: aaeb2c42797a2599541b4188e4d2d5a744de134b Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Wed Dec 4 13:13:33 2024 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Wed Dec 4 13:18:14 2024 +0000 URL: https://gitweb.gentoo.org/proj/pkgcore/snakeoil.git/commit/?id=aaeb2c42
arghparse: fix compatibility with Python 3.12.8 Closes: https://github.com/pkgcore/snakeoil/issues/103 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> NEWS.rst | 5 +++++ src/snakeoil/__init__.py | 2 +- src/snakeoil/cli/arghparse.py | 10 +++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/NEWS.rst b/NEWS.rst index 4a37436..38fe557 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -2,6 +2,11 @@ Release Notes ============= +snakeoil 0.10.10 (2024-12-04) +---------------------------- + +- arghparse: fix compatibility with Python 3.12.8 (Michał Górny) + snakeoil 0.10.9 (2024-10-02) ---------------------------- diff --git a/src/snakeoil/__init__.py b/src/snakeoil/__init__.py index 865dedf..5d709e4 100644 --- a/src/snakeoil/__init__.py +++ b/src/snakeoil/__init__.py @@ -11,4 +11,4 @@ This library is a bit of a grabbag of the following: """ __title__ = "snakeoil" -__version__ = "0.10.9" +__version__ = "0.10.10" diff --git a/src/snakeoil/cli/arghparse.py b/src/snakeoil/cli/arghparse.py index 2897829..4938b18 100644 --- a/src/snakeoil/cli/arghparse.py +++ b/src/snakeoil/cli/arghparse.py @@ -1247,7 +1247,15 @@ class ArgumentParser(OptionalsParser, CsvActionsParser): namespace, args = functor(parser, namespace, args) # parse the arguments and exit if there are any errors - namespace, args = self._parse_known_args(args, namespace) + # Python 3.12.8 introduced obligatory intermixed arg. The same + # commit adds _parse_known_args2 function, so use that to determine + # if we need to pass that. + if hasattr(self, "_parse_known_args2"): + namespace, args = self._parse_known_args( + args, namespace, intermixed=False + ) + else: + namespace, args = self._parse_known_args(args, namespace) if hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR): args.extend(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) delattr(namespace, _UNRECOGNIZED_ARGS_ATTR)
