Skip to content

code that overrides process_value receives Sentinel object #3065

Description

@ggainey

I am running our release process 27 minutes after click/8.3.0 release, and failing with the stacktrace seen here: https://github.com/pulp/pulpcore/actions/runs/17837218351/job/50717339446#step:7:29

Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.11.13/x64/bin/bump-my-version", line 7, in <module>
    sys.exit(cli())
             ^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/rich_click/rich_command.py", line 395, in __call__
    return super().__call__(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/click/core.py", line 1462, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/rich_click/rich_command.py", line 209, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/click/core.py", line 1848, in invoke
    sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/click/core.py", line 1206, in make_context
    self.parse_args(ctx, args)
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/click/core.py", line 1217, in parse_args
    _, args = param.handle_parse_result(ctx, opts, args)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/click/core.py", line 2516, in handle_parse_result
    value = self.process_value(ctx, value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/bumpversion/click_config.py", line 71, in process_value
    return resolve_conf_location(value) if value else None
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/bumpversion/click_config.py", line 117, in resolve_conf_location
    parsed_url = urlparse(url_or_path)
                 ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/urllib/parse.py", line 394, in urlparse
    url, scheme, _coerce_result = _coerce_args(url, scheme)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/urllib/parse.py", line 133, in _coerce_args
    return _decode_args(args) + (_encode_result,)
           ^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/urllib/parse.py", line 117, in _decode_args
    return tuple(x.decode(encoding, errors) if x else '' for x in args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/urllib/parse.py", line 117, in <genexpr>
    return tuple(x.decode(encoding, errors) if x else '' for x in args)
                 ^^^^^^^^
AttributeError: 'Sentinel' object has no attribute 'decode'
Error: Process completed with exit code 1.

The only difference between this failure, and a previous run in a different repo about 30 minutes prior, is the click-update:

diff --git a/core.sorted b/rpm.sorted
index 121f62a..d193b72 100644
--- a/core.sorted
+++ b/rpm.sorted
@@ -1,9 +1,10 @@
+
 annotated-types-0.7.0
 anyio-4.10.0
 bracex-2.6
 bump-my-version-1.2.2
 certifi-2025.8.3
-click-8.3.0
+click-8.2.1
 h11-0.16.0
 httpcore-1.0.9
 httpx-0.28.1

You can see the release-script here: https://github.com/pulp/pulpcore/blob/main/.github/workflows/scripts/release.sh

I don't have an isolated reproducer yet - thought I'd get a notification up ASAP.

Environment:

  • Python version: 3.11
  • Click version: 8.3.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    parsingParsing, parameters, commands, chaining, context

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions