Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ebe5132

Browse files
committed
Replace pkg_resources.get_distribution with importlib-metadata
1 parent 9c37473 commit ebe5132

5 files changed

Lines changed: 20 additions & 7 deletions

File tree

pre_commit/constants.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import absolute_import
22
from __future__ import unicode_literals
33

4-
import pkg_resources
4+
import importlib_metadata # TODO: importlib.metadata py38?
55

66
CONFIG_FILE = '.pre-commit-config.yaml'
77
MANIFEST_FILE = '.pre-commit-hooks.yaml'
@@ -18,8 +18,7 @@
1818
# Bump when modifying `empty_template`
1919
LOCAL_REPO_VERSION = '1'
2020

21-
VERSION = pkg_resources.get_distribution('pre-commit').version
22-
VERSION_PARSED = pkg_resources.parse_version(VERSION)
21+
VERSION = importlib_metadata.version('pre_commit')
2322

2423
# `manual` is not invoked by any installed git hook. See #719
2524
STAGES = ('commit', 'commit-msg', 'manual', 'push')

pre_commit/repository.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import shutil
99
import sys
1010

11-
import pkg_resources
1211
from cached_property import cached_property
1312
from cfgv import apply_defaults
1413
from cfgv import validate
@@ -23,6 +22,7 @@
2322
from pre_commit.languages.all import languages
2423
from pre_commit.languages.helpers import environment_dir
2524
from pre_commit.prefix import Prefix
25+
from pre_commit.util import parse_version
2626

2727

2828
logger = logging.getLogger('pre_commit')
@@ -110,13 +110,13 @@ def _hook(*hook_dicts):
110110
for dct in rest:
111111
ret.update(dct)
112112

113-
version = pkg_resources.parse_version(ret['minimum_pre_commit_version'])
114-
if version > C.VERSION_PARSED:
113+
version = ret['minimum_pre_commit_version']
114+
if parse_version(version) > parse_version(C.VERSION):
115115
logger.error(
116116
'The hook `{}` requires pre-commit version {} but version {} '
117117
'is installed. '
118118
'Perhaps run `pip install --upgrade pre-commit`.'.format(
119-
ret['id'], version, C.VERSION_PARSED,
119+
ret['id'], version, C.VERSION,
120120
),
121121
)
122122
exit(1)

pre_commit/util.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,8 @@ def copy_tree_to_path(src_dir, dest_dir):
211211
shutil.copytree(srcname, destname)
212212
else:
213213
shutil.copy(srcname, destname)
214+
215+
216+
def parse_version(s):
217+
"""poor man's version comparison"""
218+
return tuple(int(p) for p in s.split('.'))

setup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
'cached-property',
4141
'cfgv>=1.0.0',
4242
'identify>=1.0.0',
43+
# if this makes it into python3.8 move to extras_require
44+
'importlib-metadata',
4345
'nodeenv>=0.11.1',
4446
'pyyaml',
4547
'six',

tests/util_test.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from pre_commit.util import clean_path_on_failure
1010
from pre_commit.util import cmd_output
1111
from pre_commit.util import memoize_by_cwd
12+
from pre_commit.util import parse_version
1213
from pre_commit.util import tmpdir
1314
from testing.util import cwd
1415

@@ -117,3 +118,9 @@ def test_cmd_output_exe_not_found():
117118
ret, out, _ = cmd_output('i-dont-exist', retcode=None)
118119
assert ret == 1
119120
assert out == 'Executable `i-dont-exist` not found'
121+
122+
123+
def test_parse_version():
124+
assert parse_version('0.0') == parse_version('0.0')
125+
assert parse_version('0.1') > parse_version('0.0')
126+
assert parse_version('2.1') >= parse_version('2')

0 commit comments

Comments
 (0)