From 2162964d2d05431c7ce01f3bb821799e15c07f9f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 09:22:09 +0000 Subject: [PATCH 1/2] Bump mypy from 1.19.1 to 2.1.0 Bumps [mypy](https://github.com/python/mypy) from 1.19.1 to 2.1.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.19.1...v2.1.0) --- updated-dependencies: - dependency-name: mypy dependency-version: 2.1.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 06b80167..8594ee83 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,7 +71,7 @@ test-mindeps = [ "typing_extensions==4.0", ] typing = [ - "mypy==1.19.1", + "mypy==2.1.0", "types-jwt", "types-requests", "types-jmespath", From 413ecdd79ac37416578a0f046c9fae58bfc2ccb8 Mon Sep 17 00:00:00 2001 From: Stephen Rosen Date: Wed, 1 Jul 2026 15:25:54 -0500 Subject: [PATCH 2/2] Fix declaration of omittable types for new mypy mypy 2.x incorrectly treats `MISSING` as having type `Any` after an `is` comparison with a value of type `Any`, which results in failures under `no-return-any`. Rephrase the various omittable types to be more explicit about accepting `MissingType`, which also requires that we explicitly handle the `MISSING` case which we do not support -- with a `NotImplementedError` in order to clarify that there's no intent to support such usage. We also have to remove a `super().convert()` call which (1) does nothing and (2) munges the type of `value` in `CommaDelimitedList.convert`. See also: https://github.com/python/mypy/issues/21667 --- src/globus_cli/commands/flows/_common.py | 16 +++++++++--- .../parsing/param_types/delimited.py | 16 ++++++++---- .../parsing/param_types/omittable.py | 25 +++++++++++++++---- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/globus_cli/commands/flows/_common.py b/src/globus_cli/commands/flows/_common.py index fec38c7e..24e574c8 100644 --- a/src/globus_cli/commands/flows/_common.py +++ b/src/globus_cli/commands/flows/_common.py @@ -131,13 +131,21 @@ class SubscriptionIdType( name = "SUBSCRIPTION_ID" def __init__(self, *, omittable: bool = False) -> None: - self._omittable = omittable + self._omittable: bool = omittable def convert( - self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + self, + value: t.Any | globus_sdk.MissingType, + param: click.Parameter | None, + ctx: click.Context | None, ) -> uuid.UUID | t.Literal["DEFAULT"] | globus_sdk.MissingType: - if self._omittable and value is globus_sdk.MISSING: - return globus_sdk.MISSING + if value is globus_sdk.MISSING: + if self._omittable: + return globus_sdk.MISSING + else: + raise NotImplementedError( + "Cannot pass MISSING to non-omittable SubscriptionidType." + ) if value.upper() == "DEFAULT": return "DEFAULT" diff --git a/src/globus_cli/parsing/param_types/delimited.py b/src/globus_cli/parsing/param_types/delimited.py index 8a0098c3..a7586f88 100644 --- a/src/globus_cli/parsing/param_types/delimited.py +++ b/src/globus_cli/parsing/param_types/delimited.py @@ -28,12 +28,18 @@ def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str: return "TEXT,TEXT,..." def convert( - self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + self, + value: t.Any | globus_sdk.MissingType, + param: click.Parameter | None, + ctx: click.Context | None, ) -> list[str] | globus_sdk.MissingType: - if self._omittable and value is globus_sdk.MISSING: - return globus_sdk.MISSING - - value = super().convert(value, param, ctx) + if value is globus_sdk.MISSING: + if self._omittable: + return globus_sdk.MISSING + else: + raise NotImplementedError( + "Cannot pass MISSING to non-omittable CommaDelimitedList." + ) # if `--foo` is a comma delimited list and someone passes # `--foo ""`, take that as `foo=[]` rather than foo=[""] diff --git a/src/globus_cli/parsing/param_types/omittable.py b/src/globus_cli/parsing/param_types/omittable.py index c466dedc..af9d5e70 100644 --- a/src/globus_cli/parsing/param_types/omittable.py +++ b/src/globus_cli/parsing/param_types/omittable.py @@ -12,7 +12,10 @@ class OmittableInt(click.ParamType[int | globus_sdk.MissingType]): name = "integer" def convert( - self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + self, + value: t.Any | globus_sdk.MissingType, + param: click.Parameter | None, + ctx: click.Context | None, ) -> int | globus_sdk.MissingType: if value is globus_sdk.MISSING: return globus_sdk.MISSING @@ -26,7 +29,10 @@ class OmittableString(click.ParamType[str | globus_sdk.MissingType]): name = "text" def convert( - self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + self, + value: t.Any | globus_sdk.MissingType, + param: click.Parameter | None, + ctx: click.Context | None, ) -> str | globus_sdk.MissingType: if value is globus_sdk.MISSING: return globus_sdk.MISSING @@ -40,7 +46,10 @@ class OmittableUUID(click.ParamType[uuid.UUID | globus_sdk.MissingType]): name = "uuid" def convert( - self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + self, + value: t.Any | globus_sdk.MissingType, + param: click.Parameter | None, + ctx: click.Context | None, ) -> uuid.UUID | globus_sdk.MissingType: if value is globus_sdk.MISSING: return globus_sdk.MISSING @@ -65,7 +74,10 @@ def get_missing_message( return self._inner_choice.get_missing_message(param, ctx) def convert( - self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + self, + value: t.Any | globus_sdk.MissingType, + param: click.Parameter | None, + ctx: click.Context | None, ) -> str | globus_sdk.MissingType: if value is globus_sdk.MISSING: return globus_sdk.MISSING @@ -92,7 +104,10 @@ class OmittableDateTime(_OmittableDateTimeBase): name = "datetime" def convert( - self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + self, + value: t.Any | globus_sdk.MissingType, + param: click.Parameter | None, + ctx: click.Context | None, ) -> datetime.datetime | globus_sdk.MissingType: if value is globus_sdk.MISSING: return globus_sdk.MISSING