Skip to content

Commit 72c0702

Browse files
committed
fix: accept only latest as snapshot, to avoid handling installed snapshots
1 parent 3d083b9 commit 72c0702

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

language_tool_python/download_lt.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import subprocess
88
import tempfile
99
import tqdm
10-
import json
1110
from typing import IO, Dict, Optional, Tuple
1211
import zipfile
1312
from datetime import datetime
@@ -35,7 +34,6 @@
3534

3635
LTP_DOWNLOAD_VERSION = 'latest'
3736
LT_SNAPSHOT_CURRENT_VERSION = '6.7-SNAPSHOT'
38-
SNAPSHOT_MAP_FILE = "snapshots.json"
3937

4038
JAVA_VERSION_REGEX = re.compile(
4139
r'^(?:java|openjdk) version "(?P<major1>\d+)(|\.(?P<major2>\d+)\.[^"]+)"',
@@ -206,6 +204,7 @@ def download_lt(language_tool_version: Optional[str] = LTP_DOWNLOAD_VERSION) ->
206204
LTP_DOWNLOAD_VERSION is used.
207205
:type language_tool_version: Optional[str]
208206
:raises AssertionError: If the download folder is not a directory.
207+
:raises ValueError: If the specified version format is invalid.
209208
"""
210209

211210
confirm_java_compatibility(language_tool_version)
@@ -228,12 +227,20 @@ def download_lt(language_tool_version: Optional[str] = LTP_DOWNLOAD_VERSION) ->
228227
if re.match(r'^\d+\.\d+$', version):
229228
filename = FILENAME_RELEASE.format(version=version)
230229
language_tool_download_url = urljoin(BASE_URL_RELEASE, filename)
231-
dirname, _ = os.path.splitext(filename)
232-
extract_path = os.path.join(download_folder, dirname)
233-
if extract_path in old_path_list:
234-
return
235-
elif version == 'latest':
230+
elif version == "latest":
236231
filename = FILENAME_SNAPSHOT.format(version=version)
232+
language_tool_download_url = urljoin(BASE_URL_SNAPSHOT, filename)
233+
else:
234+
raise ValueError(
235+
f"You can only download a specific version of LanguageTool if it is "
236+
f"formatted like 'x.y' (e.g. '5.4'). The version you provided is {version}."
237+
f"You can also use 'latest' to download the latest snapshot of LanguageTool."
238+
)
239+
dirname, _ = os.path.splitext(filename)
240+
dirname = dirname.replace('latest', LT_SNAPSHOT_CURRENT_VERSION)
241+
if version == "latest":
237242
dirname = f"LanguageTool-{LT_SNAPSHOT_CURRENT_VERSION}"
243+
extract_path = os.path.join(download_folder, dirname)
238244

239-
download_zip(language_tool_download_url, download_folder)
245+
if extract_path not in old_path_list:
246+
download_zip(language_tool_download_url, download_folder)

tests/test_major_functionality.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ def test_special_char_in_text():
266266
def test_install_inexistent_version():
267267
import language_tool_python
268268
with pytest.raises(LanguageToolError):
269-
language_tool_python.LanguageTool(language_tool_download_version="0.0.0")
269+
language_tool_python.LanguageTool(language_tool_download_version="0.0")
270270

271271
def test_inexistant_language():
272272
import language_tool_python

0 commit comments

Comments
 (0)