mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Introduce _typing module for version-dependent typing imports (#1088)
* Introduce _typing module for version-dependent typing imports * Remove unused import
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import inspect
|
import inspect
|
||||||
import sys
|
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
|
|
||||||
import rich.repr
|
import rich.repr
|
||||||
@@ -12,11 +11,7 @@ __all__ = ["log", "panic"]
|
|||||||
|
|
||||||
from ._context import active_app
|
from ._context import active_app
|
||||||
from ._log import LogGroup, LogVerbosity
|
from ._log import LogGroup, LogVerbosity
|
||||||
|
from ._typing import TypeAlias
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
|
|
||||||
LogCallable: TypeAlias = "Callable"
|
LogCallable: TypeAlias = "Callable"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from typing import cast, Tuple, Union
|
from typing import cast, Tuple, Union
|
||||||
|
|
||||||
@@ -11,11 +10,7 @@ from rich.style import Style
|
|||||||
|
|
||||||
from .color import Color
|
from .color import Color
|
||||||
from .css.types import EdgeStyle, EdgeType
|
from .css.types import EdgeStyle, EdgeType
|
||||||
|
from ._typing import TypeAlias
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
INNER = 1
|
INNER = 1
|
||||||
OUTER = 2
|
OUTER = 2
|
||||||
|
|||||||
@@ -13,10 +13,9 @@ without having to render the entire screen.
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
from typing import TYPE_CHECKING, Callable, Iterable, NamedTuple, cast
|
from typing import TYPE_CHECKING, Iterable, NamedTuple, cast
|
||||||
|
|
||||||
import rich.repr
|
import rich.repr
|
||||||
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
|
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
|
||||||
@@ -27,15 +26,9 @@ from rich.style import Style
|
|||||||
from . import errors
|
from . import errors
|
||||||
from ._cells import cell_len
|
from ._cells import cell_len
|
||||||
from ._loop import loop_last
|
from ._loop import loop_last
|
||||||
from ._profile import timer
|
|
||||||
from ._types import Lines
|
from ._types import Lines
|
||||||
from .geometry import Offset, Region, Size
|
from .geometry import Offset, Region, Size
|
||||||
|
from ._typing import TypeAlias
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .widget import Widget
|
from .widget import Widget
|
||||||
|
|||||||
@@ -1,22 +1,14 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
import sys
|
|
||||||
from typing import ClassVar, NamedTuple, TYPE_CHECKING
|
from typing import ClassVar, NamedTuple, TYPE_CHECKING
|
||||||
|
|
||||||
|
|
||||||
from .geometry import Region, Size, Spacing
|
from .geometry import Region, Size, Spacing
|
||||||
|
from ._typing import TypeAlias
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .widget import Widget
|
from .widget import Widget
|
||||||
|
|
||||||
|
|
||||||
ArrangeResult: TypeAlias = "tuple[list[WidgetPlacement], set[Widget]]"
|
ArrangeResult: TypeAlias = "tuple[list[WidgetPlacement], set[Widget]]"
|
||||||
DockArrangeResult: TypeAlias = "tuple[list[WidgetPlacement], set[Widget], Spacing]"
|
DockArrangeResult: TypeAlias = "tuple[list[WidgetPlacement], set[Widget], Spacing]"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from typing import TYPE_CHECKING, Callable, Iterable, List
|
from typing import TYPE_CHECKING, Callable, Iterable, List
|
||||||
|
|
||||||
from rich.segment import Segment
|
from rich.segment import Segment
|
||||||
@@ -11,22 +10,16 @@ from ._filter import LineFilter
|
|||||||
from ._opacity import _apply_opacity
|
from ._opacity import _apply_opacity
|
||||||
from ._segment_tools import line_crop, line_pad, line_trim
|
from ._segment_tools import line_crop, line_pad, line_trim
|
||||||
from ._types import Lines
|
from ._types import Lines
|
||||||
|
from ._typing import TypeAlias
|
||||||
from .color import Color
|
from .color import Color
|
||||||
from .geometry import Region, Size, Spacing
|
from .geometry import Region, Size, Spacing
|
||||||
from .renderables.text_opacity import TextOpacity
|
from .renderables.text_opacity import TextOpacity
|
||||||
from .renderables.tint import Tint
|
from .renderables.tint import Tint
|
||||||
|
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .css.styles import StylesBase
|
from .css.styles import StylesBase
|
||||||
from .widget import Widget
|
from .widget import Widget
|
||||||
|
|
||||||
|
|
||||||
RenderLineCallback: TypeAlias = Callable[[int], List[Segment]]
|
RenderLineCallback: TypeAlias = Callable[[int], List[Segment]]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
import sys
|
|
||||||
from typing import Awaitable, Callable, List, TYPE_CHECKING, Union
|
from typing import Awaitable, Callable, List, TYPE_CHECKING, Union
|
||||||
|
|
||||||
from rich.segment import Segment
|
from rich.segment import Segment
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
from textual._typing import Protocol
|
||||||
from typing import Protocol
|
|
||||||
else:
|
|
||||||
from typing_extensions import Protocol
|
|
||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .message import Message
|
from .message import Message
|
||||||
|
|||||||
11
src/textual/_typing.py
Normal file
11
src/textual/_typing.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.version_info >= (3, 10):
|
||||||
|
from typing import TypeAlias
|
||||||
|
else: # pragma: no cover
|
||||||
|
from typing_extensions import TypeAlias
|
||||||
|
|
||||||
|
if sys.version_info >= (3, 8):
|
||||||
|
from typing import Final, Literal, Protocol, TypedDict
|
||||||
|
else:
|
||||||
|
from typing_extensions import Final, Literal, Protocol, TypedDict
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from asyncio import Task
|
|
||||||
from contextlib import asynccontextmanager
|
|
||||||
import inspect
|
import inspect
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
@@ -10,14 +8,14 @@ import platform
|
|||||||
import sys
|
import sys
|
||||||
import unicodedata
|
import unicodedata
|
||||||
import warnings
|
import warnings
|
||||||
|
from asyncio import Task
|
||||||
|
from contextlib import asynccontextmanager
|
||||||
from contextlib import redirect_stderr, redirect_stdout
|
from contextlib import redirect_stderr, redirect_stdout
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path, PurePath
|
from pathlib import Path, PurePath
|
||||||
from time import perf_counter
|
from time import perf_counter
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
Callable,
|
|
||||||
Coroutine,
|
|
||||||
Generic,
|
Generic,
|
||||||
Iterable,
|
Iterable,
|
||||||
Type,
|
Type,
|
||||||
@@ -29,9 +27,6 @@ from typing import (
|
|||||||
)
|
)
|
||||||
from weakref import WeakSet, WeakValueDictionary
|
from weakref import WeakSet, WeakValueDictionary
|
||||||
|
|
||||||
from ._ansi_sequences import SYNC_END, SYNC_START
|
|
||||||
from ._path import _make_path_object_relative
|
|
||||||
|
|
||||||
import nanoid
|
import nanoid
|
||||||
import rich
|
import rich
|
||||||
import rich.repr
|
import rich.repr
|
||||||
@@ -42,10 +37,13 @@ from rich.traceback import Traceback
|
|||||||
|
|
||||||
from . import Logger, LogGroup, LogVerbosity, actions, events, log, messages
|
from . import Logger, LogGroup, LogVerbosity, actions, events, log, messages
|
||||||
from ._animator import Animator, DEFAULT_EASING, Animatable, EasingFunction
|
from ._animator import Animator, DEFAULT_EASING, Animatable, EasingFunction
|
||||||
|
from ._ansi_sequences import SYNC_END, SYNC_START
|
||||||
from ._callback import invoke
|
from ._callback import invoke
|
||||||
from ._context import active_app
|
from ._context import active_app
|
||||||
from ._event_broker import NoHandler, extract_handler_actions
|
from ._event_broker import NoHandler, extract_handler_actions
|
||||||
from ._filter import LineFilter, Monochrome
|
from ._filter import LineFilter, Monochrome
|
||||||
|
from ._path import _make_path_object_relative
|
||||||
|
from ._typing import TypeAlias
|
||||||
from .binding import Binding, Bindings
|
from .binding import Binding, Bindings
|
||||||
from .css.query import NoMatches
|
from .css.query import NoMatches
|
||||||
from .css.stylesheet import Stylesheet
|
from .css.stylesheet import Stylesheet
|
||||||
@@ -67,11 +65,6 @@ if TYPE_CHECKING:
|
|||||||
from .devtools.client import DevtoolsClient
|
from .devtools.client import DevtoolsClient
|
||||||
from .pilot import Pilot
|
from .pilot import Pilot
|
||||||
|
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
PLATFORM = platform.system()
|
PLATFORM = platform.system()
|
||||||
WINDOWS = PLATFORM == "Windows"
|
WINDOWS = PLATFORM == "Windows"
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Iterable, MutableMapping
|
from typing import Iterable, MutableMapping
|
||||||
|
|
||||||
import rich.repr
|
import rich.repr
|
||||||
|
|
||||||
if sys.version_info >= (3, 10):
|
from textual._typing import TypeAlias
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
BindingType: TypeAlias = "Binding | tuple[str, str, str]"
|
BindingType: TypeAlias = "Binding | tuple[str, str, str]"
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Iterable
|
from typing import Iterable, Sequence
|
||||||
|
|
||||||
|
from textual._typing import Literal
|
||||||
from textual.color import ColorParseError
|
from textual.color import ColorParseError
|
||||||
from textual.css._help_renderables import Example, Bullet, HelpText
|
from textual.css._help_renderables import Example, Bullet, HelpText
|
||||||
from textual.css.constants import (
|
from textual.css.constants import (
|
||||||
@@ -15,11 +15,6 @@ from textual.css.constants import (
|
|||||||
VALID_TEXT_ALIGN,
|
VALID_TEXT_ALIGN,
|
||||||
)
|
)
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Literal, Iterable, Sequence
|
|
||||||
else:
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
from textual.css._error_tools import friendly_list
|
from textual.css._error_tools import friendly_list
|
||||||
from textual.css.scalar import SYMBOL_UNIT
|
from textual.css.scalar import SYMBOL_UNIT
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import sys
|
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Final
|
|
||||||
else:
|
|
||||||
from typing_extensions import Final # pragma: no cover
|
|
||||||
|
|
||||||
from ..geometry import Spacing
|
from ..geometry import Spacing
|
||||||
|
from .._typing import Final
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
from .types import EdgeType
|
from .types import EdgeType
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
@@ -60,11 +59,7 @@ from .types import (
|
|||||||
Visibility,
|
Visibility,
|
||||||
TextAlign,
|
TextAlign,
|
||||||
)
|
)
|
||||||
|
from .._typing import TypedDict
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import TypedDict
|
|
||||||
else:
|
|
||||||
from typing_extensions import TypedDict
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .._layout import Layout
|
from .._layout import Layout
|
||||||
|
|||||||
@@ -1,15 +1,9 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
from ..color import Color
|
from ..color import Color
|
||||||
|
from .._typing import Literal
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Literal
|
|
||||||
else:
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
|
|
||||||
Edge = Literal["top", "right", "bottom", "left"]
|
Edge = Literal["top", "right", "bottom", "left"]
|
||||||
DockEdge = Literal["top", "right", "bottom", "left", ""]
|
DockEdge = Literal["top", "right", "bottom", "left", ""]
|
||||||
|
|||||||
@@ -1,17 +1,11 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Iterable
|
from typing import Iterable
|
||||||
|
|
||||||
from importlib_metadata import version
|
from importlib_metadata import version
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Literal
|
|
||||||
else:
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
from rich.align import Align
|
from rich.align import Align
|
||||||
from rich.console import Console, ConsoleOptions, RenderResult
|
from rich.console import Console, ConsoleOptions, RenderResult
|
||||||
from rich.markup import escape
|
from rich.markup import escape
|
||||||
@@ -22,6 +16,7 @@ from rich.styled import Styled
|
|||||||
from rich.table import Table
|
from rich.table import Table
|
||||||
from rich.text import Text
|
from rich.text import Text
|
||||||
from textual._log import LogGroup
|
from textual._log import LogGroup
|
||||||
|
from textual._typing import Literal
|
||||||
|
|
||||||
DevConsoleMessageLevel = Literal["info", "warning", "error"]
|
DevConsoleMessageLevel = Literal["info", "warning", "error"]
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import sys
|
|
||||||
from collections import deque
|
from collections import deque
|
||||||
from inspect import getfile
|
from inspect import getfile
|
||||||
from typing import (
|
from typing import (
|
||||||
@@ -42,20 +41,10 @@ if TYPE_CHECKING:
|
|||||||
from .screen import Screen
|
from .screen import Screen
|
||||||
from .widget import Widget
|
from .widget import Widget
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
from textual._typing import Literal, TypeAlias
|
||||||
from typing import Literal
|
|
||||||
else:
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
|
|
||||||
_re_identifier = re.compile(IDENTIFIER)
|
_re_identifier = re.compile(IDENTIFIER)
|
||||||
|
|
||||||
|
|
||||||
WalkMethod: TypeAlias = Literal["depth", "breadth"]
|
WalkMethod: TypeAlias = Literal["depth", "breadth"]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
from textual._typing import Final, Literal
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Final, Literal
|
|
||||||
else:
|
|
||||||
from typing_extensions import Final, Literal
|
|
||||||
|
|
||||||
FEATURES: Final = {"devtools", "debug", "headless"}
|
FEATURES: Final = {"devtools", "debug", "headless"}
|
||||||
|
|
||||||
|
|||||||
@@ -6,15 +6,11 @@ Functions and classes to manage terminal geometry (anything involving coordinate
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from operator import attrgetter, itemgetter
|
from operator import attrgetter, itemgetter
|
||||||
from typing import Any, Collection, NamedTuple, Tuple, TypeVar, Union, cast
|
from typing import Any, Collection, NamedTuple, Tuple, TypeVar, Union, cast
|
||||||
|
|
||||||
if sys.version_info >= (3, 10):
|
from textual._typing import TypeAlias
|
||||||
from typing import TypeAlias
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
|
|
||||||
SpacingDimensions: TypeAlias = Union[
|
SpacingDimensions: TypeAlias = Union[
|
||||||
int, Tuple[int], Tuple[int, int], Tuple[int, int, int, int]
|
int, Tuple[int], Tuple[int, int], Tuple[int, int, int, int]
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from typing import Iterable, Iterator
|
from typing import Iterable, Iterator
|
||||||
|
|
||||||
import rich.repr
|
import rich.repr
|
||||||
@@ -13,14 +12,11 @@ from ._compositor import Compositor, MapGeometry
|
|||||||
from .timer import Timer
|
from .timer import Timer
|
||||||
from ._types import CallbackType
|
from ._types import CallbackType
|
||||||
from .geometry import Offset, Region, Size
|
from .geometry import Offset, Region, Size
|
||||||
|
from ._typing import Final
|
||||||
from .reactive import Reactive
|
from .reactive import Reactive
|
||||||
from .renderables.blank import Blank
|
from .renderables.blank import Blank
|
||||||
from .widget import Widget
|
from .widget import Widget
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Final
|
|
||||||
else:
|
|
||||||
from typing_extensions import Final
|
|
||||||
|
|
||||||
# Screen updates will be batched so that they don't happen more often than 60 times per second:
|
# Screen updates will be batched so that they don't happen more often than 60 times per second:
|
||||||
UPDATE_PERIOD: Final = 1 / 60
|
UPDATE_PERIOD: Final = 1 / 60
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ from fractions import Fraction
|
|||||||
from itertools import islice
|
from itertools import islice
|
||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
from typing import (
|
from typing import (
|
||||||
Awaitable,
|
|
||||||
Generator,
|
Generator,
|
||||||
TYPE_CHECKING,
|
TYPE_CHECKING,
|
||||||
ClassVar,
|
ClassVar,
|
||||||
|
|||||||
@@ -1,14 +1,8 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Literal
|
|
||||||
else:
|
|
||||||
from typing_extensions import Literal # pragma: no cover
|
|
||||||
|
|
||||||
import rich.repr
|
import rich.repr
|
||||||
from rich.console import RenderableType
|
from rich.console import RenderableType
|
||||||
from rich.text import Text, TextType
|
from rich.text import Text, TextType
|
||||||
@@ -18,6 +12,7 @@ from ..css._error_tools import friendly_list
|
|||||||
from ..message import Message
|
from ..message import Message
|
||||||
from ..reactive import Reactive
|
from ..reactive import Reactive
|
||||||
from ..widgets import Static
|
from ..widgets import Static
|
||||||
|
from .._typing import Literal
|
||||||
|
|
||||||
ButtonVariant = Literal["default", "primary", "success", "warning", "error"]
|
ButtonVariant = Literal["default", "primary", "success", "warning", "error"]
|
||||||
_VALID_BUTTON_VARIANTS = {"default", "primary", "success", "warning", "error"}
|
_VALID_BUTTON_VARIANTS = {"default", "primary", "success", "warning", "error"}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from itertools import chain, zip_longest
|
from itertools import chain, zip_longest
|
||||||
from typing import ClassVar, Generic, Iterable, NamedTuple, TypeVar, cast
|
from typing import ClassVar, Generic, Iterable, NamedTuple, TypeVar, cast
|
||||||
@@ -14,18 +13,13 @@ from rich.text import Text, TextType
|
|||||||
|
|
||||||
from .. import events, messages
|
from .. import events, messages
|
||||||
from .._cache import LRUCache
|
from .._cache import LRUCache
|
||||||
from .._profile import timer
|
|
||||||
from .._segment_tools import line_crop
|
from .._segment_tools import line_crop
|
||||||
from .._types import Lines
|
from .._types import Lines
|
||||||
from ..geometry import Region, Size, Spacing, clamp
|
from ..geometry import Region, Size, Spacing, clamp
|
||||||
from ..reactive import Reactive
|
from ..reactive import Reactive
|
||||||
from ..render import measure
|
from ..render import measure
|
||||||
from ..scroll_view import ScrollView
|
from ..scroll_view import ScrollView
|
||||||
|
from .._typing import Literal
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Literal
|
|
||||||
else:
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
CursorType = Literal["cell", "row", "column"]
|
CursorType = Literal["cell", "row", "column"]
|
||||||
CELL: CursorType = "cell"
|
CELL: CursorType = "cell"
|
||||||
@@ -115,7 +109,6 @@ class Coord(NamedTuple):
|
|||||||
|
|
||||||
|
|
||||||
class DataTable(ScrollView, Generic[CellType], can_focus=True):
|
class DataTable(ScrollView, Generic[CellType], can_focus=True):
|
||||||
|
|
||||||
DEFAULT_CSS = """
|
DEFAULT_CSS = """
|
||||||
App.-dark DataTable {
|
App.-dark DataTable {
|
||||||
background:;
|
background:;
|
||||||
|
|||||||
@@ -1,16 +1,9 @@
|
|||||||
import sys
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
if sys.version_info >= (3, 10):
|
|
||||||
from typing import Literal
|
|
||||||
else: # pragma: no cover
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from rich.style import Style
|
from rich.style import Style
|
||||||
|
|
||||||
from textual.app import ComposeResult
|
|
||||||
from textual.color import Color
|
from textual.color import Color
|
||||||
from textual.css.errors import StyleValueError
|
from textual.css.errors import StyleValueError
|
||||||
from textual.css.scalar import Scalar, Unit
|
from textual.css.scalar import Scalar, Unit
|
||||||
|
|||||||
Reference in New Issue
Block a user