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
cli_name

Package manager’s CLI name.

Is derived by default from the manager’s ID.

cli_path

Fully qualified path to the package manager CLI.

Automaticcaly search the location of the CLI in the system.

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

get_version()[source]

Invoke the manager and extract its own reported version.

version_string

Raw but cleaned string of the package manager version.

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

version

Parsed and normalized package manager’s own version.

Returns an instance of packaging.Version or None.

id

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.

name

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

supported

Is the package manager supported on that platform?

executable

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

fresh

Does the package manager match the version requirement?

available

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.

sync

Refresh local manager metadata from remote repository.

installed

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(query)[source]

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.

outdated

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.

upgrade_cli(package_id=None)[source]

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.

upgrade_all_cli()[source]

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

upgrade_all(dry_run=False)[source]

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.