Skip to content

refactor: reduce dependency on typing-extensions #5748

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/five_by_five.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from textual.widgets import Button, Footer, Label, Markdown

if TYPE_CHECKING:
from typing_extensions import Final
from typing import Final


class Help(Screen):
Expand Down
4 changes: 1 addition & 3 deletions src/textual/_animator.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
from abc import ABC, abstractmethod
from dataclasses import dataclass
from functools import partial
from typing import TYPE_CHECKING, Any, Callable, TypeVar

from typing_extensions import Protocol, runtime_checkable
from typing import TYPE_CHECKING, Any, Callable, Protocol, TypeVar, runtime_checkable

from textual import _time
from textual._callback import invoke
Expand Down
4 changes: 1 addition & 3 deletions src/textual/_ansi_sequences.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from __future__ import annotations

from typing import Mapping, Tuple

from typing_extensions import Final
from typing import Final, Mapping, Tuple

from textual.keys import Keys

Expand Down
4 changes: 1 addition & 3 deletions src/textual/_layout_resolve.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
from __future__ import annotations

from fractions import Fraction
from typing import Sequence, cast

from typing_extensions import Protocol
from typing import Protocol, Sequence, cast


class EdgeProtocol(Protocol):
Expand Down
4 changes: 1 addition & 3 deletions src/textual/_resolve.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

from fractions import Fraction
from itertools import accumulate
from typing import TYPE_CHECKING, Iterable, Sequence, cast

from typing_extensions import Literal
from typing import TYPE_CHECKING, Iterable, Literal, Sequence, cast

from textual.box_model import BoxModel
from textual.css.scalar import Scalar
Expand Down
4 changes: 1 addition & 3 deletions src/textual/_slug.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,9 @@
from collections import defaultdict
from re import compile
from string import punctuation
from typing import Pattern
from typing import Final, Pattern
from urllib.parse import quote

from typing_extensions import Final

WHITESPACE_REPLACEMENT: Final[str] = "-"
"""The character to replace undesirable characters with."""

Expand Down
13 changes: 10 additions & 3 deletions src/textual/_types.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
from typing import TYPE_CHECKING, Any, Awaitable, Callable, List, Literal, Union

from typing_extensions import Protocol
from typing import (
TYPE_CHECKING,
Any,
Awaitable,
Callable,
List,
Literal,
Protocol,
Union,
)

if TYPE_CHECKING:
from rich.segment import Segment
Expand Down
4 changes: 1 addition & 3 deletions src/textual/_xterm_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

import os
import re
from typing import Any, Generator, Iterable

from typing_extensions import Final
from typing import Any, Final, Generator, Iterable

from textual import constants, events, messages
from textual._ansi_sequences import ANSI_SEQUENCES_KEYS, IGNORE_SEQUENCE
Expand Down
4 changes: 3 additions & 1 deletion src/textual/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,10 @@
from textual.worker_manager import WorkerManager

if TYPE_CHECKING:
from typing import Coroutine, Literal

from textual_dev.client import DevtoolsClient
from typing_extensions import Coroutine, Literal, Self, TypeAlias
from typing_extensions import Self, TypeAlias

from textual._types import MessageTarget

Expand Down
4 changes: 2 additions & 2 deletions src/textual/canvas.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
from collections import defaultdict
from dataclasses import dataclass
from operator import itemgetter
from typing import NamedTuple, Sequence
from typing import Literal, NamedTuple, Sequence

from rich.segment import Segment
from rich.style import Style
from typing_extensions import Literal, TypeAlias
from typing_extensions import TypeAlias

from textual._box_drawing import BOX_CHARACTERS, Quad, combine_quads
from textual.color import Color
Expand Down
3 changes: 1 addition & 2 deletions src/textual/color.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,13 @@
from colorsys import hls_to_rgb, rgb_to_hls
from functools import lru_cache
from operator import itemgetter
from typing import Callable, NamedTuple
from typing import Callable, Final, NamedTuple

import rich.repr
from rich.color import Color as RichColor
from rich.color import ColorType
from rich.color_triplet import ColorTriplet
from rich.terminal_theme import TerminalTheme
from typing_extensions import Final

from textual._color_constants import ANSI_COLORS, COLOR_NAME_TO_RGB
from textual.css.scalar import percentage_string_to_float
Expand Down
3 changes: 2 additions & 1 deletion src/textual/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@
AsyncIterator,
Callable,
ClassVar,
Final,
Iterable,
NamedTuple,
)

import rich.repr
from rich.align import Align
from rich.text import Text
from typing_extensions import Final, TypeAlias
from typing_extensions import TypeAlias

from textual import on, work
from textual.binding import Binding, BindingType
Expand Down
4 changes: 2 additions & 2 deletions src/textual/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
from __future__ import annotations

import os
from typing import get_args
from typing import Final, get_args

from typing_extensions import Final, TypeGuard
from typing_extensions import TypeGuard

from textual._types import AnimationLevel

Expand Down
4 changes: 2 additions & 2 deletions src/textual/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import re
from functools import cached_property, total_ordering
from operator import itemgetter
from typing import Callable, Iterable, NamedTuple, Sequence, Union
from typing import Callable, Final, Iterable, NamedTuple, Sequence, Union

import rich.repr
from rich._wrap import divide_line
Expand All @@ -22,7 +22,7 @@
from rich.style import Style as RichStyle
from rich.terminal_theme import TerminalTheme
from rich.text import Text
from typing_extensions import Final, TypeAlias
from typing_extensions import TypeAlias

from textual._cells import cell_len
from textual._context import active_app
Expand Down
4 changes: 1 addition & 3 deletions src/textual/css/_help_text.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
from __future__ import annotations

from dataclasses import dataclass
from typing import Iterable, Sequence

from typing_extensions import Literal
from typing import Iterable, Literal, Sequence

from textual.color import ColorParseError
from textual.css._error_tools import friendly_list
Expand Down
2 changes: 1 addition & 1 deletion src/textual/css/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import typing

if typing.TYPE_CHECKING:
from typing_extensions import Final
from typing import Final

VALID_VISIBILITY: Final = {"visible", "hidden"}
VALID_DISPLAY: Final = {"block", "none"}
Expand Down
4 changes: 1 addition & 3 deletions src/textual/css/types.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from __future__ import annotations

from typing import Tuple

from typing_extensions import Literal
from typing import Literal, Tuple

from textual.color import Color

Expand Down
4 changes: 1 addition & 3 deletions src/textual/document/_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
from abc import ABC, abstractmethod
from dataclasses import dataclass
from functools import lru_cache
from typing import TYPE_CHECKING, NamedTuple, Tuple, overload

from typing_extensions import Literal, get_args
from typing import TYPE_CHECKING, Literal, NamedTuple, Tuple, get_args, overload

if TYPE_CHECKING:
from tree_sitter import Node, Query
Expand Down
2 changes: 1 addition & 1 deletion src/textual/dom.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
# Unused & ignored imports are needed for the docs to link to these objects:
from textual.css.query import WrongType # type: ignore # noqa: F401

from typing_extensions import Literal
from typing import Literal

_re_identifier = re.compile(IDENTIFIER)

Expand Down
4 changes: 1 addition & 3 deletions src/textual/drivers/_writer_thread.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

import threading
from queue import Queue
from typing import IO

from typing_extensions import Final
from typing import IO, Final

MAX_QUEUED_WRITES: Final[int] = 30

Expand Down
6 changes: 2 additions & 4 deletions src/textual/features.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
from __future__ import annotations

from typing import TYPE_CHECKING, cast

from typing_extensions import Literal
from typing import TYPE_CHECKING, Literal, cast

if TYPE_CHECKING:
from typing_extensions import Final
from typing import Final

FEATURES: Final = {"devtools", "debug", "headless"}

Expand Down
3 changes: 1 addition & 2 deletions src/textual/geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
TYPE_CHECKING,
Any,
Collection,
Final,
Literal,
NamedTuple,
Tuple,
Expand All @@ -19,8 +20,6 @@
cast,
)

from typing_extensions import Final

if TYPE_CHECKING:
from typing_extensions import TypeAlias

Expand Down
4 changes: 2 additions & 2 deletions src/textual/notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

from dataclasses import dataclass, field
from time import time
from typing import Iterator
from typing import Iterator, Literal
from uuid import uuid4

from rich.repr import Result
from typing_extensions import Literal, Self, TypeAlias
from typing_extensions import Self, TypeAlias

from textual.message import Message

Expand Down
2 changes: 1 addition & 1 deletion src/textual/screen.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
from textual.widgets._toast import ToastRack

if TYPE_CHECKING:
from typing_extensions import Final
from typing import Final

from textual.command import Provider

Expand Down
4 changes: 2 additions & 2 deletions src/textual/widgets/_button.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from __future__ import annotations

from functools import partial
from typing import TYPE_CHECKING, cast
from typing import TYPE_CHECKING, Literal, cast

import rich.repr
from rich.cells import cell_len
from rich.console import ConsoleRenderable, RenderableType
from typing_extensions import Literal, Self
from typing_extensions import Self

from textual import events

Expand Down
13 changes: 11 additions & 2 deletions src/textual/widgets/_data_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@
from dataclasses import dataclass
from itertools import chain, zip_longest
from operator import itemgetter
from typing import Any, Callable, ClassVar, Generic, Iterable, NamedTuple, TypeVar
from typing import (
Any,
Callable,
ClassVar,
Generic,
Iterable,
Literal,
NamedTuple,
TypeVar,
)

import rich.repr
from rich.console import RenderableType
Expand All @@ -13,7 +22,7 @@
from rich.segment import Segment
from rich.style import Style
from rich.text import Text, TextType
from typing_extensions import Literal, Self, TypeAlias
from typing_extensions import Self, TypeAlias

from textual import events
from textual._segment_tools import line_crop
Expand Down
3 changes: 1 addition & 2 deletions src/textual/widgets/_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@

import re
from dataclasses import dataclass
from typing import TYPE_CHECKING, ClassVar, Iterable, NamedTuple
from typing import TYPE_CHECKING, ClassVar, Iterable, Literal, NamedTuple

from rich.cells import cell_len, get_character_cell_size
from rich.console import RenderableType
from rich.highlighter import Highlighter
from rich.text import Text
from typing_extensions import Literal

from textual import events
from textual.expand_tabs import expand_tabs_inline
Expand Down
3 changes: 1 addition & 2 deletions src/textual/widgets/_masked_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@
import re
from dataclasses import dataclass
from enum import Flag, auto
from typing import TYPE_CHECKING, Iterable, Pattern
from typing import TYPE_CHECKING, Iterable, Literal, Pattern

from rich.console import RenderableType
from rich.segment import Segment
from rich.text import Text
from typing_extensions import Literal

from textual import events
from textual.strip import Strip
Expand Down
4 changes: 2 additions & 2 deletions src/textual/widgets/_placeholder.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
from __future__ import annotations

from itertools import cycle
from typing import TYPE_CHECKING, Iterator
from typing import TYPE_CHECKING, Iterator, Literal
from weakref import WeakKeyDictionary

from typing_extensions import Literal, Self
from typing_extensions import Self

from textual import events

Expand Down
3 changes: 1 addition & 2 deletions src/textual/widgets/_rule.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
from __future__ import annotations

from typing import Iterable
from typing import Iterable, Literal

from rich.console import Console, ConsoleOptions
from rich.segment import Segment
from rich.style import Style
from typing_extensions import Literal

from textual.app import RenderResult
from textual.css._error_tools import friendly_list
Expand Down
Loading
Loading