nmk_base.common

Python module for nmk-base utility classes.

Classes

TemplateBuilder

Generic builder logic to generate files from templates

TomlFileBuilder

Generic builder logic to generate TOML files from templates and contributed items

MkdirBuilder

Generic builder logic to create directory

ProcessBuilder

Generic builder logic to call a sub-process

CleanBuilder

Generic builder logic to clean a directory

MultiChoiceResolver

Multi-choice config item resolver base class

MultiStrChoiceResolver

Multi-choice string config item resolver class

MultiListChoiceResolver

Multi-choice list config item resolver class

MultiDictChoiceResolver

Multi-choice dict config item resolver class

Module Contents

class nmk_base.common.TemplateBuilder(model: nmk.model.model.NmkModel)

Bases: nmk.model.builder.NmkTaskBuilder

Generic builder logic to generate files from templates

relative_path(v: str) str

Make an absolute path as project relative if possible

Parameters:

v – Path string to be converted

Returns:

Project relative path (if possible); unchanged input value otherwise

config_value(config_name: str) Any

Get config value by name & turn absolute paths to project relative ones (if possible)

Parameters:

config_name – Config item name

Returns:

Config item value

render_template(template: pathlib.Path, kwargs: dict[str, str]) str

Render template into a string, with provided keywords and config items

Parameters:
  • template – Path to template file to be rendered

  • kwargs – Map of keywords for templates rendering, indexed by name

Returns:

Rendered template string

Throw:

AssertionError if unknown keyword is referenced in template

build_from_template(template: pathlib.Path, output: pathlib.Path, kwargs: dict[str, str], file_updated_info: str | None = None) str

Generate file from template

Parameters:
  • template – Path to template file to be rendered

  • output – Path to output file to be generated

  • kwargs – Map of keywords for templates rendering, indexed by name

  • file_updated_info – Config item name where to store information that output file has been updated

Returns:

Rendered template string

Throw:

AssertionError if unknown keyword is referenced in template

build(template: str, kwargs: dict[str, str] | None = None, file_updated_info: str | None = None)

Default build behavior: generate main output file from provided template

Parameters:
  • template – Path to the Jinja template to use for generation

  • kwargs – Map of keywords for templates rendering, indexed by name

  • file_updated_info – Config item name where to store information that output file has been updated

class nmk_base.common.TomlFileBuilder(model: nmk.model.model.NmkModel)

Bases: TemplateBuilder

Generic builder logic to generate TOML files from templates and contributed items

build(fragment_files: list[str], items: dict, plugin_name: str = 'nmk-base', kwargs: dict[str, str] = None)

Generates toml file from fragments and items

Parameters:
  • fragment_files – List of fragment files (processed as Jinja templates) to be merged

  • items – Dict of toml items to be merged; only non-empty items are considered (no empty section will be added)

  • plugin_name – Plugin name to be inserted in generated file heading comment

  • kwargs – Map of keywords for templates rendering, indexed by name

class nmk_base.common.MkdirBuilder(model: nmk.model.model.NmkModel)

Bases: nmk.model.builder.NmkTaskBuilder

Generic builder logic to create directory

build()

Build logic: create specified directory (main output of the task)

class nmk_base.common.ProcessBuilder(model: nmk.model.model.NmkModel)

Bases: nmk.model.builder.NmkTaskBuilder

Generic builder logic to call a sub-process

build(cmd: str | list[str], verbose: bool = False)

Build logic:

  • call subprocess specified through cmd parameter; process is invoked in project directory

  • depending on the verbose parameter, redirect output to stdout (if True) or to nmk logs (if False)

  • touch the specified output file

Parameters:
  • cmd – process command line; may be a string or a list of parameters

  • verbose – states if the process output shall be displayed in stdout or saved in logs

class nmk_base.common.CleanBuilder(model: nmk.model.model.NmkModel)

Bases: nmk.model.builder.NmkTaskBuilder

Generic builder logic to clean a directory

build(path: str)

Build logic: delete (recursively) provided directory, if it exists

Parameters:

path – Directory to be deleted

class nmk_base.common.MultiChoiceResolver(model: nmk.model.model.NmkModel)

Bases: nmk.model.resolver.NmkConfigResolver

Multi-choice config item resolver base class

get_value(name: str, key: int | str | bool, choices: dict[int | str | bool, _MultiChoiceValue], default: _MultiChoiceValue) _MultiChoiceValue

Resolve multi-choice config item value using provided key and available choices

Parameters:
  • name – config item name

  • key – key to select value

  • choices – available choices

  • default – default value

Returns:

item value

class nmk_base.common.MultiStrChoiceResolver(model: nmk.model.model.NmkModel)

Bases: MultiChoiceResolver, nmk.model.resolver.NmkStrConfigResolver

Multi-choice string config item resolver class

class nmk_base.common.MultiListChoiceResolver(model: nmk.model.model.NmkModel)

Bases: MultiChoiceResolver, nmk.model.resolver.NmkListConfigResolver

Multi-choice list config item resolver class

class nmk_base.common.MultiDictChoiceResolver(model: nmk.model.model.NmkModel)

Bases: MultiChoiceResolver, nmk.model.resolver.NmkDictConfigResolver

Multi-choice dict config item resolver class