Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions bloom/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import sys

try:
import pkg_resources
if sys.version_info[0:2] < (3, 10):
import importlib_metadata
else:
import importlib.metadata as importlib_metadata
try:
__version__ = pkg_resources.require("bloom")[0].version
except pkg_resources.DistributionNotFound:
__version__ = importlib_metadata.metadata("bloom").get("version")
except importlib_metadata.PackageNotFoundError:
__version__ = 'unset'
except (ImportError, OSError):
__version__ = 'unset'
10 changes: 7 additions & 3 deletions bloom/commands/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,27 @@

import argparse
import sys
import pkg_resources

from bloom.util import add_global_arguments
from bloom.util import handle_global_arguments

if sys.version_info[0:2] < (3, 10):
from importlib_metadata import entry_points
else:
from importlib.metadata import entry_points

BLOOM_GENERATE_CMDS_GROUP = 'bloom.generate_cmds'


def list_generator_commands():
generators = []
for entry_point in pkg_resources.iter_entry_points(group=BLOOM_GENERATE_CMDS_GROUP):
for entry_point in entry_points(group=BLOOM_GENERATE_CMDS_GROUP):
generators.append(entry_point.name)
return generators


def load_generator_description(generator_name):
for entry_point in pkg_resources.iter_entry_points(group=BLOOM_GENERATE_CMDS_GROUP):
for entry_point in entry_points(group=BLOOM_GENERATE_CMDS_GROUP):
if entry_point.name == generator_name:
return entry_point.load()

Expand Down
8 changes: 6 additions & 2 deletions bloom/commands/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import datetime
import difflib
import os
import pkg_resources
import platform
import shutil
import subprocess
Expand Down Expand Up @@ -139,6 +138,11 @@

from catkin_pkg.changelog import get_changelog_from_path

if sys.version_info[0:2] < (3, 10):
import importlib_metadata
else:
import importlib.metadata as importlib_metadata

_repositories = {}

_success = get_success_prefix()
Expand Down Expand Up @@ -865,7 +869,7 @@ def update_summary(track, repository, distro):
bloom_v=bloom.__version__,
catkin_pkg_v=catkin_pkg.__version__,
# Until https://github.com/ros-infrastructure/rosdistro/issues/16
rosdistro_v=pkg_resources.require("rosdistro")[0].version,
rosdistro_v=importlib_metadata.metadata("rosdistro").version,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be importlib_metadata.metadata("rosdistro").get("version") btw

rosdep_v=rosdep2.__version__,
vcstools_v=vcstools.__version__.version
)
Expand Down
10 changes: 7 additions & 3 deletions bloom/generators/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@

from __future__ import print_function

import pkg_resources
import sys
import traceback

Expand All @@ -57,19 +56,24 @@
debug(traceback.format_exc())
error("rosdep was not detected, please install it.", exit=True)

if sys.version_info[0:2] < (3, 10):
from importlib_metadata import entry_points
else:
from importlib.metadata import entry_points

BLOOM_GROUP = 'bloom.generators'
DEFAULT_ROS_DISTRO = 'indigo'


def list_generators():
generators = []
for entry_point in pkg_resources.iter_entry_points(group=BLOOM_GROUP):
for entry_point in entry_points(group=BLOOM_GROUP):
generators.append(entry_point.name)
return generators


def load_generator(generator_name):
for entry_point in pkg_resources.iter_entry_points(group=BLOOM_GROUP):
for entry_point in entry_points(group=BLOOM_GROUP):
if entry_point.name == generator_name:
return entry_point.load()

Expand Down
16 changes: 11 additions & 5 deletions bloom/generators/debian/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import io
import json
import os
import pkg_resources
import re
import shutil
import sys
Expand Down Expand Up @@ -89,6 +88,12 @@
from bloom.util import get_rfc_2822_date
from bloom.util import maybe_continue

if sys.version_info[0:2] < (3, 10):
import importlib_resources
else:
import importlib.resources as importlib_resources


try:
from catkin_pkg.changelog import get_changelog_from_path
from catkin_pkg.changelog import CHANGELOG_FILENAME
Expand Down Expand Up @@ -126,22 +131,23 @@


def __place_template_folder(group, src, dst, gbp=False):
template_files = pkg_resources.resource_listdir(group, src)
template_files = [os.path.basename(file)
for file in importlib_resources.files(f'{group}.{src.replace("/", ".")}').iterdir()]
# For each template, place
for template_file in template_files:
if not gbp and os.path.basename(template_file) == 'gbp.conf.em':
debug("Skipping template '{0}'".format(template_file))
continue
template_path = os.path.join(src, template_file)
template_dst = os.path.join(dst, template_file)
if pkg_resources.resource_isdir(group, template_path):
if importlib_resources.files(group).joinpath(template_path).is_dir():
debug("Recursing on folder '{0}'".format(template_path))
__place_template_folder(group, template_path, template_dst, gbp)
else:
try:
debug("Placing template '{0}'".format(template_path))
template = pkg_resources.resource_string(group, template_path)
template_abs_path = pkg_resources.resource_filename(group, template_path)
template = importlib_resources.files(group).joinpath(template_path).open().read()
template_abs_path = importlib_resources.files(group).joinpath(template_path)
except IOError as err:
error("Failed to load template "
"'{0}': {1}".format(template_file, str(err)), exit=True)
Expand Down
17 changes: 11 additions & 6 deletions bloom/generators/rpm/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,11 @@
import io
import json
import os
import pkg_resources
import re
import shutil
import sys
import traceback
import textwrap
import traceback

from dateutil import tz
from packaging.version import Version
Expand Down Expand Up @@ -83,6 +82,11 @@
from bloom.util import execute_command
from bloom.util import maybe_continue

if sys.version_info[0:2] < (3, 10):
import importlib_resources
else:
import importlib.resources as importlib_resources

try:
import rosdistro
except ImportError as err:
Expand All @@ -102,19 +106,20 @@


def __place_template_folder(group, src, dst, gbp=False):
template_files = pkg_resources.resource_listdir(group, src)
template_files = [os.path.basename(file)
for file in importlib_resources.files(f'{group}.{src.replace("/", ".")}').iterdir()]
# For each template, place
for template_file in template_files:
template_path = os.path.join(src, template_file)
template_dst = os.path.join(dst, template_file)
if pkg_resources.resource_isdir(group, template_path):
if importlib_resources.files(group).joinpath(template_path).is_dir():
debug("Recursing on folder '{0}'".format(template_path))
__place_template_folder(group, template_path, template_dst, gbp)
else:
try:
debug("Placing template '{0}'".format(template_path))
template = pkg_resources.resource_string(group, template_path)
template_abs_path = pkg_resources.resource_filename(group, template_path)
template = importlib_resources.files(group).joinpath(template_path).open().read()
template_abs_path = importlib_resources.files(group).joinpath(template_path)
except IOError as err:
error("Failed to load template "
"'{0}': {1}".format(template_file, str(err)), exit=True)
Expand Down
2 changes: 2 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
'catkin_pkg >= 0.4.3',
'setuptools',
'empy < 4',
'importlib-metadata >= 3.6; python_version < "3.10"',
'importlib-resources >= 5; python_version < "3.10"',
'packaging',
'python-dateutil',
'PyYAML',
Expand Down
2 changes: 1 addition & 1 deletion stdeb.cfg
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[DEFAULT]
; release with a high debinc to avoid conflict with upstream debian of the same release version
Debian-Version: 100
Depends3: python3-yaml, python3-empy, python3-packaging, python3-rosdep (>= 0.15.0), python3-rosdistro (>= 0.8.0), python3-vcstools (>= 0.1.22), python3-setuptools, python3-catkin-pkg (>= 0.4.3)
Depends3: python3-yaml, python3-empy, python3-packaging, python3-rosdep (>= 0.15.0), python3-rosdistro (>= 0.8.0), python3-vcstools (>= 0.1.22), python3-setuptools, python3-catkin-pkg (>= 0.4.3), python3 (>= 3.10) | python3-importlib-metadata (>= 3.6), python3 (>= 3.10) | python3-importlib-resources (>= 5.0)
Conflicts3: python-bloom
Copyright-File: LICENSE.txt
Suite3: focal jammy noble bookworm trixie
Expand Down
13 changes: 11 additions & 2 deletions test/utils/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,10 @@ def user_bloom(cmd, args=None, directory=None, auto_assert=True,
assert type(args) in [list, tuple, str], \
"user_bloom args takes [list, tuple, str] only, got " + \
str(type(args))
from pkg_resources import load_entry_point
if sys.version_info[0:2] < (3, 10):
from importlib_metadata import entry_points
else:
from importlib.metadata import entry_points
from bloom import __version__ as ver
if not cmd.startswith('git-bloom-'):
cmd = 'git-bloom-' + cmd
Expand All @@ -206,7 +209,13 @@ def user_bloom(cmd, args=None, directory=None, auto_assert=True,
args = list(args)
with change_directory(directory if directory is not None else os.getcwd()):
with redirected_stdio() as (out, err):
func = load_entry_point('bloom==' + ver, 'console_scripts', cmd)
# importlib can't filter entry points by distribution because they
# don't compare. So get all matching entry points and filter by
# distribution version and name after.
eps = [ep for ep in entry_points(group="console_scripts", name=cmd)
if ep.dist.version == ver and ep.dist.name == 'bloom']
assert len(eps) == 1, f"Multiple entry points found for command '{cmd}'."
func = eps[0].load()
try:
with change_environ(env):
ret = func(args) or 0
Expand Down
Loading