Source code for rocon_python_utils.ros.catkin

#
# License: BSD
#   https://raw.github.com/robotics-in-concert/rocon_tools/license/LICENSE
#
##############################################################################
# Description
##############################################################################

"""
.. module:: ros.catkin
   :platform: Unix
   :synopsis: Tools for working with catkin packages.

This module makes use of the python-catkin-pkg module and adds a few extra
functions for interacting with catkin packages.

----

"""

##############################################################################
# Imports
##############################################################################

from catkin_pkg.packages import find_packages

##############################################################################
# Resources
##############################################################################


[docs]def package_index_from_package_path(package_paths): """Find all packages on the given list of paths Iterates over the given list of paths in reverse order so that packages found in the paths at the beginning of the list get overlaid onto packages with the same name which were found in paths farther back in the list. The resulting dictionary is keyed by the package name (so packages with duplicate names are overlaid) and the values are the :class:`catkin_pkg.package.Package` class. :param ros_package_path: list of paths to search :type ros_package_path: str[] :returns: dictionary of package objects keyed by name of the package :rtype: dict :todo: overlay duplicates only if the version is newer """ result = {} for path in reversed(package_paths): for unused_package_path, package in find_packages(path).items(): result[package.name] = package return result