From ac4a6c027809396ffcefa10b665a8b6aa3702ae5 Mon Sep 17 00:00:00 2001 From: Hiren Date: Tue, 24 Feb 2026 12:19:30 -0500 Subject: [PATCH 1/4] Change envvar type from list[str] to Sequence[str] The envvar parameter type annotation used list[str] but should accept any sequence type (tuple, list, etc.). Changed to Sequence[str] which is the abstract interface from collections.abc that Click also accepts. Fixes: #283 --- typer/params.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/typer/params.py b/typer/params.py index b325b273c4..f15c20980a 100644 --- a/typer/params.py +++ b/typer/params.py @@ -1,4 +1,4 @@ -from collections.abc import Callable +from collections.abc import Callable, Sequence from typing import TYPE_CHECKING, Annotated, Any, overload import click @@ -20,7 +20,7 @@ def Option( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ @@ -85,7 +85,7 @@ def Option( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ @@ -1010,7 +1010,7 @@ def Argument( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ @@ -1066,7 +1066,7 @@ def Argument( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ From 1514fb365bebd558c832dabaea4bfa790fc8a953 Mon Sep 17 00:00:00 2001 From: Hiren Date: Tue, 24 Feb 2026 12:57:37 -0500 Subject: [PATCH 2/4] Fix mypy error: update implementation type annotations for envvar The overload signatures use Sequence[str] but the implementation annotations still used list[str], causing mypy overload checking errors. --- typer/params.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typer/params.py b/typer/params.py index f15c20980a..c803942d72 100644 --- a/typer/params.py +++ b/typer/params.py @@ -246,7 +246,7 @@ def main(user: Annotated[str, typer.Option(metavar="User name")]): ), ] = False, envvar: Annotated[ - str | list[str] | None, + str | Sequence[str] | None, Doc( """ Configure a CLI Option to read its value from an environment variable if it is not provided in the command line. @@ -1200,7 +1200,7 @@ def main(name: Annotated[str, typer.Argument(metavar="✨username✨")]): ), ] = False, envvar: Annotated[ - str | list[str] | None, + str | Sequence[str] | None, Doc( """ Configure an argument to read a value from an environment variable if it is not provided in the command line as a CLI argument. From e5eb792112fc0215b4b221978365cdbe140ea4ff Mon Sep 17 00:00:00 2001 From: Hiren Date: Tue, 24 Feb 2026 13:28:06 -0500 Subject: [PATCH 3/4] Fix mypy: update OptionInfo and ArgumentInfo envvar types Update models.py to use Sequence[str] for envvar parameter to match the type annotations in params.py overloads. --- typer/models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/typer/models.py b/typer/models.py index 3285a96a24..a458602961 100644 --- a/typer/models.py +++ b/typer/models.py @@ -282,7 +282,7 @@ def __init__( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ @@ -391,7 +391,7 @@ def __init__( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ @@ -519,7 +519,7 @@ def __init__( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ From ce7551660edeed2d94e5780ef65045fc93d014d8 Mon Sep 17 00:00:00 2001 From: Hiren Date: Tue, 24 Feb 2026 14:16:51 -0500 Subject: [PATCH 4/4] Fix mypy: update TyperOption and TyperArgument envvar types Update core.py to use Sequence[str] for envvar to match params.py. --- typer/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typer/core.py b/typer/core.py index 3e72d83989..6466205151 100644 --- a/typer/core.py +++ b/typer/core.py @@ -261,7 +261,7 @@ def __init__( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[ @@ -413,7 +413,7 @@ def __init__( metavar: str | None = None, expose_value: bool = True, is_eager: bool = False, - envvar: str | list[str] | None = None, + envvar: str | Sequence[str] | None = None, # Note that shell_complete is not fully supported and will be removed in future versions # TODO: Remove shell_complete in a future version (after 0.16.0) shell_complete: Callable[