Blob Blame History Raw
From e21f61ab1bd3d3308b679cc14c99fc1dc514958e Mon Sep 17 00:00:00 2001
From: Kenji Brameld <kenjibrameld@gmail.com>
Date: Thu, 9 Mar 2023 18:35:51 -0600
Subject: [PATCH] Replace pkg_resources.parse_version with
 packaging.version.parse (#693)

* replace parse_version with packaging.version.parse

Signed-off-by: ijnek <kenjibrameld@gmail.com>

* lstrip upstream/

Signed-off-by: ijnek <kenjibrameld@gmail.com>

* prevent conflict of "version" word

Signed-off-by: ijnek <kenjibrameld@gmail.com>

* use regex to get version number

Signed-off-by: ijnek <kenjibrameld@gmail.com>

* Update bloom/logging.py

Co-authored-by: Jochen Sprickerhof <github@jochen.sprickerhof.de>

* import version.parse as parse_version

Signed-off-by: ijnek <kenjibrameld@gmail.com>

* change to use parse_version instead of version.parse, because "version" is used as variables everywhere

Signed-off-by: ijnek <kenjibrameld@gmail.com>

---------

Signed-off-by: ijnek <kenjibrameld@gmail.com>
Co-authored-by: Jochen Sprickerhof <github@jochen.sprickerhof.de>
---
 .github/workflows/ci.yaml             |  2 +-
 bloom/commands/git/import_upstream.py |  2 +-
 bloom/commands/release.py             |  2 --
 bloom/commands/update.py              |  2 +-
 bloom/generators/debian/generator.py  |  2 +-
 bloom/generators/release.py           |  2 +-
 bloom/git.py                          |  7 ++++---
 bloom/logging.py                      | 17 ++++++-----------
 bloom/rosdistro_api.py                |  2 +-
 setup.py                              |  1 +
 10 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 3c13a4b..8ef2e68 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -29,7 +29,7 @@ jobs:
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip setuptools
-          python -m pip install PyYAML argparse empy rosdep vcstools catkin-pkg python-dateutil
+          python -m pip install PyYAML argparse empy rosdep vcstools catkin-pkg python-dateutil packaging
           python -m pip install nose coverage pep8
       - name: Run tests
         run: |
diff --git a/bloom/commands/git/import_upstream.py b/bloom/commands/git/import_upstream.py
index 74bbbbf..3a2d79b 100755
--- a/bloom/commands/git/import_upstream.py
+++ b/bloom/commands/git/import_upstream.py
@@ -39,7 +39,7 @@ import sys
 import tarfile
 import tempfile
 
-from pkg_resources import parse_version
+from packaging.version import parse as parse_version
 
 try:
     from urlparse import urlparse
diff --git a/bloom/commands/release.py b/bloom/commands/release.py
index 33dc101..c5f6dd9 100644
--- a/bloom/commands/release.py
+++ b/bloom/commands/release.py
@@ -49,8 +49,6 @@ import traceback
 import webbrowser
 import yaml
 
-from pkg_resources import parse_version
-
 # python2/3 compatibility
 try:
     from urllib.error import HTTPError, URLError
diff --git a/bloom/commands/update.py b/bloom/commands/update.py
index 63486f0..692c849 100644
--- a/bloom/commands/update.py
+++ b/bloom/commands/update.py
@@ -51,7 +51,7 @@ from bloom.logging import warning
 from bloom.util import add_global_arguments
 from bloom.util import handle_global_arguments
 
-from pkg_resources import parse_version
+from packaging.version import parse as parse_version
 from threading import Lock
 
 _updater_running = False
diff --git a/bloom/generators/debian/generator.py b/bloom/generators/debian/generator.py
index 6e1a9af..fe629c8 100644
--- a/bloom/generators/debian/generator.py
+++ b/bloom/generators/debian/generator.py
@@ -49,7 +49,7 @@ try:
 except ImportError:
     from ConfigParser import SafeConfigParser
 from dateutil import tz
-from pkg_resources import parse_version
+from packaging.version import parse as parse_version
 
 from bloom.generators import BloomGenerator
 from bloom.generators import GeneratorError
diff --git a/bloom/generators/release.py b/bloom/generators/release.py
index 067edfc..5eeb4a3 100755
--- a/bloom/generators/release.py
+++ b/bloom/generators/release.py
@@ -53,7 +53,7 @@ from bloom.commands.git.patch.trim_cmd import trim
 
 try:
     import catkin_pkg
-    from pkg_resources import parse_version
+    from packaging.version import parse as parse_version
     if parse_version(catkin_pkg.__version__) < parse_version('0.3.8'):
         warning("This version of bloom requires catkin_pkg version >= '0.3.8',"
                 " the used version of catkin_pkg is '{0}'".format(catkin_pkg.__version__))
diff --git a/bloom/git.py b/bloom/git.py
index e22e48a..6a0ea58 100755
--- a/bloom/git.py
+++ b/bloom/git.py
@@ -36,6 +36,7 @@ from __future__ import print_function
 
 import os
 import functools
+import re
 import shutil
 import subprocess
 import tempfile
@@ -43,8 +44,6 @@ import tempfile
 from subprocess import PIPE
 from subprocess import CalledProcessError
 
-from pkg_resources import parse_version
-
 from bloom.logging import debug
 from bloom.logging import error
 from bloom.logging import fmt
@@ -686,7 +685,9 @@ def get_last_tag_by_version(directory=None):
     versions = []
     for line in output.splitlines():
         tags.append(line.strip())
-        versions.append(parse_version(line.strip()))
+        ver = re.match(r"[0-9]+\.[0-9]+\.[0-9]+", line)
+        if ver:
+            versions.append(ver)
     return tags[versions.index(max(versions))] if versions else ''
 
 
diff --git a/bloom/logging.py b/bloom/logging.py
index efc9931..c38c828 100755
--- a/bloom/logging.py
+++ b/bloom/logging.py
@@ -39,11 +39,6 @@ import atexit
 import datetime
 import os
 from platform import mac_ver
-try:
-    from pkg_resources import parse_version
-except OSError:
-    os.chdir(os.path.expanduser('~'))
-    from pkg_resources import parse_version
 import re
 import string
 import sys
@@ -60,7 +55,7 @@ _drop_first_log_prefix = False
 
 _emoji_check_mark = "✅  "
 _emoji_cross_mark = "❌  "
-_is_mac_lion_or_greater = parse_version(mac_ver()[0]) >= parse_version('10.7.0')
+_is_mac = (mac_ver()[0] != '')
 
 
 def ansi(key):
@@ -127,17 +122,17 @@ def disable_ANSI_colors():
         _ansi[key] = ''
 
 
-def is_mac_lion_or_greater():
-    global _is_mac_lion_or_greater
-    return _is_mac_lion_or_greater
+def _is_mac():
+    global _is_mac
+    return _is_mac
 
 
 def get_success_prefix():
-    return _emoji_check_mark if _is_mac_lion_or_greater else "@{gf}<== @|"
+    return _emoji_check_mark if _is_mac else "@{gf}<== @|"
 
 
 def get_error_prefix():
-    return _emoji_cross_mark if _is_mac_lion_or_greater else "@{rf}@!<== @|"
+    return _emoji_cross_mark if _is_mac else "@{rf}@!<== @|"
 
 
 # Default to ansi colors on
diff --git a/bloom/rosdistro_api.py b/bloom/rosdistro_api.py
index 72e03e1..b951952 100644
--- a/bloom/rosdistro_api.py
+++ b/bloom/rosdistro_api.py
@@ -38,7 +38,7 @@ import os
 import sys
 import traceback
 
-from pkg_resources import parse_version
+from packaging.version import parse as parse_version
 
 # python2/3 compatibility
 try:
diff --git a/setup.py b/setup.py
index 159b964..8729e72 100755
--- a/setup.py
+++ b/setup.py
@@ -7,6 +7,7 @@ install_requires = [
     'catkin_pkg >= 0.4.3',
     'setuptools',
     'empy',
+    'packaging',
     'python-dateutil',
     'PyYAML',
     'rosdep >= 0.15.0',
-- 
2.39.2