Skip to main content

ovos-core configuration module

Project description

License Unit Tests codecov PRs Welcome Chat GitHub Discussions

OVOS-config

helper package to interact with mycroft config

Command Line usage

A small helper tool is included to quickly show, get or set config values

ovos-config

Quick rundown (cli):

  • ovos-config get

    • Loose search (search a key or parts therof):

      Given an entry of

      {'PHAL': {
              'ovos-PHAL-plugin-system': {
                      'enabled': True
              },
              'ovos-PHAL-plugin-connectivity-events': {
                      'enabled': True
              },
              ... 
      }
      

      ovos-config get -k phal would yield all PHAL entries and present it to the user (and the path where they were found)

    • Strict search (search keys in a distinct location):

      ovos-config get -k /PHAL/ovos-PHAL-plugin-system/enabled

      This will output only the value or exit out if no key is found (root slash indicating a strict search)

  • ovos-config set

    • Searches loosely for keys containing the query string and presents a choice to the user to define a value

      ovos-config set -k phal

      ovos-config2

      The type is derived from the joined config and thus can be safely cast into the user conf.
      Optionally a value (-v) can be sent as an argument.

  • ovos-config show

    • Get a full table of either the joined, user (-u), system (-s) or remote (-r) configuration. This can be further refined by passing a --section, which can be listed with ovos-config show -l

 

 

Configuration Structure

ovos.conf

The ovos_config package determines which config files to load based on ovos.conf. get_ovos_config will return default values that load mycroft.conf unless otherwise configured.

ovos.conf files are loaded in the following order, with later files taking priority over earlier ones in the list:

  1. /etc/OpenVoiceOS/ovos.conf
  2. /etc/mycroft/ovos.conf (Deprecated)
  3. XDG_CONFIG_DIRS + /OpenVoiceOS/ovos.conf
  4. /etc/xdg/OpenVoiceOS/ovos.conf
  5. XDG_CONFIG_HOME (default ~/.config) + /OpenVoiceOS/ovos.conf

A simple ovos_config should have a structure like:

{
"base_folder": "mycroft",
"config_filename": "mycroft.conf",
"default_config_path": "<Absolute Path to Installed Core>/configuration/mycroft.conf",
"module_overrides": {},
"submodule_mappings": {}
}

Note: default_config_path should always be an absolute path. This is generally detected automatically, but any manual override must specify an absolute path to a json or yaml config file.

Non-Mycroft modules may specify alternate config paths. A call to get_ovos_config from neon_core or neon_messagebus will return a configuration like:

{
  "base_folder": "neon",
  "config_filename": "neon.yaml",
  "default_config_path": "/etc/example/config/neon.yaml",
  "module_overrides": {
    "neon_core": {
      "base_folder": "neon",
      "config_filename": "neon.yaml",
      "default_config_path": "/etc/example/config/neon.yaml"
    }
  },
  "submodule_mappings": {
    "neon_core.skills.skill_manager": "neon_core",
    "neon_messagebus": "neon_core",
    "neon_speech": "neon_core",
    "neon_audio": "neon_core",
    "neon_gui": "neon_core"
  }
}

If get_ovos_config was called from mycroft with the same configuration file as the last example, the returned configuration would be:

{
  "base_folder": "mycroft",
  "config_filename": "mycroft.conf",
  "default_config_path": "<Path to Installed Core>/configuration/mycroft.conf",
  "module_overrides": {
    "neon_core": {
      "base_folder": "neon",
      "config_filename": "neon.yaml",
      "default_config_path": "/etc/example/config/neon.yaml"
    }
  },
  "submodule_mappings": {
    "neon_core.skills.skill_manager": "neon_core",
    "neon_messagebus": "neon_core",
    "neon_speech": "neon_core",
    "neon_audio": "neon_core",
    "neon_gui": "neon_core"
  }
}

Configuration

ovos_config.config.Configuration is a singleton object that loads a single config object. The configuration files loaded are determined by ovos.conf as described above. Using the above example, if Configuration() is called from neon_speech, the following configs would be loaded in this order:

  1. /etc/example/config/neon.yaml
  2. os.environ.get('MYCROFT_SYSTEM_CONFIG') or /etc/neon/neon.yaml
  3. os.environ.get('MYCROFT_WEB_CACHE') or XDG_CONFIG_PATH/neon/web_cache.json (unless disable_remote_config == True in earlier config)
  4. ~/.neon/neon.yaml (Deprecated)
  5. XDG_CONFIG_DIRS + /neon/neon.yaml
  6. /etc/xdg/neon/neon.yaml
  7. XDG_CONFIG_HOME (default ~/.config) + /neon/neon.yaml

Configuring Configuration

There are a couple of special configuration keys that change the way the configuration stack loads.

  • Default config refers to the config specified at default_config_path in ovos.conf (#1 /etc/example/config/neon.yaml in the stack above).
  • System config refers to the config at /etc/{base_folder}/{config_filename} (#2 /etc/neon/neon.yaml in the stack above).

protected_keys

A "protected_keys" configuration section may be added to a Default or System Config file (default /etc/mycroft/mycroft.conf). This configuration section specifies other configuration keys that may not be specified in remote or user configurations. Keys may specify nested parameters with . to exclude specific keys within nested dictionaries. An example config could be:

{
  "protected_keys": {
    "remote": [
      "gui_websocket.host",
      "websocket.host"
    ],
    "user": [
      "gui_websocket.host"
    ]
  }
}

This example specifies that config['gui_websocket']['host'] may be specified in user configuration, but not remote. config['websocket']['host'] may not be specified in user or remote config, so it will only consider default and system configurations.

disable_user_config

If this config parameter is set to True in Default or System configuration, no user configurations will be loaded (no XDG configuration paths).

disable_remote_config

If this config parameter is set to True in Default or System configuration, the remote configuration (web_cache.json) will not be loaded.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ovos-config-0.0.13a12.tar.gz (34.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ovos_config-0.0.13a12-py3-none-any.whl (36.0 kB view details)

Uploaded Python 3

File details

Details for the file ovos-config-0.0.13a12.tar.gz.

File metadata

  • Download URL: ovos-config-0.0.13a12.tar.gz
  • Upload date:
  • Size: 34.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for ovos-config-0.0.13a12.tar.gz
Algorithm Hash digest
SHA256 ebfe8399c77b398d35dc94010a43efe0d744eeb3d9e035caef7a65cc1a36fbc8
MD5 b45e26a1d9cb3934032f1f6d9949d0be
BLAKE2b-256 81d38c8f5ea15a0962db2634aac12d73269aaf685c23124d1fb85ac718f8fdb4

See more details on using hashes here.

File details

Details for the file ovos_config-0.0.13a12-py3-none-any.whl.

File metadata

File hashes

Hashes for ovos_config-0.0.13a12-py3-none-any.whl
Algorithm Hash digest
SHA256 da9417a72e6c5ddad6f36eb5472295447f3bb901e656ec86501ef15164233210
MD5 0976f7a08b71add3d233e4dba60b49f7
BLAKE2b-256 a8a55777e0b7803f653623950850692cfaab4ce65ad371c99cc6c33f52cd7094

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page