From 8a1e957b600d50c9b693cdde011da7f60dfbfe7a Mon Sep 17 00:00:00 2001 From: ijnek Date: Thu, 2 Feb 2023 03:08:15 +0000 Subject: [PATCH 1/7] replace parse_version with packaging.version.parse Signed-off-by: ijnek --- .github/workflows/ci.yaml | 2 +- bloom/commands/git/import_upstream.py | 4 ++-- bloom/commands/release.py | 2 +- bloom/commands/update.py | 4 ++-- bloom/generators/debian/generator.py | 4 ++-- bloom/generators/release.py | 4 ++-- bloom/git.py | 4 ++-- bloom/logging.py | 17 ++++++----------- bloom/rosdistro_api.py | 4 ++-- setup.py | 1 + 10 files changed, 21 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3c13a4b6..8ef2e688 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 74bbbbfd..dcfcc1e6 100755 --- a/bloom/commands/git/import_upstream.py +++ b/bloom/commands/git/import_upstream.py @@ -39,7 +39,7 @@ import tarfile import tempfile -from pkg_resources import parse_version +from packaging import version try: from urlparse import urlparse @@ -87,7 +87,7 @@ def version_check(version): info(fmt("The latest upstream tag in the release repository is '@!{0}@|'." .format(last_tag.replace('@', '@@')))) # Ensure the new version is greater than the last tag - if parse_version(version) < parse_version(last_tag_version): + if version.parse(version) < version.parse(last_tag_version): warning("""\ Version discrepancy: The upstream version '{0}' isn't newer than upstream version '{1}'. diff --git a/bloom/commands/release.py b/bloom/commands/release.py index dc68d50e..06c5dbad 100644 --- a/bloom/commands/release.py +++ b/bloom/commands/release.py @@ -49,7 +49,7 @@ import webbrowser import yaml -from pkg_resources import parse_version +from packaging import version # python2/3 compatibility try: diff --git a/bloom/commands/update.py b/bloom/commands/update.py index 63486f08..d300a1a9 100644 --- a/bloom/commands/update.py +++ b/bloom/commands/update.py @@ -51,7 +51,7 @@ from bloom.util import add_global_arguments from bloom.util import handle_global_arguments -from pkg_resources import parse_version +from packaging import version from threading import Lock _updater_running = False @@ -115,7 +115,7 @@ def fetch_update(user_bloom): newest_version = pypi_result['info']['version'] current_version = bloom.__version__ if newest_version and bloom.__version__ != 'unset': - if parse_version(bloom.__version__) < parse_version(newest_version): + if version.parse(bloom.__version__) < version.parse(newest_version): version_dict = { 'current': str(current_version), 'newest': str(newest_version) diff --git a/bloom/generators/debian/generator.py b/bloom/generators/debian/generator.py index 6e1a9af3..7bd50ad5 100644 --- a/bloom/generators/debian/generator.py +++ b/bloom/generators/debian/generator.py @@ -49,7 +49,7 @@ except ImportError: from ConfigParser import SafeConfigParser from dateutil import tz -from pkg_resources import parse_version +from packaging import version from bloom.generators import BloomGenerator from bloom.generators import GeneratorError @@ -449,7 +449,7 @@ def generate_substitutions_from_package( bad_changelog = True # Make sure that the current version is the latest in the changelog for changelog in changelogs: - if parse_version(package.version) < parse_version(changelog[0]): + if version.parse(package.version) < version.parse(changelog[0]): error("") error("There is at least one changelog entry, '{0}', which has a " "newer version than the version of package '{1}' being released, '{2}'." diff --git a/bloom/generators/release.py b/bloom/generators/release.py index 067edfcb..1ffa0298 100755 --- a/bloom/generators/release.py +++ b/bloom/generators/release.py @@ -53,8 +53,8 @@ try: import catkin_pkg - from pkg_resources import parse_version - if parse_version(catkin_pkg.__version__) < parse_version('0.3.8'): + from packaging import version + if version.parse(catkin_pkg.__version__) < version.parse('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__)) from catkin_pkg import metapackage diff --git a/bloom/git.py b/bloom/git.py index e22e48a8..dc130674 100755 --- a/bloom/git.py +++ b/bloom/git.py @@ -43,7 +43,7 @@ from subprocess import PIPE from subprocess import CalledProcessError -from pkg_resources import parse_version +from packaging import version from bloom.logging import debug from bloom.logging import error @@ -686,7 +686,7 @@ def get_last_tag_by_version(directory=None): versions = [] for line in output.splitlines(): tags.append(line.strip()) - versions.append(parse_version(line.strip())) + versions.append(version.parse(line.strip())) return tags[versions.index(max(versions))] if versions else '' diff --git a/bloom/logging.py b/bloom/logging.py index efc9931b..bb27ca46 100755 --- a/bloom/logging.py +++ b/bloom/logging.py @@ -39,11 +39,6 @@ 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 @@ _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] is not '') 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 72e03e15..eea46189 100644 --- a/bloom/rosdistro_api.py +++ b/bloom/rosdistro_api.py @@ -38,7 +38,7 @@ import sys import traceback -from pkg_resources import parse_version +from packaging import version # python2/3 compatibility try: @@ -58,7 +58,7 @@ try: import rosdistro - if parse_version(rosdistro.__version__) < parse_version('0.7.0'): + if version.parse(rosdistro.__version__) < version.parse('0.7.0'): error("rosdistro version 0.7.0 or greater is required, found '{0}' from '{1}'." .format(rosdistro.__version__, os.path.dirname(rosdistro.__file__)), exit=True) diff --git a/setup.py b/setup.py index 159b9645..8729e72f 100755 --- a/setup.py +++ b/setup.py @@ -7,6 +7,7 @@ 'catkin_pkg >= 0.4.3', 'setuptools', 'empy', + 'packaging', 'python-dateutil', 'PyYAML', 'rosdep >= 0.15.0', From ff1483bff7d92f0b2209c734306db7c4f880250e Mon Sep 17 00:00:00 2001 From: ijnek Date: Thu, 2 Feb 2023 03:36:29 +0000 Subject: [PATCH 2/7] lstrip upstream/ Signed-off-by: ijnek --- bloom/git.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bloom/git.py b/bloom/git.py index dc130674..88dfce3d 100755 --- a/bloom/git.py +++ b/bloom/git.py @@ -686,7 +686,7 @@ def get_last_tag_by_version(directory=None): versions = [] for line in output.splitlines(): tags.append(line.strip()) - versions.append(version.parse(line.strip())) + versions.append(version.parse(line.lstrip('upstream/').strip())) return tags[versions.index(max(versions))] if versions else '' From 57f13b132f53db3b7b363c77798e02ddd0078b6c Mon Sep 17 00:00:00 2001 From: ijnek Date: Thu, 2 Feb 2023 03:42:55 +0000 Subject: [PATCH 3/7] prevent conflict of "version" word Signed-off-by: ijnek --- bloom/commands/git/import_upstream.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bloom/commands/git/import_upstream.py b/bloom/commands/git/import_upstream.py index dcfcc1e6..8444db85 100755 --- a/bloom/commands/git/import_upstream.py +++ b/bloom/commands/git/import_upstream.py @@ -39,7 +39,7 @@ import tarfile import tempfile -from packaging import version +from packaging.version import parse try: from urlparse import urlparse @@ -87,7 +87,7 @@ def version_check(version): info(fmt("The latest upstream tag in the release repository is '@!{0}@|'." .format(last_tag.replace('@', '@@')))) # Ensure the new version is greater than the last tag - if version.parse(version) < version.parse(last_tag_version): + if parse(version) < parse(last_tag_version): warning("""\ Version discrepancy: The upstream version '{0}' isn't newer than upstream version '{1}'. From c4c1049e2b8a0e8cc94f3e310615ce03ae8d7fd4 Mon Sep 17 00:00:00 2001 From: ijnek Date: Thu, 2 Feb 2023 03:54:35 +0000 Subject: [PATCH 4/7] use regex to get version number Signed-off-by: ijnek --- bloom/git.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bloom/git.py b/bloom/git.py index 88dfce3d..3411b68e 100755 --- a/bloom/git.py +++ b/bloom/git.py @@ -36,6 +36,7 @@ import os import functools +import re import shutil import subprocess import tempfile @@ -686,7 +687,9 @@ def get_last_tag_by_version(directory=None): versions = [] for line in output.splitlines(): tags.append(line.strip()) - versions.append(version.parse(line.lstrip('upstream/').strip())) + ver = re.match("[0-9]+.[0-9]+.[0-9]+", line) + if ver: + versions.append(ver) return tags[versions.index(max(versions))] if versions else '' From a228a513dc79cb2df81b4e30e47d32f47279d648 Mon Sep 17 00:00:00 2001 From: Kenji Brameld Date: Wed, 8 Feb 2023 17:58:34 -0600 Subject: [PATCH 5/7] Update bloom/logging.py Co-authored-by: Jochen Sprickerhof --- bloom/logging.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bloom/logging.py b/bloom/logging.py index bb27ca46..c38c828d 100755 --- a/bloom/logging.py +++ b/bloom/logging.py @@ -55,7 +55,7 @@ _emoji_check_mark = "✅ " _emoji_cross_mark = "❌ " -_is_mac = (mac_ver()[0] is not '') +_is_mac = (mac_ver()[0] != '') def ansi(key): From d8e4d15ca58753f70315cf2df49d7c8248633aa9 Mon Sep 17 00:00:00 2001 From: ijnek Date: Sun, 5 Mar 2023 22:02:48 -0600 Subject: [PATCH 6/7] import version.parse as parse_version Signed-off-by: ijnek --- bloom/commands/git/import_upstream.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bloom/commands/git/import_upstream.py b/bloom/commands/git/import_upstream.py index 8444db85..3a2d79b9 100755 --- a/bloom/commands/git/import_upstream.py +++ b/bloom/commands/git/import_upstream.py @@ -39,7 +39,7 @@ import tarfile import tempfile -from packaging.version import parse +from packaging.version import parse as parse_version try: from urlparse import urlparse @@ -87,7 +87,7 @@ def version_check(version): info(fmt("The latest upstream tag in the release repository is '@!{0}@|'." .format(last_tag.replace('@', '@@')))) # Ensure the new version is greater than the last tag - if parse(version) < parse(last_tag_version): + if parse_version(version) < parse_version(last_tag_version): warning("""\ Version discrepancy: The upstream version '{0}' isn't newer than upstream version '{1}'. From cd2031799a3e00296d70a47f0440326c67ea64d6 Mon Sep 17 00:00:00 2001 From: ijnek Date: Sun, 5 Mar 2023 22:25:30 -0600 Subject: [PATCH 7/7] change to use parse_version instead of version.parse, because "version" is used as variables everywhere Signed-off-by: ijnek --- bloom/commands/release.py | 2 -- bloom/commands/update.py | 4 ++-- bloom/generators/debian/generator.py | 4 ++-- bloom/generators/release.py | 4 ++-- bloom/git.py | 4 +--- bloom/rosdistro_api.py | 4 ++-- 6 files changed, 9 insertions(+), 13 deletions(-) diff --git a/bloom/commands/release.py b/bloom/commands/release.py index 06c5dbad..35837e00 100644 --- a/bloom/commands/release.py +++ b/bloom/commands/release.py @@ -49,8 +49,6 @@ import webbrowser import yaml -from packaging import version - # python2/3 compatibility try: from urllib.error import HTTPError, URLError diff --git a/bloom/commands/update.py b/bloom/commands/update.py index d300a1a9..692c849c 100644 --- a/bloom/commands/update.py +++ b/bloom/commands/update.py @@ -51,7 +51,7 @@ from bloom.util import add_global_arguments from bloom.util import handle_global_arguments -from packaging import version +from packaging.version import parse as parse_version from threading import Lock _updater_running = False @@ -115,7 +115,7 @@ def fetch_update(user_bloom): newest_version = pypi_result['info']['version'] current_version = bloom.__version__ if newest_version and bloom.__version__ != 'unset': - if version.parse(bloom.__version__) < version.parse(newest_version): + if parse_version(bloom.__version__) < parse_version(newest_version): version_dict = { 'current': str(current_version), 'newest': str(newest_version) diff --git a/bloom/generators/debian/generator.py b/bloom/generators/debian/generator.py index 7bd50ad5..fe629c8d 100644 --- a/bloom/generators/debian/generator.py +++ b/bloom/generators/debian/generator.py @@ -49,7 +49,7 @@ except ImportError: from ConfigParser import SafeConfigParser from dateutil import tz -from packaging import version +from packaging.version import parse as parse_version from bloom.generators import BloomGenerator from bloom.generators import GeneratorError @@ -449,7 +449,7 @@ def generate_substitutions_from_package( bad_changelog = True # Make sure that the current version is the latest in the changelog for changelog in changelogs: - if version.parse(package.version) < version.parse(changelog[0]): + if parse_version(package.version) < parse_version(changelog[0]): error("") error("There is at least one changelog entry, '{0}', which has a " "newer version than the version of package '{1}' being released, '{2}'." diff --git a/bloom/generators/release.py b/bloom/generators/release.py index 1ffa0298..5eeb4a34 100755 --- a/bloom/generators/release.py +++ b/bloom/generators/release.py @@ -53,8 +53,8 @@ try: import catkin_pkg - from packaging import version - if version.parse(catkin_pkg.__version__) < version.parse('0.3.8'): + 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__)) from catkin_pkg import metapackage diff --git a/bloom/git.py b/bloom/git.py index 3411b68e..6a0ea58f 100755 --- a/bloom/git.py +++ b/bloom/git.py @@ -44,8 +44,6 @@ from subprocess import PIPE from subprocess import CalledProcessError -from packaging import version - from bloom.logging import debug from bloom.logging import error from bloom.logging import fmt @@ -687,7 +685,7 @@ def get_last_tag_by_version(directory=None): versions = [] for line in output.splitlines(): tags.append(line.strip()) - ver = re.match("[0-9]+.[0-9]+.[0-9]+", line) + 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/rosdistro_api.py b/bloom/rosdistro_api.py index eea46189..b951952c 100644 --- a/bloom/rosdistro_api.py +++ b/bloom/rosdistro_api.py @@ -38,7 +38,7 @@ import sys import traceback -from packaging import version +from packaging.version import parse as parse_version # python2/3 compatibility try: @@ -58,7 +58,7 @@ try: import rosdistro - if version.parse(rosdistro.__version__) < version.parse('0.7.0'): + if parse_version(rosdistro.__version__) < parse_version('0.7.0'): error("rosdistro version 0.7.0 or greater is required, found '{0}' from '{1}'." .format(rosdistro.__version__, os.path.dirname(rosdistro.__file__)), exit=True)