The following issues were found
src/textual/_animator.py
22 issues
Line: 11
Column: 1
from dataclasses import dataclass
from ._timer import Timer
from ._types import MessageTarget
if sys.version_info >= (3, 8):
from typing import Protocol
else:
Reported by Pylint.
Line: 12
Column: 1
from dataclasses import dataclass
from ._timer import Timer
from ._types import MessageTarget
if sys.version_info >= (3, 8):
from typing import Protocol
else:
from typing_extensions import Protocol
Reported by Pylint.
Line: 17
Column: 5
if sys.version_info >= (3, 8):
from typing import Protocol
else:
from typing_extensions import Protocol
EasingFunction = Callable[[float], float]
T = TypeVar("T")
Reported by Pylint.
Line: 6
Column: 1
import asyncio
import sys
from time import time
from tracemalloc import start
from typing import Callable, TypeVar
from dataclasses import dataclass
from ._timer import Timer
Reported by Pylint.
Line: 53
Column: 24
end_value: float | Animatable
easing_function: EasingFunction
def __call__(self, time: float) -> bool:
def blend_float(start: float, end: float, factor: float) -> float:
return start + (end - start) * factor
AnimatableT = TypeVar("AnimatableT", bound=Animatable)
Reported by Pylint.
Line: 54
Column: 25
easing_function: EasingFunction
def __call__(self, time: float) -> bool:
def blend_float(start: float, end: float, factor: float) -> float:
return start + (end - start) * factor
AnimatableT = TypeVar("AnimatableT", bound=Animatable)
def blend(start: AnimatableT, end: AnimatableT, factor: float) -> AnimatableT:
Reported by Pylint.
Line: 59
Column: 19
AnimatableT = TypeVar("AnimatableT", bound=Animatable)
def blend(start: AnimatableT, end: AnimatableT, factor: float) -> AnimatableT:
return start.blend(end, factor)
blend_function = (
blend_float if isinstance(self.start_value, (int, float)) else blend
)
Reported by Pylint.
Line: 62
Column: 9
def blend(start: AnimatableT, end: AnimatableT, factor: float) -> AnimatableT:
return start.blend(end, factor)
blend_function = (
blend_float if isinstance(self.start_value, (int, float)) else blend
)
if self.duration == 0:
value = self.end_value
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
import asyncio
import sys
from time import time
from tracemalloc import start
from typing import Callable, TypeVar
from dataclasses import dataclass
Reported by Pylint.
Line: 15
Column: 5
from ._types import MessageTarget
if sys.version_info >= (3, 8):
from typing import Protocol
else:
from typing_extensions import Protocol
EasingFunction = Callable[[float], float]
Reported by Pylint.
src/textual/layouts/vertical.py
21 issues
Line: 5
Column: 1
from typing import Iterable
from rich.console import Console
from .. import log
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
Reported by Pylint.
Line: 7
Column: 1
from rich.console import Console
from .. import log
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
from ..widget import Widget
Reported by Pylint.
Line: 8
Column: 1
from rich.console import Console
from .. import log
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
from ..widget import Widget
Reported by Pylint.
Line: 9
Column: 1
from .. import log
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
from ..widget import Widget
class VerticalLayout(Layout):
Reported by Pylint.
Line: 10
Column: 1
from .. import log
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
from ..widget import Widget
class VerticalLayout(Layout):
def __init__(self, *, z: int = 0, gutter: tuple[int, int] | None = None):
Reported by Pylint.
Line: 11
Column: 1
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
from ..widget import Widget
class VerticalLayout(Layout):
def __init__(self, *, z: int = 0, gutter: tuple[int, int] | None = None):
self.z = z
Reported by Pylint.
Line: 7
Column: 1
from rich.console import Console
from .. import log
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
from ..widget import Widget
Reported by Pylint.
Line: 34
Column: 16
self, console: Console, size: Size, viewport: Region, scroll: Offset
) -> LayoutMap:
index = 0
width, height = size
gutter_height, gutter_width = self.gutter
render_width = width - gutter_width * 2
x = gutter_width
y = gutter_height
map: LayoutMap = LayoutMap(size)
Reported by Pylint.
Line: 39
Column: 9
render_width = width - gutter_width * 2
x = gutter_width
y = gutter_height
map: LayoutMap = LayoutMap(size)
def add_widget(widget: Widget, region: Region, clip: Region) -> None:
map.add_widget(console, widget, region, (self.z, index), clip)
for widget in self._widgets:
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
from typing import Iterable
from rich.console import Console
from .. import log
from ..geometry import Offset, Region, Size
from ..layout import Layout
Reported by Pylint.
src/textual/widgets/_placeholder.py
20 issues
Line: 3
Column: 1
from __future__ import annotations
from rich import box
from rich.align import Align
from rich.console import RenderableType
from rich.panel import Panel
from rich.pretty import Pretty
import rich.repr
Reported by Pylint.
Line: 4
Column: 1
from __future__ import annotations
from rich import box
from rich.align import Align
from rich.console import RenderableType
from rich.panel import Panel
from rich.pretty import Pretty
import rich.repr
Reported by Pylint.
Line: 5
Column: 1
from rich import box
from rich.align import Align
from rich.console import RenderableType
from rich.panel import Panel
from rich.pretty import Pretty
import rich.repr
from logging import getLogger
Reported by Pylint.
Line: 6
Column: 1
from rich import box
from rich.align import Align
from rich.console import RenderableType
from rich.panel import Panel
from rich.pretty import Pretty
import rich.repr
from logging import getLogger
Reported by Pylint.
Line: 7
Column: 1
from rich.align import Align
from rich.console import RenderableType
from rich.panel import Panel
from rich.pretty import Pretty
import rich.repr
from logging import getLogger
from .. import events
Reported by Pylint.
Line: 8
Column: 1
from rich.console import RenderableType
from rich.panel import Panel
from rich.pretty import Pretty
import rich.repr
from logging import getLogger
from .. import events
from ..widget import Reactive, Widget
Reported by Pylint.
Line: 12
Column: 1
from logging import getLogger
from .. import events
from ..widget import Reactive, Widget
log = getLogger("rich")
Reported by Pylint.
Line: 13
Column: 1
from logging import getLogger
from .. import events
from ..widget import Reactive, Widget
log = getLogger("rich")
@rich.repr.auto(angular=False)
Reported by Pylint.
Line: 47
Column: 30
height=self.height,
)
async def on_focus(self, event: events.Focus) -> None:
self.has_focus = True
async def on_blur(self, event: events.Blur) -> None:
self.has_focus = False
Reported by Pylint.
Line: 50
Column: 29
async def on_focus(self, event: events.Focus) -> None:
self.has_focus = True
async def on_blur(self, event: events.Blur) -> None:
self.has_focus = False
async def on_enter(self, event: events.Enter) -> None:
self.mouse_over = True
Reported by Pylint.
src/textual/layouts/dock.py
20 issues
Line: 8
Column: 1
from dataclasses import dataclass
from typing import Iterable, TYPE_CHECKING, Sequence
from rich.console import Console
from .._layout_resolve import layout_resolve
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
Reported by Pylint.
Line: 10
Column: 1
from rich.console import Console
from .._layout_resolve import layout_resolve
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
if sys.version_info >= (3, 8):
Reported by Pylint.
Line: 11
Column: 1
from rich.console import Console
from .._layout_resolve import layout_resolve
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
if sys.version_info >= (3, 8):
from typing import Literal
Reported by Pylint.
Line: 12
Column: 1
from .._layout_resolve import layout_resolve
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
if sys.version_info >= (3, 8):
from typing import Literal
else:
Reported by Pylint.
Line: 13
Column: 1
from .._layout_resolve import layout_resolve
from ..geometry import Offset, Region, Size
from ..layout import Layout
from ..layout_map import LayoutMap
if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal
Reported by Pylint.
Line: 18
Column: 5
if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal
if TYPE_CHECKING:
from ..widget import Widget
Reported by Pylint.
Line: 22
Column: 5
if TYPE_CHECKING:
from ..widget import Widget
DockEdge = Literal["top", "right", "bottom", "left"]
Reported by Pylint.
Line: 55
Column: 9
self, console: Console, size: Size, viewport: Region, scroll: Offset
) -> LayoutMap:
map: LayoutMap = LayoutMap(size)
width, height = size
layout_region = Region(0, 0, width, height)
layers: dict[int, Region] = defaultdict(lambda: layout_region)
def add_widget(widget: Widget, region: Region, order: tuple[int, ...]):
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
import sys
from collections import defaultdict
from dataclasses import dataclass
from typing import Iterable, TYPE_CHECKING, Sequence
from rich.console import Console
Reported by Pylint.
Line: 29
Column: 1
@dataclass
class DockOptions:
size: int | None = None
fraction: int = 1
min_size: int = 1
Reported by Pylint.
src/textual/widgets/_button.py
19 issues
Line: 3
Column: 1
from __future__ import annotations
from rich.align import Align
from rich.console import Console, ConsoleOptions, RenderResult, RenderableType
from rich.style import StyleType
from .. import events
from ..message import Message
from ..reactive import Reactive
Reported by Pylint.
Line: 4
Column: 1
from __future__ import annotations
from rich.align import Align
from rich.console import Console, ConsoleOptions, RenderResult, RenderableType
from rich.style import StyleType
from .. import events
from ..message import Message
from ..reactive import Reactive
Reported by Pylint.
Line: 5
Column: 1
from rich.align import Align
from rich.console import Console, ConsoleOptions, RenderResult, RenderableType
from rich.style import StyleType
from .. import events
from ..message import Message
from ..reactive import Reactive
from ..widget import Widget
Reported by Pylint.
Line: 7
Column: 1
from rich.console import Console, ConsoleOptions, RenderResult, RenderableType
from rich.style import StyleType
from .. import events
from ..message import Message
from ..reactive import Reactive
from ..widget import Widget
Reported by Pylint.
Line: 8
Column: 1
from rich.style import StyleType
from .. import events
from ..message import Message
from ..reactive import Reactive
from ..widget import Widget
class ButtonPressed(Message, bubble=True):
Reported by Pylint.
Line: 9
Column: 1
from .. import events
from ..message import Message
from ..reactive import Reactive
from ..widget import Widget
class ButtonPressed(Message, bubble=True):
pass
Reported by Pylint.
Line: 10
Column: 1
from .. import events
from ..message import Message
from ..reactive import Reactive
from ..widget import Widget
class ButtonPressed(Message, bubble=True):
pass
Reported by Pylint.
Line: 37
Column: 15
self.style = style
def __rich_console__(
self, console: Console, options: ConsoleOptions
) -> RenderResult:
width = options.max_width
height = options.height or 1
yield Align.center(
Reported by Pylint.
Line: 65
Column: 30
def render(self) -> RenderableType:
return ButtonRenderable(self.label, style=self.button_style)
async def on_click(self, event: events.Click) -> None:
await self.emit(ButtonPressed(self))
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
from rich.align import Align
from rich.console import Console, ConsoleOptions, RenderResult, RenderableType
from rich.style import StyleType
from .. import events
from ..message import Message
from ..reactive import Reactive
Reported by Pylint.
src/textual/_line_cache.py
18 issues
Line: 6
Column: 1
from typing import Iterable
from rich.cells import cell_len
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
from rich.control import Control
from rich.segment import Segment
from rich.style import Style
Reported by Pylint.
Line: 7
Column: 1
from typing import Iterable
from rich.cells import cell_len
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
from rich.control import Control
from rich.segment import Segment
from rich.style import Style
from ._loop import loop_last
Reported by Pylint.
Line: 8
Column: 1
from rich.cells import cell_len
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
from rich.control import Control
from rich.segment import Segment
from rich.style import Style
from ._loop import loop_last
Reported by Pylint.
Line: 9
Column: 1
from rich.cells import cell_len
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
from rich.control import Control
from rich.segment import Segment
from rich.style import Style
from ._loop import loop_last
Reported by Pylint.
Line: 10
Column: 1
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
from rich.control import Control
from rich.segment import Segment
from rich.style import Style
from ._loop import loop_last
class LineCache:
Reported by Pylint.
Line: 12
Column: 1
from rich.segment import Segment
from rich.style import Style
from ._loop import loop_last
class LineCache:
def __init__(self, lines: list[list[Segment]]) -> None:
self.lines = lines
Reported by Pylint.
Line: 37
Column: 15
return any(self._dirty)
def __rich_console__(
self, console: Console, options: ConsoleOptions
) -> RenderResult:
new_line = Segment.line()
for line in self.lines:
yield from line
Reported by Pylint.
Line: 37
Column: 33
return any(self._dirty)
def __rich_console__(
self, console: Console, options: ConsoleOptions
) -> RenderResult:
new_line = Segment.line()
for line in self.lines:
yield from line
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
from typing import Iterable
from rich.cells import cell_len
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
from rich.control import Control
from rich.segment import Segment
Reported by Pylint.
Line: 15
Column: 1
from ._loop import loop_last
class LineCache:
def __init__(self, lines: list[list[Segment]]) -> None:
self.lines = lines
self._dirty = [True] * len(self.lines)
@classmethod
Reported by Pylint.
src/textual/_xterm_parser.py
16 issues
Line: 7
Column: 1
import re
from typing import Callable, Generator
from . import events
from ._types import MessageTarget
from ._parser import Awaitable, Parser, TokenCallback
from ._ansi_sequences import ANSI_SEQUENCES
Reported by Pylint.
Line: 8
Column: 1
from typing import Callable, Generator
from . import events
from ._types import MessageTarget
from ._parser import Awaitable, Parser, TokenCallback
from ._ansi_sequences import ANSI_SEQUENCES
_re_mouse_event = re.compile("^" + re.escape("\x1b[") + r"(<?[\d;]+[mM]|M...)\Z")
Reported by Pylint.
Line: 9
Column: 1
from . import events
from ._types import MessageTarget
from ._parser import Awaitable, Parser, TokenCallback
from ._ansi_sequences import ANSI_SEQUENCES
_re_mouse_event = re.compile("^" + re.escape("\x1b[") + r"(<?[\d;]+[mM]|M...)\Z")
Reported by Pylint.
Line: 10
Column: 1
from . import events
from ._types import MessageTarget
from ._parser import Awaitable, Parser, TokenCallback
from ._ansi_sequences import ANSI_SEQUENCES
_re_mouse_event = re.compile("^" + re.escape("\x1b[") + r"(<?[\d;]+[mM]|M...)\Z")
Reported by Pylint.
Line: 104
Column: 14
if __name__ == "__main__":
parser = XTermParser()
import os
import sys
for token in parser.feed(sys.stdin.read(20)):
Reported by Pylint.
Line: 104
Column: 14
if __name__ == "__main__":
parser = XTermParser()
import os
import sys
for token in parser.feed(sys.stdin.read(20)):
Reported by Pylint.
Line: 106
Column: 5
if __name__ == "__main__":
parser = XTermParser()
import os
import sys
for token in parser.feed(sys.stdin.read(20)):
print(token)
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
import re
from typing import Callable, Generator
from . import events
from ._types import MessageTarget
from ._parser import Awaitable, Parser, TokenCallback
Reported by Pylint.
Line: 16
Column: 1
_re_mouse_event = re.compile("^" + re.escape("\x1b[") + r"(<?[\d;]+[mM]|M...)\Z")
class XTermParser(Parser[events.Event]):
_re_sgr_mouse = re.compile(r"\x1b\[<(\d+);(\d+);(\d+)([Mm])")
def __init__(self, sender: MessageTarget, more_data: Callable[[], bool]) -> None:
self.sender = sender
Reported by Pylint.
Line: 27
Column: 5
self.last_y = 0
super().__init__()
def parse_mouse_code(self, code: str, sender: MessageTarget) -> events.Event | None:
sgr_match = self._re_sgr_mouse.match(code)
if sgr_match:
_buttons, _x, _y, state = sgr_match.groups()
buttons = int(_buttons)
button = (buttons + 1) & 3
Reported by Pylint.
src/textual/layout_map.py
16 issues
Line: 3
Column: 1
from __future__ import annotations
from rich.console import Console
from typing import ItemsView, KeysView, ValuesView, NamedTuple
from .geometry import Region, Size
from .widget import Widget
Reported by Pylint.
Line: 7
Column: 1
from typing import ItemsView, KeysView, ValuesView, NamedTuple
from .geometry import Region, Size
from .widget import Widget
class RenderRegion(NamedTuple):
Reported by Pylint.
Line: 9
Column: 1
from .geometry import Region, Size
from .widget import Widget
class RenderRegion(NamedTuple):
region: Region
order: tuple[int, ...]
Reported by Pylint.
Line: 51
Column: 9
order: tuple[int, ...],
clip: Region,
) -> None:
from .view import View
region += widget.layout_offset
self.widgets[widget] = RenderRegion(region, order, clip)
self.contents_region = self.contents_region.union(region)
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
from rich.console import Console
from typing import ItemsView, KeysView, ValuesView, NamedTuple
from .geometry import Region, Size
from .widget import Widget
Reported by Pylint.
Line: 5
Column: 1
from rich.console import Console
from typing import ItemsView, KeysView, ValuesView, NamedTuple
from .geometry import Region, Size
from .widget import Widget
Reported by Pylint.
Line: 12
Column: 1
from .widget import Widget
class RenderRegion(NamedTuple):
region: Region
order: tuple[int, ...]
clip: Region
Reported by Pylint.
Line: 18
Column: 1
clip: Region
class LayoutMap:
def __init__(self, size: Size) -> None:
self.size = size
self.contents_region = Region(0, 0, 0, 0)
self.widgets: dict[Widget, RenderRegion] = {}
Reported by Pylint.
Line: 25
Column: 5
self.widgets: dict[Widget, RenderRegion] = {}
@property
def virtual_size(self) -> Size:
return self.contents_region.size
def __getitem__(self, widget: Widget) -> RenderRegion:
return self.widgets[widget]
Reported by Pylint.
Line: 31
Column: 5
def __getitem__(self, widget: Widget) -> RenderRegion:
return self.widgets[widget]
def items(self) -> ItemsView[Widget, RenderRegion]:
return self.widgets.items()
def keys(self) -> KeysView[Widget]:
return self.widgets.keys()
Reported by Pylint.
src/textual/views/_dock_view.py
14 issues
Line: 4
Column: 1
from __future__ import annotations
from typing import cast, Optional
from ..layouts.dock import DockLayout, Dock, DockEdge
from ..layouts.grid import GridLayout, GridAlign
from ..view import View
from ..widget import Widget
Reported by Pylint.
Line: 5
Column: 1
from typing import cast, Optional
from ..layouts.dock import DockLayout, Dock, DockEdge
from ..layouts.grid import GridLayout, GridAlign
from ..view import View
from ..widget import Widget
class DoNotSet:
Reported by Pylint.
Line: 6
Column: 1
from ..layouts.dock import DockLayout, Dock, DockEdge
from ..layouts.grid import GridLayout, GridAlign
from ..view import View
from ..widget import Widget
class DoNotSet:
pass
Reported by Pylint.
Line: 7
Column: 1
from ..layouts.dock import DockLayout, Dock, DockEdge
from ..layouts.grid import GridLayout, GridAlign
from ..view import View
from ..widget import Widget
class DoNotSet:
pass
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
from typing import cast, Optional
from ..layouts.dock import DockLayout, Dock, DockEdge
from ..layouts.grid import GridLayout, GridAlign
from ..view import View
from ..widget import Widget
Reported by Pylint.
Line: 10
Column: 1
from ..widget import Widget
class DoNotSet:
pass
do_not_set = DoNotSet()
Reported by Pylint.
Line: 10
Column: 1
from ..widget import Widget
class DoNotSet:
pass
do_not_set = DoNotSet()
Reported by Pylint.
Line: 17
Column: 1
do_not_set = DoNotSet()
class DockView(View):
def __init__(self, name: str | None = None) -> None:
super().__init__(layout=DockLayout(), name=name)
async def dock(
self,
Reported by Pylint.
Line: 21
Column: 5
def __init__(self, name: str | None = None) -> None:
super().__init__(layout=DockLayout(), name=name)
async def dock(
self,
*widgets: Widget,
edge: DockEdge = "top",
z: int = 0,
size: int | None | DoNotSet = do_not_set,
Reported by Pylint.
Line: 25
Column: 9
self,
*widgets: Widget,
edge: DockEdge = "top",
z: int = 0,
size: int | None | DoNotSet = do_not_set,
name: str | None = None,
) -> None:
dock = Dock(edge, widgets, z)
Reported by Pylint.
src/textual/reactive.py
13 issues
Line: 16
Column: 1
TYPE_CHECKING,
)
from . import log
from . import events
from ._callback import count_parameters, invoke
from ._types import MessageTarget
Reported by Pylint.
Line: 17
Column: 1
)
from . import log
from . import events
from ._callback import count_parameters, invoke
from ._types import MessageTarget
if TYPE_CHECKING:
Reported by Pylint.
Line: 19
Column: 1
from . import log
from . import events
from ._callback import count_parameters, invoke
from ._types import MessageTarget
if TYPE_CHECKING:
from .app import App
from .widget import Widget
Reported by Pylint.
Line: 20
Column: 1
from . import events
from ._callback import count_parameters, invoke
from ._types import MessageTarget
if TYPE_CHECKING:
from .app import App
from .widget import Widget
Reported by Pylint.
Line: 23
Column: 5
from ._types import MessageTarget
if TYPE_CHECKING:
from .app import App
from .widget import Widget
Reactable = Union[Widget, App]
Reported by Pylint.
Line: 24
Column: 5
if TYPE_CHECKING:
from .app import App
from .widget import Widget
Reactable = Union[Widget, App]
ReactiveType = TypeVar("ReactiveType")
Reported by Pylint.
Line: 16
Column: 1
TYPE_CHECKING,
)
from . import log
from . import events
from ._callback import count_parameters, invoke
from ._types import MessageTarget
Reported by Pylint.
Line: 57
Column: 9
setattr(owner, "__computes", computes)
computes.append(name)
self.name = name
self.internal_name = f"__{name}"
setattr(owner, self.internal_name, self._default)
def __get__(self, obj: Reactable, obj_type: type[object]) -> ReactiveType:
return getattr(obj, self.internal_name)
Reported by Pylint.
Line: 58
Column: 9
computes.append(name)
self.name = name
self.internal_name = f"__{name}"
setattr(owner, self.internal_name, self._default)
def __get__(self, obj: Reactable, obj_type: type[object]) -> ReactiveType:
return getattr(obj, self.internal_name)
Reported by Pylint.
Line: 1
Column: 1
from __future__ import annotations
from inspect import isawaitable
from functools import partial
from typing import (
Any,
Awaitable,
Callable,
Generic,
Reported by Pylint.