rospkg.distro Python library

This submodule provides the Distro class, which provides an API for processing rosdistro files.

Data model

The top level representation is a Distro instance, which contains Variant and DistroStack instances. DistroStack instances have a VcsConfig (SvnConfig, GitConfig, BzrConfig, HgConfig), which represents the source control information for the stack.:

Distro
  - Variant
  - DistroStack
     - VcsConfig

Exceptions

class rospkg.distro.InvalidDistro[source]

Distro file data does not match specification.

Utility functions

rospkg.distro.distro_uri(distro_name)[source]

Get distro URI of main ROS distribution files.

Parameters

distro_name – name of distro, e.g. ‘diamondback’

Returns

the SVN/HTTP URL of the specified distro. This function should only be used with the main distros.

rospkg.distro.load_distro(source_uri) Distro[source]

Load Distro instance from source_uri.

Example:

from rospkg.distro import load_distro, distro_uri
d = load_distro(distro_uri('electric'))
Parameters

source_uri – source URI of distro file, or path to distro file. Filename has precedence in resolution.

Raises

InvalidDistro if distro file is invalid

Raises

rospkg.ResourceNotFound if file at source_uri is not found

rospkg.distro.expand_rule(rule, stack_name, stack_ver, release_name) str[source]

Replace variables in VCS config rule value with specified values

rospkg.distro.distro_to_rosinstall(distro, branch[, variant_name=None[, implicit=True[, released_only=True[, anonymous=True]]]])[source]
Parameters
  • branch – branch to convert for

  • variant_name – if not None, only include stacks in the specified variant.

  • implicit – if variant_name is provided, include full (recursive) dependencies of variant, default True

  • released_only – only included released stacks, default True.

  • anonymous – create for anonymous access rules

Raises

KeyError if branch is invalid or if distro is mis-configured

rospkg.distro.current_distro_codename([env=None]) str[source]

Get the currently active ROS distribution codename, e.g. ‘fuerte’

Parameters

env – override os.environ, dict

Model

class rospkg.distro.DistroStack(stack_name, stack_version, release_name, rules)[source]

Stores information about a stack release

Parameters
  • stack_name – Name of stack

  • stack_version – Version number of stack.

  • release_name – name of distribution release. Necessary for rule expansion.

  • rules – raw _rules data. Will be converted into appropriate vcs config instance.

name

Name of stack.

version

Version number of stack.

release_name

Name of distribution release. Necessary for rule expansion.

vcs_config

VcsConfig instance representing the _rules for this stack.

class rospkg.distro.Variant(variant_name, extends, stack_names, stack_names_implicit)[source]

A variant defines a specific set of stacks (“metapackage”, in Debian parlance). For example, “base”, “pr2”. These variants can extend another variant.

Parameters
  • variant_name – name of variant to load from distro file, str

  • stack_names_implicit – full list of stacks implicitly included in this variant, [str]

  • raw_data – raw rosdistro data for this variant

get_stack_names([implicit=True]) [str][source]

Get list of all stack names in this variant.

Parameters

implicit – If True, includes names of stacks in parent variants. Otherwise, include only stacks explicitly named in this variant. (default True).

stack_names

List of all stack names in this variant, including implicit stacks.

class rospkg.distro.Distro(stacks, variants, release_name, version, raw_data)[source]

Store information in a rosdistro file.

Parameters
  • stacks – dictionary mapping stack names to DistroStack instances

  • variants – dictionary mapping variant names to Variant instances

  • release_name – name of release, e.g. ‘diamondback’

  • version – version number of release

  • raw_data – raw dictionary representation of a distro

get_stacks([released=False]) {str: DistroStack}[source]
Parameters

released – only included released stacks

Returns

dictionary of stack names to DistroStack instances in this distro.

stacks

Dictionary of stack names mapped to DistroStack instances in this distro.

released_stacks

Dictionary of released stack names mapped to DistroStack instances in this distro.

variants

Dictionary of variant names mapped to Variant instances in this distro.

Source control information

class rospkg.distro.VcsConfig(type_)[source]

Base representation of a rosdistro VCS rules configuration.

get_branch(branch, anonymous)[source]
Raises

ValueError If branch is invalid

load(rules, rule_eval)[source]

Initialize fields of this class based on the raw rosdistro rules data after applying rule_eval function (e.g. to replace variables in rules).

Parameters
  • rules – raw rosdistro rules entry, dict

  • rule_eval – function to evaluate rule values, fn(str) -> str

class rospkg.distro.DvcsConfig(type_)[source]

Configuration information for a distributed VCS-style repository.

Configuration fields:

  • repo_uri: base URI of repo

  • dev_branch: git branch the code is developed

  • distro_tag: a tag of the latest released code for a specific ROS distribution

  • release_tag: a tag of the code for a specific release

get_branch(branch, anonymous)[source]
Raises

KeyError Invalid branch parameter

load(rules, rule_eval)[source]

Initialize fields of this class based on the raw rosdistro rules data after applying rule_eval function (e.g. to replace variables in rules).

Parameters
  • rules – raw rosdistro rules entry, dict

  • rule_eval – function to evaluate rule values, fn(str) -> str

class rospkg.distro.GitConfig[source]

Configuration information about an GIT repository. See parent class DvcsConfig for more API information.

class rospkg.distro.HgConfig[source]

Configuration information about a Mercurial repository. See parent class DvcsConfig for more API information.

class rospkg.distro.BzrConfig[source]

Configuration information about an BZR repository. See parent class DvcsConfig for more API information.

class rospkg.distro.SvnConfig[source]

Configuration information about an SVN repository.

Configuration fields:

  • dev: where the code is developed

  • distro_tag: a tag of the code for a specific ROS distribution

  • release_tag: a tag of the code for a specific release

rospkg.distro.get_vcs_configs() {str: VcsConfig}[source]
Returns

Dictionary of supported VcsConfig instances. Key is the VCS type name, e.g. ‘svn’.

rospkg.distro.load_vcs_config(rules, rule_eval) VcsConfig[source]

Factory for creating VcsConfig subclass based on rosdistro _rules data.

Parameters
  • rules – rosdistro rules data

  • rules_eval – Function to apply to rule values, e.g. to convert variables. fn(str)->str

Returns

VcsConfig subclass instance with interpreted rules data.