datazen.environment package#
Submodules#
datazen.environment.base module#
datazen - A base class to be extended for runtime data loading and storing.
- class datazen.environment.base.BaseEnvironment(default_ns: str = '__root__', logger: ~logging.Logger = <Logger datazen.environment.base (WARNING)>, newline: str = '\n', **_)[source]#
Bases:
object
The base class for environment loading-and-storing management.
- add_dir(dir_type: DataType, dir_path: str, rel_path: str = '.', name: str = '__root__', allow_dup: bool = False) bool [source]#
Proxy for add_dir for a namespace.
- add_dirs(dir_type: DataType, dir_paths: List[str], rel_path: str = '.', name: str = '__root__', allow_dup: bool = False) int [source]#
Proxy for add_dirs for a namespace.
- add_namespace(name: str, clone_root: bool = True) None [source]#
Add a new namespace, optionally clone from the existing root.
- get_data(dir_type: DataType, name: str = '__root__') Dict[str, Any] [source]#
Get the raw data for a directory type from a namespace.
- get_namespace(key_name: str, target: str, target_data: Dict[str, Any]) str [source]#
Determine the namespace that a target should use, in general they all should be unique unless they don’t load anything new.
- class datazen.environment.base.Task(variant: str, name: str)[source]#
Bases:
NamedTuple
Parameters identifying a task.
- name: str#
Alias for field number 1
- property slug: str#
Convert this task into its ‘slug’ form.
- variant: str#
Alias for field number 0
- class datazen.environment.base.TaskResult(success: bool, fresh: bool, time_ns: int = -1)[source]#
Bases:
NamedTuple
Return value for a task, express whether or not the task succeeded and if this tasks’ result should be considered ‘new’ from the last time it was evaluated.
- fresh: bool#
Alias for field number 1
- log(task: Task, logger: Logger, level: int = 10) None [source]#
Log status based on this task result.
- success: bool#
Alias for field number 0
- time_ns: int#
Alias for field number 2
- with_time(time_ns: int) TaskResult [source]#
Create a new result from this one, with the time set.
datazen.environment.command module#
datazen - An environment extension that exposes command-line command execution.
- class datazen.environment.command.CommandEnvironment(**kwargs)[source]#
Bases:
TaskEnvironment
Exposes command-line commanding capability to the environment.
- valid_command(entry: ~typing.Dict[str, ~typing.Any], _: str, __: ~typing.Dict[str, ~typing.Any] = None, deps_changed: ~typing.List[str] = None, logger: ~logging.Logger = <Logger datazen.environment.command (WARNING)>) TaskResult [source]#
Perform the command specified by the entry.
datazen.environment.compile module#
datazen - An environment extension that exposes compilation capabilities.
- class datazen.environment.compile.CompileEnvironment(**kwargs)[source]#
Bases:
TaskEnvironment
Leverages a cache-equipped environment to perform compilations.
- valid_compile(entry: ~typing.Dict[str, ~typing.Any], namespace: str, dep_data: ~typing.Dict[str, ~typing.Any] = None, deps_changed: ~typing.List[str] = None, logger: ~logging.Logger = <Logger datazen.environment.compile (WARNING)>) TaskResult [source]#
Perform the compilation specified by the entry.
datazen.environment.config module#
- datazen - A child class for adding configuration-data loading capabilities to
the environment dataset.
- class datazen.environment.config.ConfigEnvironment(**kwargs)[source]#
Bases:
VariableEnvironment
,SchemaEnvironment
The configuration-data loading environment mixin, requires variable loading to function.
- add_config_dirs(dir_paths: List[str], rel_path: str = '.', name: str = '__root__', allow_dup: bool = False) int [source]#
Add configuration-data directories, return the number of directories added.
- load_configs(cfg_loads: ~datazen.load.LoadedFiles = (None, None), var_loads: ~datazen.load.LoadedFiles = (None, None), sch_loads: ~datazen.load.LoadedFiles = (None, None), sch_types_loads: ~datazen.load.LoadedFiles = (None, None), name: str = '__root__', logger: ~logging.Logger = <Logger datazen.environment.config (WARNING)>, enforce_schemas: bool = True) LoadResult [source]#
Load configuration data, resolve any un-loaded configuration directories.
datazen.environment.group module#
datazen - A target-type for grouping other target-tasks together.
- class datazen.environment.group.GroupEnvironment(**kwargs)[source]#
Bases:
TaskEnvironment
Leverages a task-environment to group tasks together.
- valid_group(entry: ~typing.Dict[str, ~typing.Any], _: str, dep_data: ~typing.Dict[str, ~typing.Any] = None, deps_changed: ~typing.List[str] = None, logger: ~logging.Logger = <Logger datazen.environment.group (WARNING)>) TaskResult [source]#
Stub task to group other tasks.
datazen.environment.integrated module#
datazen - A centralized store for runtime data.
- class datazen.environment.integrated.Environment(newline: str = '\n')[source]#
Bases:
CompileEnvironment
,RenderEnvironment
,GroupEnvironment
,CommandEnvironment
A wrapper for inheriting all environment-loading capabilities.
- command(target: str) TaskResult [source]#
Execute a named ‘command’ target from the manifest.
- compile(target: str) TaskResult [source]#
Execute a named ‘compile’ target from the manifest.
- execute(target: str = '', should_cache: bool = True) TaskResult [source]#
Execute an arbitrary target.
- execute_targets(targets: List[str]) bool [source]#
Execute a list of named targets and return whether or not the entire set was successful.
- group(target: str) TaskResult [source]#
Attempt to satisfy a ‘group’ target.
- render(target: str) TaskResult [source]#
Execute a named ‘render’ target from the manifest.
- datazen.environment.integrated.from_manifest(manifest_path: str, newline: str = '\n', data_cache_name: str = 'task_data', logger: ~logging.Logger = <Logger datazen.environment.integrated (WARNING)>) Environment [source]#
Load an environment object from a schema definition on disk.
datazen.environment.manifest module#
datazen - A class for adding manifest-loading to environments.
- class datazen.environment.manifest.ManifestEnvironment(**kwargs)[source]#
Bases:
ConfigEnvironment
,TemplateEnvironment
A wrapper for the manifest-loading implementations of an environment.
- default_target() str [source]#
Retrieve a configured default target for a manifest, otherwise an empty String.
- load_dirs(data: Dict[str, Any], rel_path: str, namespace: str = '__root__', allow_dup: bool = False, load_defaults: bool = True) None [source]#
Looks for keys matching types of directories that can be loaded into an environment and tries to load them.
- load_manifest(path: str = 'manifest.yaml', logger: ~logging.Logger = <Logger datazen.environment.manifest (WARNING)>) bool [source]#
Attempt to load manifest data from a file.
- load_manifest_reent(path: str, manifest_dir: str, params: ~typing.Dict[~typing.Any, ~typing.Any], files: ~typing.List[str], logger: ~logging.Logger = <Logger datazen.environment.manifest (WARNING)>) Tuple[Dict[str, Any], bool] [source]#
Load a manifest recursively by resolving includes and merging the results.
- path_fields = ['configs', 'schemas', 'schema_types', 'variables', 'templates']#
- targets_with_paths = ['compiles', 'renders']#
- datazen.environment.manifest.get_manifest_schema(require_all: bool = True, cls: ~typing.Type[~vcorelib.schemas.base.Schema] = <class 'vcorelib.schemas.CerberusSchema'>) Schema [source]#
Load the schema for manifest from the package.
- datazen.environment.manifest.get_output_dir(data: Dict[str, Any], rel_path: str, default: str = 'datazen-out') str [source]#
Get the resolved output directory based on a dictionary containing target data.
- datazen.environment.manifest.set_output_dir(data: Dict[str, Any], rel_path: str, default: str = 'datazen-out') None [source]#
Set the ‘output_dir’ key correctly on a dictionary.
datazen.environment.manifest_cache module#
datazen - A class for adding caching to the manifest-loading environment.
- class datazen.environment.manifest_cache.ManifestCacheEnvironment(**kwargs)[source]#
Bases:
ManifestEnvironment
A wrapper for the cache functionality for an environment.
- cached_enforce_schemas(data: Dict[str, Any], require_all: bool = True, name: str = '__root__') bool [source]#
Enforce schemas, proxied through the cache.
- cached_load_configs(name: str = '__root__', enforce_schemas: bool = True) LoadResult [source]#
Load configs, proxied through the cache.
- cached_load_schemas(require_all: bool = True, name: str = '__root__') Dict[str, Any] [source]#
Load schemas, proxied through the cache.
- cached_load_templates(name: str = '__root__') Dict[str, Template] [source]#
Load templates, proxied through the cache.
- cached_load_variables(name: str = '__root__') LoadResult [source]#
Load variables, proxied through the cache.
- get_new_loaded(types: List[str], load_checks: Dict[str, List[str]] = None) int [source]#
Compute the number of new files loaded (since the initial load) for a set of types;
datazen.environment.render module#
datazen - An environment extension that exposes rendering capabilities.
- class datazen.environment.render.RenderEnvironment(**kwargs)[source]#
Bases:
TaskEnvironment
Leverages a cache-equipped environment to render templates.
- perform_render(template: ~jinja2.environment.Template, all_templates: ~typing.Dict[str, ~jinja2.environment.Template], path: str | None, entry: ~typing.Dict[str, ~typing.Any], data: ~typing.Dict[str, ~typing.Any] = None, logger: ~logging.Logger = <Logger datazen.environment.render (WARNING)>) TaskResult [source]#
Render a template to the requested path using the provided data.
- store_render(entry: Dict[str, Any], data: Dict[str, Any]) None [source]#
Store data from the current render.
- valid_render(entry: ~typing.Dict[str, ~typing.Any], namespace: str, dep_data: ~typing.Dict[str, ~typing.Any] = None, deps_changed: ~typing.List[str] = None, logger: ~logging.Logger = <Logger datazen.environment.render (WARNING)>) TaskResult [source]#
Perform the render specified by the entry.
- datazen.environment.render.get_render_children(children: Dict[str, Any], dep_data: Dict[str, Any], default_op: str, indent: int, delimeter: str = '', newline: str = '\n') None [source]#
Build child dependency data.
- datazen.environment.render.get_render_str(template: Template, name: str, indent: int, data: Dict[str, Any] = None, out_data: Dict[str, Any] = None, newline: str = '\n') str [source]#
Render a template.
datazen.environment.schema module#
- datazen - A child class for adding schema-data loading capabilities to the
environment dataset.
- class datazen.environment.schema.SchemaEnvironment(default_ns: str = '__root__', logger: ~logging.Logger = <Logger datazen.environment.base (WARNING)>, newline: str = '\n', **_)[source]#
Bases:
BaseEnvironment
The schema-data loading environment mixin, only requires the base environment capability to function.
- add_schema_dirs(dir_paths: List[str], rel_path: str = '.', name: str = '__root__', allow_dup: bool = False) int [source]#
Add schema-data directories, return the number of directories added.
- add_schema_type_dirs(dir_paths: List[str], rel_path: str = '.', name: str = '__root__', allow_dup: bool = False) int [source]#
Add directories containing schema-type data (to be registered at runtime).
- enforce_schemas(data: Dict[str, Any], require_all: bool = True, sch_loads: LoadedFiles = (None, None), sch_types_loads: LoadedFiles = (None, None), name: str = '__root__') bool [source]#
Perform schema-validation on provided data and return the boolean result. Adds (and removes) namespaced types if applicable.
- load_schema_types(sch_loads: LoadedFiles = (None, None), name: str = '__root__') Dict[str, Any] [source]#
Load custom schema types and resolve any un-loaded directories.
- load_schemas(require_all: bool = True, sch_loads: LoadedFiles = (None, None), sch_types_loads: LoadedFiles = (None, None), name: str = '__root__', modify_registry: bool = True) Dict[str, Any] [source]#
Load schema data, resolve any un-loaded schema directories.
datazen.environment.task module#
- datazen - A class for exposing the capability to run concrete tasks against
the current environment.
- class datazen.environment.task.TaskEnvironment(**kwargs)[source]#
Bases:
ManifestCacheEnvironment
Adds capability for running tasks (including tasks with dependencies) and tracking whether or not updates are required.
- already_satisfied(target: str, output_path: str | None, load_deps: ~typing.List[str], deps_changed: ~typing.List[str] = None, load_checks: ~typing.Dict[str, ~typing.List[str]] = None, logger: ~logging.Logger = <Logger datazen.environment.task (WARNING)>) bool [source]#
Check if a target is already satisfied, if not debug-log some information about why not.
- get_dep_data(dep_list: ~typing.List[str], logger: ~logging.Logger = <Logger datazen.environment.task (WARNING)>) Dict[str, Any] [source]#
From a list of dependencies, create a dictionary with any task data they’ve saved.
- get_manifest_entry(category: str, name: str) Dict[str, Any] [source]#
Get an entry from the manifest.
- handle_task(key_name: str, target: str, task_stack: List[Task] = None, should_cache: bool = True) TaskResult [source]#
Handle the setup for manifest tasks, such as loading additional data directories and setting the correct output directory.
- is_resolved(operation: str, target: str) bool [source]#
Determine whether a target for an operation has already been resolved.
- is_task_new(operation: str, target: str) bool [source]#
Determine if a target has been newly executed this iteration.
- push_dep(dep: str, task_stack: List[Task], curr_target: str) None [source]#
Push a dependency onto a stack if they need to be resolved.
- resolve(operation: str, target: str, should_cache: bool, is_new: bool) None [source]#
Set a target for an operation as resolved.
- resolve_dependencies(dep_list: ~typing.List[str], task_stack: ~typing.List[~datazen.environment.base.Task], target: str, logger: ~logging.Logger = <Logger datazen.environment.task (WARNING)>) Tuple[bool, Dict[str, Any], List[str]] [source]#
Execute the entire chain of dependencies for a task, return the aggregate result as a boolean as well as the dependency data and which dependencies changed.
- property task_data: Dict[str, Any]#
Proxy task data through the cache.
- valid_noop(entry: ~typing.Dict[str, ~typing.Any], _: str, __: ~typing.Dict[str, ~typing.Any] = None, ___: ~typing.List[str] = None, logger: ~logging.Logger = <Logger datazen.environment.task (WARNING)>) TaskResult [source]#
Default handle for a potentially-unregistered operation.
datazen.environment.template module#
- datazen - A child class for adding template-loading capabilities to the
environment dataset.
- class datazen.environment.template.TemplateEnvironment(default_ns: str = '__root__', logger: ~logging.Logger = <Logger datazen.environment.base (WARNING)>, newline: str = '\n', **_)[source]#
Bases:
BaseEnvironment
The template-loading environment mixin, only requires the base environment capability to function.
- add_template_dirs(dir_paths: List[str], rel_path: str = '.', name: str = '__root__', allow_dup: bool = False) int [source]#
Add template directories, return the number of directories added.
- load_templates(template_loads: LoadedFiles = (None, None), name: str = '__root__') Dict[str, Template] [source]#
Load templates, resolve any un-loaded template directories.
datazen.environment.variable module#
- datazen - A child class for adding variable-data loading capabilities to the
environment dataset.
- class datazen.environment.variable.VariableEnvironment(default_ns: str = '__root__', logger: ~logging.Logger = <Logger datazen.environment.base (WARNING)>, newline: str = '\n', **_)[source]#
Bases:
BaseEnvironment
The variable-data loading environment mixin. Only requires the base environment capability to function.
- add_variable_dirs(dir_paths: List[str], rel_path: str = '.', name: str = '__root__', allow_dup: bool = False) int [source]#
Add variable-data directories, return the number of directories added.
- load_variables(var_loads: LoadedFiles = (None, None), name: str = '__root__') LoadResult [source]#
Load variable data, resolve any un-loaded variable directories.
Module contents#
datazen - A data structure for runtime data.
- class datazen.environment.EnvironmentNamespace(name: str)[source]#
Bases:
object
The base class for management of the environment data structure.
- add_dir(dir_type: DataType, dir_path: str, rel_path: str = '.', allow_dup: bool = False) bool [source]#
Add a directory to be loaded for a given data type.
- add_dirs(dir_type: DataType, dir_paths: List[str], rel_path: str = '.', allow_dup: bool = False) int [source]#
Add multiple directories for a given data type, return the number of directories added.
- datazen.environment.clone(env: EnvironmentNamespace, update: EnvironmentNamespace) EnvironmentNamespace [source]#
Create a clone (deep copy) of an existing Environment.