kheops package
Subpackages
Submodules
kheops.app module
Kheops App interface
- class kheops.app.GenericInstance
Bases:
object
GenericInstance class
- Variables
name (str or None) – Name of the instace.
run (dict) – Json compatible dict for instance runtime data.
- name = None
- run = {}
- class kheops.app.Kheops(config='kheops.yml', namespace='default', cache=None)
Bases:
kheops.app.GenericInstance
Kheops Application Class
- lookup(keys=None, scope=None, trace=False, explain=False, validate_schema=False, namespace=None, namespace_prefix=False)
Lookup a key in hierarchy
For a given lookup: * keys= [<namespace>:<key>]
- Parameters
keys (list[str]) – List of keys to query.
scope (dict) – Scope key.
- parse_conf(config='kheops.yml')
Parse Kheops configuration
- Parameters
config (dict or str or None) – Kheops configuration, can either be a file path or a dict.
- Returns
The parsed configuration.
- Return type
dict
- class kheops.app.KheopsNamespace(app, name, config=None)
Bases:
kheops.app.GenericInstance
,kheops.controllers.QueryProcessor
Kheops Namespace Class
kheops.cli module
Kheops CLI interface
- class kheops.cli.OutputFormat(value)
Bases:
str
,enum.Enum
An enumeration.
- json = 'json'
- toml = 'toml'
- yaml = 'yaml'
- kheops.cli.config()
- kheops.cli.get_logger(logger_name=None, create_file=False, verbose=0)
Create CmdApp logger
- kheops.cli.lookup(ctx: typer.models.Context, namespace: str = <typer.models.OptionInfo object>, keys: typing.List[str] = <typer.models.ArgumentInfo object>, scope_param: typing.Optional[typing.List[str]] = <typer.models.OptionInfo object>, file: pathlib.Path = <typer.models.OptionInfo object>, format: kheops.cli.OutputFormat = <typer.models.OptionInfo object>, trace: bool = <typer.models.OptionInfo object>, explain: bool = <typer.models.OptionInfo object>)
Lookup database
- kheops.cli.main(ctx: typer.models.Context, verbose: int = <typer.models.OptionInfo object>, config: pathlib.Path = <typer.models.OptionInfo object>)
Manage users in the awesome CLI app.
kheops.controllers module
Kheops controller
Main Kheops model classes
- class kheops.controllers.BackendCandidate(path=None, data=None, run=None, status=None)
Bases:
object
Backend Candidate
This object represents a backend candidate. It holds the value of the requested key, but also so source path, the status and some other metadata.
- class kheops.controllers.LoadPlugin(plugins)
Bases:
object
Kheops plugins loader
This plugin loader is a helper to load a python module (Kheops Plugin) from a plugin kind and name.
- load(kind, name)
Load a plugin
- class kheops.controllers.Query(key, scope)
Bases:
object
Query object
Object that hold key and scope.
- key = None
- scope = None
- class kheops.controllers.QueryProcessor(config)
Bases:
object
This class helps to do queries for a given key and scope. It provides a single public method. It also implement an explain mechanism to help to troubleshoot query lookup issues.
The query process consists in: * Create a new query with the key and th scope * Fetch and expand the lookup list (_exec_assemble_lookups) * Fetch the rule that match the key (_exec_get_rule) * Fetch the strategy that match the key * Query all backends with lookup list (_exec_backend_plugins) * Return result
- default_lookup_item = {'backend': 'file', 'continue': True, 'path': None}
- default_match_rule = {'continue': False, 'key': None, 'strategy': 'merge_schema'}
- query(key=None, scope=None, explain=False)
Query key with scope
kheops.utils module
Utils class
- class kheops.utils.Default
Bases:
dict
- kheops.utils.dict_hash(dictionary: Dict[str, Any]) str
MD5 hash of a dictionary.
- kheops.utils.glob_files(path, pattern)
Return a list of path that match a glob
- kheops.utils.path_assemble_hier(path, sep='/', reverse=False, start_index=0)
Append the previous
- kheops.utils.render_template(text, params)
Render template for a given string
- kheops.utils.render_template_python(text, params, ignore_missing=True)
Render template for a given string
- kheops.utils.schema_validate(config, schema)
Validate a config against a jsonschema
- kheops.utils.str_ellipsis(txt, length=60)
Truncate with ellipsis too wide texts