Skip to content

Commit 753aadf

Browse files
committed
refactor: switch to packaging instead of pkg_resources
Closes #139
1 parent f2cf2ce commit 753aadf

File tree

5 files changed

+31
-10
lines changed

5 files changed

+31
-10
lines changed

.github/workflows/ci-workflow.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
git config --global user.name "Example User"
3636
- name: Run test suite
3737
run: |
38+
uv run pip install .
3839
uv run pytest -v --cov=PyGitUp
3940
shell: bash
4041
- name: Verify dist package format

PyGitUp/gitup.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@
2323

2424
# 3rd party libs
2525
try:
26-
# noinspection PyUnresolvedReferences
27-
import pkg_resources as pkg
26+
from importlib import metadata
2827
except ImportError: # pragma: no cover
28+
metadata = None
2929
NO_DISTRIBUTE = True
3030
else: # pragma: no cover
3131
NO_DISTRIBUTE = False
3232

33+
from packaging.version import InvalidVersion, Version
34+
3335
import colorama
3436
from git import Repo, GitCmdObjectDB
3537
from termcolor import colored
@@ -59,7 +61,7 @@
5961

6062
def get_git_dir():
6163
toplevel_dir = execute(['git', 'rev-parse', '--show-toplevel'])
62-
if ON_WINDOWS and toplevel_dir[0] == '/':
64+
if ON_WINDOWS and toplevel_dir and toplevel_dir[0] == '/':
6365
toplevel_dir = execute(['cygpath', '-m', toplevel_dir])
6466

6567
if toplevel_dir is not None \
@@ -417,9 +419,22 @@ def version_info(self):
417419
""" Tell, what version we're running at and if it's up to date. """
418420

419421
# Retrive and show local version info
420-
package = pkg.get_distribution('git-up')
421-
local_version_str = package.version
422-
local_version = package.parsed_version
422+
try:
423+
local_version_str = metadata.version('git-up')
424+
except (AttributeError, metadata.PackageNotFoundError):
425+
print(
426+
colored(
427+
"Please install 'git-up' via pip in order to get version information.",
428+
'yellow',
429+
)
430+
)
431+
return
432+
433+
try:
434+
local_version = Version(local_version_str)
435+
except InvalidVersion:
436+
print('GitUp version is: ' + colored('v' + local_version_str, 'green'))
437+
return
423438

424439
print('GitUp version is: ' + colored('v' + local_version_str, 'green'))
425440

@@ -437,7 +452,10 @@ def version_info(self):
437452
except (HTTPError, URLError, ValueError):
438453
recent = True # To not disturb the user with HTTP/parsing errors
439454
else:
440-
recent = local_version >= pkg.parse_version(online_version)
455+
try:
456+
recent = local_version >= Version(online_version)
457+
except InvalidVersion:
458+
recent = True
441459

442460
if not recent:
443461
# noinspection PyUnboundLocalVariable

PyGitUp/tests/test_version.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
def test_version():
1212
""" Run 'git up': Check version """
1313
try:
14-
import pkg_resources as pkg
14+
from importlib import metadata
1515
except ImportError:
1616
pytest.skip('pip not installed')
1717

@@ -25,7 +25,6 @@ def test_version():
2525
GitUp(sparse=True).version_info()
2626
stdout = stdout.getvalue()
2727

28-
package = pkg.get_distribution('git-up')
29-
local_version_str = package.version
28+
local_version_str = metadata.version('git-up')
3029

3130
assert local_version_str in stdout

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ classifiers = [
2525
dependencies = [
2626
"GitPython~=3.1",
2727
"colorama~=0.4",
28+
"packaging~=25.0",
2829
"termcolor~=3.2",
2930
]
3031

uv.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)