genvid.toolbox.Profile

See Managing Multiple Environments for more information on the Profile tool.

class genvid.toolbox.Profile

Bases: object

API for manipulating profiles.

If GENVID_PROFILE is defined, we search for the matching profile by looking up each path defined by GENVID_PROFILES_PATH in order.

If a profile is defined, GENVID_PROFILE_PATH is set to point to the file containing the profile.

The profiles are HCL files with the following format:

profile "PROFILE_NAME" {
    ENV_0 = "ENV_0_VALUE"
    ENV_1 = "ENV_1_VALUE"
    [...]
    ENV_N = "ENV_N_VALUE"
}

There can be multiple profiles in a single file or multiple profile files in an arbitrary directory structure: the search is recursive.

Note

Filenames ending in .backup are ignored when loading profile files.

Raises:
  • RuntimeError – If a named profile is defined but cannot be found.
  • RuntimeError – If we find duplicate profiles within a path.
  • ValueError – If the profile file contains invalid HCL.
  • OSError – On any filesystem error that is encountered.

New in version 1.20.0.

name = None

The named profile to load. The value is taken from GENVID_PROFILE or set to the empty string.

lookup_paths = None

The ordered list of paths to the profile files. Initialized from GENVID_PROFILES_PATH or set to ~/.genvid/profile.

path = None

The path to the profile file containing the loaded profile.

Once resolved, GENVID_PROFILE_PATH is set to the same value.

Note

If GENVID_PROFILE is the empty string, then so is this variable.

static new(name, path)

Create a new (empty) profile in the specified profile file.

Parameters:
  • name (str) – Name to give to the new profile.
  • path – Path to the profile file to use.

Note

A new profile file will be created if it does not already exists. This include any required parent directories.

Raises:OSError – On any filesystem error that is encountered.
check(*, throw=False)

Check whether a profile is loaded, optionally raising an exception.

Parameters:throw (bool) – Whether to raise an exception if no profile is loaded.
Returns:True if and only if a profile is loaded.
Return type:bool
Raises:RuntimeError – If throw is True and no profile is loaded.
apply()

Apply the loaded profile, if any.

For each environment variable defined within a found profile, we use its value to set the environment if and only if that environment variable is not already set.

insert(**environment)

Insert key/value pairs into the profile, overriding if necessary.

Note

This method updates the profile file on disk as a side-effect. However, it first creates a timestamped backup file in the same directory.

Parameters:

environment – The key/value pairs to insert into the profile.

Raises:
  • RuntimeError – If no profile is in use.
  • ValueError – If the profile file contains invalid HCL.
  • OSError – On any filesystem error that is encountered.
remove(*variables)

Remove the specified variables from the profile.

Note

This method updates the profile file on disk as a side-effect. However, it first creates a timestamped backup file in the same directory.

Parameters:

variables – An iterator over variable names that should be removed from the profile.

Raises:
  • RuntimeError – If no profile is in use.
  • RuntimeError – If a variable does not exist in the profile.
  • ValueError – If the profile file contains invalid HCL.
  • OSError – On any filesystem error that is encountered.
class profile.Profile

Implementation of genvid.toolbox.Profile