FABulous.FABulous_settings#

FABulous settings management and environment configuration.

This module handles configuration settings for the FABulous FPGA framework, including tool paths, project settings, and environment variable management.

Classes#

class FABulousSettings[source]#

Bases:

FABulous settings.

Tool paths are resolved lazily during validation so that environment variable setup (including PATH updates for oss-cad-suite) can occur beforehand.

Methods:

ensure_user_config_dir(value)[source]#

Ensure user config directory exists, creating if necessary.

Parameters:

value (Path | None)

Return type:

Path | None

is_valid_project_dir(value)[source]#

Check if project_dir is a valid directory.

Parameters:

value (Path | None)

Return type:

Path | None

parse_model_pack(value, info)[source]#

Validate and normalise model_pack path based on project language.

Uses already-validated proj_lang from info.data when available. Accepts None / empty string to mean unset.

Parameters:
Return type:

Path | None

parse_version_str(value)[source]#

Parse version from string or Version object.

Parameters:

value (str | packaging.version.Version)

Return type:

packaging.version.Version

resolve_tool_paths(value, info)[source]#

Resolve tool paths by checking if tools are available in PATH.

This method is used as a field validator to automatically resolve tool paths during settings initialization. If a tool path is not explicitly provided, it searches for the tool in the system PATH.

Parameters:
  • value (Path | None) – The explicitly provided tool path, if any.

  • info (FieldValidationInfo) – Validation context containing field information.

Returns:

The resolved path to the tool if found, None otherwise.

Return type:

Path | None

Notes

This method logs a warning if a tool is not found in PATH, as some features may be unavailable without the tool.

validate_proj_lang(value)[source]#

Validate and normalise the project language to HDLType enum.

Parameters:

value (str | HDLType)

Return type:

HDLType

Functions#

add_var_to_global_env(key, value)[source]#
Parameters:
Return type:

None

Add or update a key-value pair to the global .env file.

param key:

The environment variable key to add or update.

type key:

str

param value:

The value to set for the environment variable.

type value:

str

raises RuntimeError:

If the user config directory is not set.

get_context()[source]#
Return type:

FABulousSettings

Get the global FABulous context.

rtype:

The current FABulousSettings instance

raises RuntimeError:

If context has not been initialized with init_context():

init_context(project_dir=None, global_dot_env=None, project_dot_env=None)[source]#
Parameters:
  • project_dir (Path | None)

  • global_dot_env (Path | None)

  • project_dot_env (Path | None)

Return type:

FABulousSettings

Initialize the global FABulous context with settings.

This function gathers .env files and lets the pydantic-settings system handle project directory resolution.

Args:

global_dot_env: Global .env file path project_dot_env: Project .env file path explicit_project_dir: Explicitly provided project directory (highest priority)

rtype:

The initialized FABulousSettings instance

reset_context()[source]#
Return type:

None

Reset the global context (primarily for testing).

Module Attributes#

FAB_USER_CONFIG_DIR[source]