Replace pkg_resources.get_distribution with importlib-metadata

This commit is contained in:
Anthony Sottile 2018-10-14 12:24:59 -07:00
parent 9c37473256
commit ebe5132576
5 changed files with 20 additions and 7 deletions

View file

@ -1,7 +1,7 @@
from __future__ import absolute_import
from __future__ import unicode_literals
import pkg_resources
import importlib_metadata # TODO: importlib.metadata py38?
CONFIG_FILE = '.pre-commit-config.yaml'
MANIFEST_FILE = '.pre-commit-hooks.yaml'
@ -18,8 +18,7 @@ INSTALLED_STATE_VERSION = '1'
# Bump when modifying `empty_template`
LOCAL_REPO_VERSION = '1'
VERSION = pkg_resources.get_distribution('pre-commit').version
VERSION_PARSED = pkg_resources.parse_version(VERSION)
VERSION = importlib_metadata.version('pre_commit')
# `manual` is not invoked by any installed git hook. See #719
STAGES = ('commit', 'commit-msg', 'manual', 'push')

View file

@ -8,7 +8,6 @@ import pipes
import shutil
import sys
import pkg_resources
from cached_property import cached_property
from cfgv import apply_defaults
from cfgv import validate
@ -23,6 +22,7 @@ from pre_commit.clientlib import MANIFEST_HOOK_DICT
from pre_commit.languages.all import languages
from pre_commit.languages.helpers import environment_dir
from pre_commit.prefix import Prefix
from pre_commit.util import parse_version
logger = logging.getLogger('pre_commit')
@ -110,13 +110,13 @@ def _hook(*hook_dicts):
for dct in rest:
ret.update(dct)
version = pkg_resources.parse_version(ret['minimum_pre_commit_version'])
if version > C.VERSION_PARSED:
version = ret['minimum_pre_commit_version']
if parse_version(version) > parse_version(C.VERSION):
logger.error(
'The hook `{}` requires pre-commit version {} but version {} '
'is installed. '
'Perhaps run `pip install --upgrade pre-commit`.'.format(
ret['id'], version, C.VERSION_PARSED,
ret['id'], version, C.VERSION,
),
)
exit(1)

View file

@ -211,3 +211,8 @@ def copy_tree_to_path(src_dir, dest_dir):
shutil.copytree(srcname, destname)
else:
shutil.copy(srcname, destname)
def parse_version(s):
"""poor man's version comparison"""
return tuple(int(p) for p in s.split('.'))