Skip to content
Closed
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@ repos:
language: unsupported
pass_filenames: false

- id: local-ty
name: ty check
entry: uv run ty check typer
require_serial: true
language: unsupported
pass_filenames: false
# - id: local-ty
# name: ty check
# entry: uv run ty check typer
# require_serial: true
# language: unsupported
# pass_filenames: false

- id: generate-readme
language: unsupported
Expand Down
5 changes: 3 additions & 2 deletions tests/assets/completion_argument.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import typer
from typer import _click
from typer._click_core import Parameter
from typer.context import Context

app = typer.Typer()


def shell_complete(ctx: _click.Context, param: _click.Parameter, incomplete: str):
def shell_complete(ctx: Context, param: Parameter, incomplete: str):
typer.echo(f"ctx: {ctx.info_name}", err=True)
typer.echo(f"arg is: {param.name}", err=True)
typer.echo(f"incomplete is: {incomplete}", err=True)
Expand Down
21 changes: 12 additions & 9 deletions tests/test_others.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@
import typer
import typer._completion_shared
import typer.completion
from typer import _click
from typer._click import exceptions
from typer._click.types import ParamType
from typer._click_core import Parameter
from typer.context import Context
from typer.core import _split_opt
from typer.main import solve_typer_info_defaults, solve_typer_info_help
from typer.models import ParameterInfo, TyperInfo
Expand All @@ -37,14 +40,14 @@ def test_too_many_parsers():
def custom_parser(value: str) -> int:
return int(value) # pragma: no cover

class CustomClickParser(_click.ParamType):
class CustomClickParser(ParamType):
name = "custom_parser"

def convert(
self,
value: str,
param: _click.Parameter | None,
ctx: _click.Context | None,
param: Parameter | None,
ctx: Context | None,
) -> typing.Any:
return int(value) # pragma: no cover

Expand All @@ -61,14 +64,14 @@ def test_valid_parser_permutations():
def custom_parser(value: str) -> int:
return int(value) # pragma: no cover

class CustomClickParser(_click.ParamType):
class CustomClickParser(ParamType):
name = "custom_parser"

def convert(
self,
value: str,
param: _click.Parameter | None,
ctx: _click.Context | None,
param: Parameter | None,
ctx: Context | None,
) -> typing.Any:
return int(value) # pragma: no cover

Expand Down Expand Up @@ -104,7 +107,7 @@ def name_callback(ctx, param, val1, val2):
def main(name: str = typer.Option(..., callback=name_callback)):
pass # pragma: no cover

with pytest.raises(_click.ClickException) as exc_info:
with pytest.raises(exceptions.ClickException) as exc_info:
runner.invoke(app, ["--name", "Camila"])
assert (
exc_info.value.message == "Too many CLI parameter callback function parameters"
Expand Down Expand Up @@ -266,7 +269,7 @@ def name_callback(ctx, args, incomplete, val2):
def main(name: str = typer.Option(..., autocompletion=name_callback)):
pass # pragma: no cover

with pytest.raises(_click.ClickException) as exc_info:
with pytest.raises(exceptions.ClickException) as exc_info:
runner.invoke(app, ["--name", "Camila"])
assert exc_info.value.message == "Invalid autocompletion callback parameters: val2"

Expand Down
10 changes: 6 additions & 4 deletions tests/test_type_conversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

import pytest
import typer
from typer import _click
from typer._click.types import ParamType
from typer._click_core import Parameter
from typer.context import Context
from typer.testing import CliRunner

runner = CliRunner()
Expand Down Expand Up @@ -147,14 +149,14 @@ def custom_parser(


def test_custom_click_type():
class BaseNumberParamType(_click.ParamType):
class BaseNumberParamType(ParamType):
name = "base_integer"

def convert(
self,
value: Any,
param: _click.Parameter | None,
ctx: _click.Context | None,
param: Parameter | None,
ctx: Context | None,
) -> Any:
return int(value, 0)

Expand Down
11 changes: 6 additions & 5 deletions typer/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

__version__ = "0.24.1"

from shutil import get_terminal_size as get_terminal_size
from typer._click.exceptions import Abort as Abort
from typer._click.exceptions import BadParameter as BadParameter
from typer._click.exceptions import Exit as Exit
from typer._click.exceptions import MissingParameter as MissingParameter
from typer._click.exceptions import NoArgsIsHelpError as NoArgsIsHelpError
from typer._click.exceptions import UsageError as UsageError

from . import colors as colors
from ._click.exceptions import Abort as Abort
from ._click.exceptions import BadParameter as BadParameter
from ._click.exceptions import Exit as Exit
from ._click.termui import confirm as confirm
from ._click.termui import getchar as getchar
from ._click.termui import progressbar as progressbar
Expand All @@ -23,7 +25,6 @@
from .main import launch as launch
from .main import run as run
from .models import CallbackParam as CallbackParam
from .models import Context as Context
from .models import FileBinaryRead as FileBinaryRead
from .models import FileBinaryWrite as FileBinaryWrite
from .models import FileText as FileText
Expand Down
48 changes: 0 additions & 48 deletions typer/_click/__init__.py
Original file line number Diff line number Diff line change
@@ -1,51 +1,3 @@
"""
Vendored Click: https://github.com/pallets/click/releases/tag/8.3.1
"""

from __future__ import annotations

from .core import Argument as Argument
from .core import Command as Command
from .core import Context as Context
from .core import Group as Group
from .core import Option as Option
from .core import Parameter as Parameter
from .decorators import help_option as help_option
from .decorators import option as option
from .exceptions import Abort as Abort
from .exceptions import BadArgumentUsage as BadArgumentUsage
from .exceptions import BadOptionUsage as BadOptionUsage
from .exceptions import BadParameter as BadParameter
from .exceptions import ClickException as ClickException
from .exceptions import FileError as FileError
from .exceptions import MissingParameter as MissingParameter
from .exceptions import NoSuchOption as NoSuchOption
from .exceptions import UsageError as UsageError
from .formatting import HelpFormatter as HelpFormatter
from .formatting import wrap_text as wrap_text
from .globals import get_current_context as get_current_context
from .termui import confirm as confirm
from .termui import getchar as getchar
from .termui import launch as launch
from .termui import progressbar as progressbar
from .termui import prompt as prompt
from .termui import secho as secho
from .termui import style as style
from .types import BOOL as BOOL
from .types import FLOAT as FLOAT
from .types import INT as INT
from .types import STRING as STRING
from .types import UUID as UUID
from .types import Choice as Choice
from .types import DateTime as DateTime
from .types import File as File
from .types import FloatRange as FloatRange
from .types import IntRange as IntRange
from .types import ParamType as ParamType
from .types import Path as Path
from .types import Tuple as Tuple
from .utils import echo as echo
from .utils import format_filename as format_filename
from .utils import get_app_dir as get_app_dir
from .utils import get_binary_stream as get_binary_stream
from .utils import get_text_stream as get_text_stream
10 changes: 2 additions & 8 deletions typer/_click/_termui_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@
from io import StringIO
from types import TracebackType

from ._compat import (
from typer._click.compat import (
CYGWIN,
WIN,
_default_text_stdout,
get_best_encoding,
isatty,
term_len,
)

from .utils import echo

V = t.TypeVar("V")
Expand Down Expand Up @@ -305,13 +306,6 @@ def update(self, n_steps: int, current_item: V | None = None) -> None:
:param n_steps: Number of steps to advance.
:param current_item: Optional item to set as ``current_item``
for the updated position.

.. versionchanged:: 8.0
Added the ``current_item`` optional parameter.

.. versionchanged:: 8.0
Only render when the number of steps meets the
``update_min_steps`` threshold.
"""
if current_item is not None:
self.current_item = current_item
Expand Down
2 changes: 1 addition & 1 deletion typer/_click/_winconsole.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
)
from ctypes.wintypes import DWORD, HANDLE, LPCWSTR, LPWSTR

from ._compat import _NonClosingTextIOWrapper
from typer._click.compat import _NonClosingTextIOWrapper

assert sys.platform == "win32"
import msvcrt # noqa: E402
Expand Down
2 changes: 1 addition & 1 deletion typer/_click/_compat.py → typer/_click/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ def should_strip_ansi(
# color codes.
# NOTE: double check is needed so mypy does not analyze this on Linux
if sys.platform.startswith("win") and WIN:
from ._winconsole import _get_windows_console_stream
from typer._click._winconsole import _get_windows_console_stream

def _get_argv_encoding() -> str:
import locale
Expand Down
Loading
Loading