Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

backtrace on pkgdev commit with python 3.11.9 #184

Closed
ajakk opened this issue Apr 8, 2024 · 1 comment
Closed

backtrace on pkgdev commit with python 3.11.9 #184

ajakk opened this issue Apr 8, 2024 · 1 comment
Assignees
Labels
bug Something isn't working

Comments

@ajakk
Copy link

ajakk commented Apr 8, 2024

~/gentoo/tooling/pkgdev $ pkgdev commit
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.11/pkgdev", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/lib/python3.11/site-packages/pkgdev/scripts/__init__.py", line 48, in main
    run(os.path.basename(sys.argv[0]))
  File "/usr/lib/python3.11/site-packages/pkgdev/scripts/__init__.py", line 40, in run
    sys.exit(tool())
             ^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/tool.py", line 81, in __call__
    ret = self.main()
          ^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pkgdev/cli.py", line 23, in main
    return super().main()
           ^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/tool.py", line 191, in main
    self.handle_exec_exception(e)
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/tool.py", line 173, in main
    self.options, func = self.parse_args(
                         ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/tool.py", line 128, in parse_args
    self.handle_exec_exception(e)
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/tool.py", line 102, in parse_args
    options = self.parser.parse_args(args=args, namespace=namespace)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/arghparse.py", line 1260, in parse_args
    args, unknown_args = self.parse_known_args(args, namespace)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/arghparse.py", line 1247, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/argparse.py", line 2131, in _parse_known_args
    stop_index = consume_positionals(start_index)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/argparse.py", line 2087, in consume_positionals
    take_action(action, args)
  File "/usr/lib/python3.11/argparse.py", line 1983, in take_action
    action(self, namespace, argument_values, option_string)
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/arghparse.py", line 539, in __call__
    namespace, arg_strings = parser.parse_known_args(arg_strings, namespace)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pkgdev/scripts/pkgdev_commit.py", line 40, in parse_known_args
    namespace, args = super().parse_known_args(args, namespace)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pkgdev/cli.py", line 137, in parse_known_args
    namespace = config_parser.parse_config_options(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pkgdev/cli.py", line 95, in parse_config_options
    namespace = self.parse_config_sections(namespace, ["DEFAULT"])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pkgdev/cli.py", line 79, in parse_config_sections
    namespace, args = self.parser.parse_known_optionals(config_args, namespace)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/arghparse.py", line 702, in parse_known_optionals
    return self._parse_optionals(args, namespace)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/arghparse.py", line 906, in _parse_optionals
    start_index = consume_optional(start_index)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/snakeoil/cli/arghparse.py", line 777, in consume_optional
    action, option_string, explicit_arg = option_tuple
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: too many values to unpack (expected 3)

This doesn't actually need an ebuild repository to reproduce as the argument parsing seems to happen before actually trying to do any committing. Reverting to cpython 3.11.8 fixes it, this only happens (at least as far as I've seen) with 3.11.9. A cursory glance at the changes between 3.11.8 and 3.11.9 makes python/cpython@c02b7ae look interesting to me, but not yet certain.

@ajakk
Copy link
Author

ajakk commented Apr 8, 2024

  File "/usr/lib/python3.11/site-packages/snakeoil/cli/arghparse.py", line 702, in parse_known_optionals
    return self._parse_optionals(args, namespace)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Actually, this seems to be the source of the issue. It's calling the internal ArgumentParser._parse_optional, the return value of which was changed with the aforementioned cpython commit. Reverting that commit locally fixes this and yields what I'd expect:

$ pkgdev commit
pkgdev commit: error: not in ebuild repo

@arthurzam arthurzam self-assigned this Apr 8, 2024
@arthurzam arthurzam added the bug Something isn't working label Apr 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants