CircularReferenceError¶
Raised when self-references create a circular dependency.
When It's Raised¶
- Direct circular reference:
a: ${a} - Indirect circular reference:
a: ${b}andb: ${a} - Longer cycles:
a: ${b},b: ${c},c: ${a}
Example¶
from holoconf import Config, CircularReferenceError
config = Config.loads("""
a: ${b}
b: ${c}
c: ${a}
""")
try:
value = config.get("a")
except CircularReferenceError as e:
print(f"Circular reference: {e}")
# Circular reference: Circular reference detected at path 'a'
Prevention¶
Ensure your self-references form a directed acyclic graph (DAG):
# Good - no cycles
defaults:
timeout: 30
database:
timeout: ${defaults.timeout}
cache:
timeout: ${defaults.timeout}
Class Reference¶
Bases: HoloconfError
Circular reference detected in configuration.
Raised when a circular reference is detected during value resolution. This occurs when interpolations form a cycle, such as a value referencing itself or indirect circular dependencies.