2222
2323import requests
2424import tqdm
25- from packaging import version
26- from packaging .version import Version
2725
2826from ._compat import deprecated , toml_loads
2927from .exceptions import JavaError , PathError
3230 LTP_JAR_DIR_PATH_ENV_VAR ,
3331 get_env_int ,
3432 get_language_tool_download_path ,
33+ version_tuple ,
3534)
3635
3736if TYPE_CHECKING :
@@ -275,7 +274,7 @@ def confirm_java_compatibility(
275274
276275 is_old_version = language_tool_version != LTP_DOWNLOAD_VERSION and (
277276 re .match (r"^\d+\.\d+$" , language_tool_version )
278- and Version (language_tool_version ) < Version ( "6.6" )
277+ and version_tuple (language_tool_version ) < ( 6 , 6 ) # 6.6
279278 )
280279
281280 # Some installs of java show the version number like '14.0.1'
@@ -765,15 +764,15 @@ def version_name(self) -> str:
765764
766765 @property
767766 @abstractmethod
768- def version_into (self ) -> Version | datetime :
767+ def version_into (self ) -> tuple [ int , int ] | datetime :
769768 """Get the version as a comparable object.
770769
771770 This abstract property must be implemented by subclasses to return the version
772- as either a Version object (for releases) or datetime object (for snapshots) for
773- comparison purposes.
771+ as either a tuple of integers (for releases) or datetime object (for snapshots)
772+ for comparison purposes.
774773
775- :return: A Version object for releases or datetime for snapshots.
776- :rtype: Version | datetime
774+ :return: A tuple of integers for releases or datetime for snapshots.
775+ :rtype: tuple[int, int] | datetime
777776 :raises NotImplementedError: Always, unless implemented by a subclass.
778777 """
779778 raise NotImplementedError
@@ -835,8 +834,7 @@ def __lt__(self, other: object) -> bool:
835834 self_version = self .version_into
836835 other_version = other .version_into
837836 if (
838- isinstance (self_version , Version )
839- and isinstance (other_version , Version )
837+ isinstance (self_version , tuple ) and isinstance (other_version , tuple )
840838 ) or (
841839 isinstance (self_version , datetime )
842840 and isinstance (other_version , datetime )
@@ -919,13 +917,13 @@ def version_name(self) -> str:
919917 return self ._version_name
920918
921919 @property
922- def version_into (self ) -> Version :
923- """Get the version as a Version object for comparison.
920+ def version_into (self ) -> tuple [ int , int ] :
921+ """Get the version as a tuple of integers for comparison.
924922
925- :return: A parsed Version object from the version string .
926- :rtype: Version
923+ :return: A tuple of integers representing the version.
924+ :rtype: tuple[int, int]
927925 """
928- return version . parse (self ._version_name )
926+ return version_tuple (self ._version_name )
929927
930928 @property
931929 def download_url (self ) -> str :
@@ -941,16 +939,16 @@ def download_url(self) -> str:
941939 :rtype: str
942940 :raises PathError: If the version is below 4.0 (unsupported).
943941 """
944- version_num = Version (self ._version_name )
942+ version_num = version_tuple (self ._version_name )
945943 filename = FILENAME_RELEASE .format (version = self ._version_name )
946944 # Versions >= 6.7 from new release page
947- if version_num >= Version ( "6.7" ):
945+ if version_num >= ( 6 , 7 ): # 6.7
948946 base_url = BASE_URL_NEW_RELEASES .format (version = self ._version_name )
949947 return urljoin (base_url , filename )
950948 # Versions >= 6.0 from main download page
951- if version_num >= Version ( "6.0" ):
949+ if version_num >= ( 6 , 0 ): # 6.0
952950 return urljoin (BASE_URL_RELEASE , filename )
953- if version_num < Version ( "4.0" ):
951+ if version_num < ( 4 , 0 ): # 4.0
954952 err = (
955953 "LanguageTool versions below 4.0 are no longer supported for download."
956954 " Below version 4.0, the API changed significantly and is "
0 commit comments