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_models_pack(value, info)[source]#

Validate and normalise models_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_proj_lang(value)[source]#

Parse project language from string or HDLType enum.

Parameters:

value (str | HDLType)

Return type:

str | HDLType

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 (ValidationInfo) – 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

get_context()[source]#
Return type:

FABulousSettings

Get the global FABulous context.

returns:

The current FABulousSettings instance

rtype:

FABulousSettings

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.

param project_dir:

Project directory path (if None, uses cwd)

type project_dir:

Path | None

param global_dot_env:

Path to a global .env file (if any)

type global_dot_env:

Path | None

param project_dot_env:

Path to a project-specific .env file (if any)

type project_dot_env:

Path | None

returns:

The initialized FABulousSettings instance

rtype:

FABulousSettings

reset_context()[source]#
Return type:

None

Reset the global context (primarily for testing).

Module Attributes#

FAB_USER_CONFIG_DIR[source]