Skip to content

Commit 5a3960f

Browse files
authored
chore(deps): replace toml by tomli for py<3.11 as a fallback for "tomllib" (jxmorris12#179)
1 parent cab2dfc commit 5a3960f

9 files changed

Lines changed: 34 additions & 38 deletions

File tree

language_tool_python/__main__.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
from pathlib import Path
1515
from typing import TYPE_CHECKING, cast
1616

17-
import toml
18-
17+
from ._compat import toml_loads
1918
from .exceptions import LanguageToolError
2019
from .server import LanguageTool
2120

@@ -30,7 +29,7 @@
3029
project_root = Path(__file__).resolve().parent.parent
3130
pyproject = project_root / "pyproject.toml"
3231
with pyproject.open("rb") as f:
33-
__version__ = toml.loads(f.read().decode("utf-8"))["project"]["version"]
32+
__version__ = toml_loads(f.read().decode("utf-8"))["project"]["version"]
3433

3534

3635
logger = logging.getLogger(__name__)
@@ -40,7 +39,7 @@
4039
) as config_path,
4140
config_path.open("rb") as f,
4241
):
43-
log_config = toml.loads(f.read().decode("utf-8"))
42+
log_config = toml_loads(f.read().decode("utf-8"))
4443
dictConfig(log_config)
4544

4645

language_tool_python/_compat.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"""Compatibility helpers for Python-version-dependent imports.
2+
3+
This module centralizes the fallback imports used across the package:
4+
5+
- ``deprecated``: built-in ``warnings.deprecated`` on Python 3.13+, otherwise
6+
``typing_extensions.deprecated``.
7+
- ``toml_loads``: built-in ``tomllib.loads`` on Python 3.11+, otherwise
8+
``tomli.loads``.
9+
"""
10+
11+
import sys
12+
13+
if sys.version_info >= (3, 11):
14+
from tomllib import loads as toml_loads
15+
else:
16+
from tomli import loads as toml_loads
17+
18+
if sys.version_info >= (3, 13):
19+
from warnings import deprecated
20+
else:
21+
from typing_extensions import deprecated
22+
23+
__all__ = ["deprecated", "toml_loads"]

language_tool_python/_deprecated.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

language_tool_python/download_lt.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@
2121
from warnings import warn
2222

2323
import requests
24-
import toml
2524
import tqdm
2625
from packaging import version
2726
from packaging.version import Version
2827

29-
from ._deprecated import deprecated
28+
from ._compat import deprecated, toml_loads
3029
from .exceptions import JavaError, PathError
3130
from .safe_zip import SafeZipExtractor
3231
from .utils import (
@@ -83,7 +82,7 @@
8382
) as hashes_path,
8483
hashes_path.open("rb") as f,
8584
):
86-
EXPECTED_DOWNLOAD_SHA256 = toml.loads(f.read().decode("utf-8"))
85+
EXPECTED_DOWNLOAD_SHA256 = toml_loads(f.read().decode("utf-8"))
8786

8887
JAVA_VERSION_REGEX = re.compile(
8988
r'^(?:java|openjdk) version "(?P<major1>\d+)(|\.(?P<major2>\d+)\.[^"]+)"',

language_tool_python/match.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from functools import total_ordering
1010
from typing import TYPE_CHECKING
1111

12-
from ._deprecated import deprecated
12+
from ._compat import deprecated
1313
from .utils import SupportsFloat, SupportsInt
1414

1515
if TYPE_CHECKING:

language_tool_python/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import psutil
1818
from packaging import version
1919

20-
from ._deprecated import deprecated
20+
from ._compat import deprecated
2121
from .exceptions import JavaError, PathError
2222

2323
if TYPE_CHECKING:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ dependencies = [
3131
"tqdm",
3232
"packaging",
3333
"psutil",
34-
"toml",
34+
"tomli; python_version < '3.11'", # only needed for py < 3.11 because tomllib added in 3.11 is used in the codebase, needs a fallback
3535
"typing_extensions; python_version < '3.13'", # only needed for py < 3.13 because warnings.deprecated added in 3.13 is used in the codebase
3636
]
3737

tests/test_deprecated.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import warnings
66

7-
from language_tool_python._deprecated import deprecated
7+
from language_tool_python._compat import deprecated
88

99
EXPECTED_CUSTOM_WARNING_RESULT = 42
1010
EXPECTED_FUNCTION_SUM = 5

uv.lock

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

0 commit comments

Comments
 (0)