nemoguardrails.rails.llm.rails_config_fields

View as Markdown

Module Contents

Classes

NameDescription
RailsConfigField-

Functions

NameDescription
_add_config_field-
_project_config_fields-
_reset_rails_config_fields_cacheClear projected config fields so the next read reprojects from the manifests.
all_config_fields-
build_rails_config_dataBuild the RailsConfigData model from the projected config fields.
config_exported_names-
config_key_to_rail_name-
discover_rails_config_fieldsProject the rails.config field specs from the rail manifests once and cache them.
resolve_config_export-
validate_no_config_export_shadowing-

Data

_EXPORTS

_FIELDS

_discovered

_discovering

API

class nemoguardrails.rails.llm.rails_config_fields.RailsConfigField(
rail_name: str,
config_key: str,
config: nemoguardrails.manifests.config_schema.RailConfigSpec,
origin: str = ''
)
Dataclass
config
RailConfigSpec
config_key
str
origin
str = ''
rail_name
str
nemoguardrails.rails.llm.rails_config_fields._add_config_field(
fields: typing.Dict[str, nemoguardrails.rails.llm.rails_config_fields.RailsConfigField],
exports: typing.Dict[str, typing.Tuple[str, typing.Any]],
field: nemoguardrails.rails.llm.rails_config_fields.RailsConfigField
) -> None
nemoguardrails.rails.llm.rails_config_fields._project_config_fields(
manifests: typing.Mapping[str, nemoguardrails.manifests.RailManifest],
include_exports: bool = True
) -> typing.Tuple[typing.Dict[str, nemoguardrails.rails.llm.rails_config_fields.RailsConfigField], typing.Dict[str, typing.Tuple[str, typing.Any]]]
nemoguardrails.rails.llm.rails_config_fields._reset_rails_config_fields_cache() -> None

Clear projected config fields so the next read reprojects from the manifests.

Test seam only; production never calls this. The in-progress flag is reset too so a projection aborted by the re-entrancy guard cannot stay latched and poison later reads.

nemoguardrails.rails.llm.rails_config_fields.all_config_fields() -> typing.Dict[str, nemoguardrails.rails.llm.rails_config_fields.RailsConfigField]
nemoguardrails.rails.llm.rails_config_fields.build_rails_config_data(
base: typing.Optional[typing.Type[pydantic.BaseModel]] = None,
module: str = 'nemoguardrails.rails.llm.c...,
manifests: typing.Optional[typing.Mapping[str, nemoguardrails.manifests.RailManifest]] = None,
model_name: str = 'RailsConfigData'
) -> typing.Type[pydantic.BaseModel]

Build the RailsConfigData model from the projected config fields.

config.py calls this at import time and bakes the result into a module-level class and all, so the field set cannot be varied by mutating discovery state at runtime. A test needing a different built-in field set must install substitute manifests, call the reset* seams, then importlib.reload the config module.

nemoguardrails.rails.llm.rails_config_fields.config_exported_names() -> typing.Tuple[str, ...]
nemoguardrails.rails.llm.rails_config_fields.config_key_to_rail_name() -> typing.Dict[str, str]
nemoguardrails.rails.llm.rails_config_fields.discover_rails_config_fields() -> None

Project the rails.config field specs from the rail manifests once and cache them.

Like discover_rail_manifests, the explicit two-flag guard must stay: functools.cache cannot express the in-progress re-entrancy check.

nemoguardrails.rails.llm.rails_config_fields.resolve_config_export(
name: str
) -> typing.Any
nemoguardrails.rails.llm.rails_config_fields.validate_no_config_export_shadowing(
existing_names: collections.abc.Collection[str]
) -> None
nemoguardrails.rails.llm.rails_config_fields._EXPORTS: Dict[str, Tuple[str, Any]] = {}
nemoguardrails.rails.llm.rails_config_fields._FIELDS: Dict[str, RailsConfigField] = {}
nemoguardrails.rails.llm.rails_config_fields._discovered = False
nemoguardrails.rails.llm.rails_config_fields._discovering = False