meta_package_manager.base - Package manager definition

exception meta_package_manager.base.CLIError(code, output, error)[source]

Bases: exceptions.Exception

An error occured when running package manager CLI.

The exception internally keeps the result of CLI execution.

class meta_package_manager.base.PackageManager[source]

Bases: object

Base class from which all package manager definitions should inherits.

cli_args = []
platforms = frozenset([])
requirement = None

Package manager’s CLI name.

Is derived by default from the manager’s ID.


Fully qualified path to the package manager CLI.

Automaticaly search the location of the CLI in the system.

Returns None if CLI is not found or is not a file.


Invoke the manager and extract its own reported version.


Raw but cleaned string of the package manager version.

Returns None if the manager had an issue extracting its version.


Parsed and normalized package manager’s own version.

Returns an instance of packaging.Version or None.


Return package manager’s ID. Defaults based on class name.

This ID must be unique among all package manager definitions and lower-case as they’re used as feature flags for the mpm CLI.


Return package manager’s common name. Defaults based on class name.


Is the package manager supported on that platform?


Is the package manager CLI can be executed by the current user?


Does the package manager match the version requirement?


Is the package manager available and ready-to-use on the system?

Returns True only if the main CLI:
1 - is supported on the current platform, 2 - was found on the system, 3 - is executable, and 4 - match the version requirement.
run(args, dry_run=False)[source]

Run a shell command, return the output and keep error message.

Removes ANSI escape codes, and returns ready-to-use strings.


Refresh local manager metadata from remote repository.


List packages currently installed on the system.

Returns a dict indexed by package IDs. Each item is a dict with package ID, name and version.

static exact_match(query, result)[source]

Compare search query and matching result.

Returns True if the matching result exactly match the search query.

Still pplies a light normalization and tokenization of strings before comparison to make the “exactiness” in the human sense instead of strictly machine sense.


Search packages whose ID contain exact or partial query.

Returns a dict indexed by package IDs. Each item is a dict with package ID, name, version and a boolean indicating if the match is exact or partial.


List currently installed packages having a new version available.

Returns a dict indexed by package IDs. Each item is a dict with package ID, name, current installed version and latest upgradeable version.


Return a bash-compatible full-CLI to upgrade a package.

upgrade(package_id=None, dry_run=False)[source]

Perform the upgrade of the provided package to latest version.


Return a bash-compatible full-CLI to upgrade all packages.


Perform a full upgrade of all outdated packages to latest versions.

If the manager doesn’t implements a full upgrade one-liner, then fall-back to calling single-package upgrade one by one.

static render_cli(cmd, cli_format=u'plain')[source]

Return a formatted CLI in the provided format.

static render_bitbar_cli(full_cli)[source]

Format a bash-runnable full-CLI with parameters into bitbar schema.