move parse_version to pre_commit.clientlib

This commit is contained in:
Anthony Sottile
2023-01-01 17:17:00 -05:00
parent 092e9a50ae
commit 5425c754a0
5 changed files with 13 additions and 14 deletions

View File

@@ -14,7 +14,6 @@ from identify.identify import ALL_TAGS
import pre_commit.constants as C
from pre_commit.errors import FatalError
from pre_commit.languages.all import all_languages
from pre_commit.util import parse_version
from pre_commit.util import yaml_load
logger = logging.getLogger('pre_commit')
@@ -30,6 +29,11 @@ def check_type_tag(tag: str) -> None:
)
def parse_version(s: str) -> tuple[int, ...]:
"""poor man's version comparison"""
return tuple(int(p) for p in s.split('.'))
def check_min_version(version: str) -> None:
if parse_version(version) > parse_version(C.VERSION):
raise cfgv.ValidationError(

View File

@@ -10,12 +10,12 @@ import pre_commit.constants as C
from pre_commit.clientlib import load_manifest
from pre_commit.clientlib import LOCAL
from pre_commit.clientlib import META
from pre_commit.clientlib import parse_version
from pre_commit.hook import Hook
from pre_commit.languages.all import languages
from pre_commit.languages.helpers import environment_dir
from pre_commit.prefix import Prefix
from pre_commit.store import Store
from pre_commit.util import parse_version
from pre_commit.util import rmtree

View File

@@ -254,10 +254,5 @@ def rmtree(path: str) -> None:
shutil.rmtree(path, ignore_errors=False, onerror=handle_remove_readonly)
def parse_version(s: str) -> tuple[int, ...]:
"""poor man's version comparison"""
return tuple(int(p) for p in s.split('.'))
def win_exe(s: str) -> str:
return s if sys.platform != 'win32' else f'{s}.exe'

View File

@@ -16,6 +16,7 @@ from pre_commit.clientlib import MANIFEST_SCHEMA
from pre_commit.clientlib import META_HOOK_DICT
from pre_commit.clientlib import OptionalSensibleRegexAtHook
from pre_commit.clientlib import OptionalSensibleRegexAtTop
from pre_commit.clientlib import parse_version
from testing.fixtures import sample_local_config
@@ -384,6 +385,12 @@ def test_default_language_version_invalid(mapping):
cfgv.validate(mapping, DEFAULT_LANGUAGE_VERSION)
def test_parse_version():
assert parse_version('0.0') == parse_version('0.0')
assert parse_version('0.1') > parse_version('0.0')
assert parse_version('2.1') >= parse_version('2')
def test_minimum_pre_commit_version_failing():
with pytest.raises(cfgv.ValidationError) as excinfo:
cfg = {'repos': [], 'minimum_pre_commit_version': '999'}

View File

@@ -12,7 +12,6 @@ from pre_commit.util import cmd_output
from pre_commit.util import cmd_output_b
from pre_commit.util import cmd_output_p
from pre_commit.util import make_executable
from pre_commit.util import parse_version
from pre_commit.util import rmtree
from pre_commit.util import tmpdir
@@ -105,12 +104,6 @@ def test_cmd_output_no_shebang(tmpdir, fn):
assert out.endswith(b'\n')
def test_parse_version():
assert parse_version('0.0') == parse_version('0.0')
assert parse_version('0.1') > parse_version('0.0')
assert parse_version('2.1') >= parse_version('2')
def test_rmtree_read_only_directories(tmpdir):
"""Simulates the go module tree. See #1042"""
tmpdir.join('x/y/z').ensure_dir().join('a').ensure()