Skip to content

Commit 0f9b503

Browse files
authored
🔀 Merge pull request #87 from davep/slide-python-window
Drop support for Python 3.9
2 parents 28d2eee + aceebd0 commit 0f9b503

9 files changed

Lines changed: 503 additions & 483 deletions

File tree

.github/workflows/style-and-lint.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
runs-on: ubuntu-latest
1717
strategy:
1818
matrix:
19-
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
19+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
2020

2121
steps:
2222

ChangeLog.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# ChangeLog
22

3+
## Unreleased
4+
5+
**Released: 2025-08-26**
6+
7+
- Dropped support for Python 3.9.
8+
([#39](https://github.com/davep/textual-fspicker/pull/87))
9+
310
## v0.6.0
411

512
**Released: 2025-08-26**

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ dependencies = [
99
"textual>=1.0.0",
1010
]
1111
readme = "README.md"
12-
requires-python = ">=3.9"
12+
requires-python = ">=3.10"
1313
license = "MIT"
1414
keywords = [
1515
"terminal",
@@ -23,7 +23,6 @@ classifiers = [
2323
"Development Status :: 4 - Beta",
2424
"Intended Audience :: Developers",
2525
"Operating System :: OS Independent",
26-
"Programming Language :: Python :: 3.9",
2726
"Programming Language :: Python :: 3.10",
2827
"Programming Language :: Python :: 3.11",
2928
"Programming Language :: Python :: 3.12",

src/textual_fspicker/base_dialog.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
##############################################################################
88
# Python imports.
99
import sys
10+
from collections.abc import Callable
1011
from pathlib import Path
11-
from typing import Callable, Union
12+
from typing import TypeAlias
1213

1314
##############################################################################
1415
# Textual imports.
@@ -19,10 +20,6 @@
1920
from textual.screen import ModalScreen
2021
from textual.widgets import Button
2122

22-
##############################################################################
23-
# Typing extension imports.
24-
from typing_extensions import TypeAlias
25-
2623
##############################################################################
2724
# Local imports.
2825
from .parts import DirectoryNavigation, DriveNavigation
@@ -39,12 +36,12 @@ class InputBar(Horizontal):
3936

4037

4138
##############################################################################
42-
ButtonLabel: TypeAlias = Union[str, Callable[[str], str]]
39+
ButtonLabel: TypeAlias = str | Callable[[str], str]
4340
"""The type for a button label value."""
4441

4542

4643
##############################################################################
47-
class FileSystemPickerScreen(ModalScreen[Union[Path, None]]):
44+
class FileSystemPickerScreen(ModalScreen[Path | None]):
4845
"""Base screen for the dialogs in this library."""
4946

5047
DEFAULT_CSS = """

src/textual_fspicker/icons.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717

1818
##############################################################################
1919
# Python imports.
20+
from collections.abc import Callable
2021
from pathlib import Path
21-
from typing import Callable, Final
22+
from typing import Final
2223

2324
##############################################################################
2425
# Rich imports.

src/textual_fspicker/parts/directory_navigation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from dataclasses import dataclass
1111
from datetime import datetime
1212
from pathlib import Path
13-
from typing import ClassVar, Final, NamedTuple, Optional
13+
from typing import ClassVar, Final, NamedTuple
1414

1515
##############################################################################
1616
# Rich imports.
@@ -263,7 +263,7 @@ class PermissionError(_PathMessage):
263263
_location: var[Path] = var[Path](MakePath.of(".").absolute(), init=False)
264264
"""The current location for the directory."""
265265

266-
file_filter: var[Filter | None] = var[Optional[Filter]](None)
266+
file_filter: var[Filter | None] = var[Filter | None](None)
267267
"""The active file filter."""
268268

269269
show_files: var[bool] = var(True)

src/textual_fspicker/path_filters.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@
66

77
##############################################################################
88
# Python imports.
9+
from collections.abc import Callable
910
from pathlib import Path
10-
from typing import Callable, NamedTuple
11-
12-
##############################################################################
13-
# Typing extension imports.
14-
from typing_extensions import TypeAlias
11+
from typing import NamedTuple, TypeAlias
1512

1613
##############################################################################
1714
FilterFunction: TypeAlias = Callable[[Path], bool]

src/textual_fspicker/path_maker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class to use when making a fresh [Path][pathlib.Path] instance. Designed to
1313

1414
##############################################################################
1515
# Python imports.
16+
from collections.abc import Callable
1617
from pathlib import Path
17-
from typing import Callable
1818

1919

2020
##############################################################################

uv.lock

Lines changed: 483 additions & 464 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)