Utilities¶
Utility classes and functions.
IDGenerator¶
Deterministic ID generation with optional seeding.
IDGenerator
¶
Deterministic ID generator with optional seeding for reproducibility.
Supports seeded mode for deterministic IDs (useful for testing) and default mode using UUID4 for production.
Usage
Production (random IDs)¶
id_gen = IDGenerator() id1 = id_gen.generate("agent") # agent_a1b2c3d4
Testing (deterministic IDs)¶
id_gen = IDGenerator(seed=42) id1 = id_gen.generate("agent") # Same every time with seed=42
Reset for new test¶
id_gen.reset(seed=42)
Initialize the ID generator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
seed
|
int | None
|
Optional seed for deterministic ID generation. If None, uses UUID4 for true randomness. |
None
|
Source code in src/dapr_agents_oas_adapter/utils.py
Attributes¶
Functions¶
generate
¶
Generate a unique identifier with optional prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prefix
|
str
|
Optional prefix for the ID (e.g., "agent", "flow", "node") |
''
|
Returns:
| Type | Description |
|---|---|
str
|
Generated ID string. Format depends on mode: |
str
|
|
str
|
|
Source code in src/dapr_agents_oas_adapter/utils.py
reset
¶
Reset the generator with optional new seed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
seed
|
int | None
|
Optional seed for deterministic ID generation. |
None
|
Source code in src/dapr_agents_oas_adapter/utils.py
get_instance
classmethod
¶
Get the global IDGenerator instance (singleton pattern).
reset_instance
classmethod
¶
Reset the global instance with optional seed.
Usage Examples¶
Basic ID Generation¶
from dapr_agents_oas_adapter import IDGenerator
gen = IDGenerator()
# Generate unique IDs
id1 = gen.generate("agent") # "agent_a1b2c3d4"
id2 = gen.generate("agent") # "agent_e5f6g7h8"
id3 = gen.generate("task") # "task_i9j0k1l2"
Deterministic IDs with Seed¶
# With seed for reproducible IDs
gen = IDGenerator(seed=42)
id1 = gen.generate("node")
id2 = gen.generate("node")
# Reset to regenerate same sequence
gen.reset(seed=42)
assert gen.generate("node") == id1
assert gen.generate("node") == id2
Singleton Pattern¶
from dapr_agents_oas_adapter import IDGenerator
# Get global generator (singleton)
gen = IDGenerator.get_instance()
id1 = gen.generate("flow")
# Reset for testing
IDGenerator.reset_instance(seed=123)
Testing with Seeds¶
import pytest
from dapr_agents_oas_adapter import IDGenerator
@pytest.fixture(autouse=True)
def reset_ids():
"""Reset ID generator before each test."""
IDGenerator.reset_instance(seed=42)
yield
Module Functions¶
generate_id¶
Convenience function using global generator.
generate_id
¶
Generate a unique identifier with optional prefix.
This function uses the global IDGenerator instance. For testing with deterministic IDs, use IDGenerator.reset_instance(seed=42) first.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prefix
|
str
|
Optional prefix for the ID |
''
|
Returns:
| Type | Description |
|---|---|
str
|
Generated ID string |
Source code in src/dapr_agents_oas_adapter/utils.py
Template Utilities¶
extract_template_variables¶
Extract placeholder variables from templates.
extract_template_variables
¶
Extract variable names from a Jinja2-style template string.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
template
|
str
|
Template string with {{ variable }} placeholders |
required |
Returns:
| Type | Description |
|---|---|
list[str]
|
List of variable names found in the template |
Source code in src/dapr_agents_oas_adapter/utils.py
render_template¶
Render a template with values.
render_template
¶
Render a simple Jinja2-style template with provided variables.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
template
|
str
|
Template string with {{ variable }} placeholders |
required |
variables
|
dict[str, Any]
|
Dictionary of variable name to value mappings |
required |
Returns:
| Type | Description |
|---|---|
str
|
Rendered template string |
Source code in src/dapr_agents_oas_adapter/utils.py
Related¶
- Types - Data models