IdGenerator
IdGenerator(scope, _counters=dict(), _seen=set())Generates unique IDs within a given scope.
Supports both: 1. Wrapping external IDs with the scope 2. Generating new IDs when none provided
Tracks seen IDs to detect collisions.
Attributes
| Name | Type | Description |
|---|---|---|
| scope | str |
The scope to apply to all generated/wrapped IDs |
Examples
>>> gen = IdGenerator("midi")>>> gen.get_or_create("n42") # Wrap external ID
'midi:n42'>>> gen.get_or_create(None, type_hint="note") # Generate
'midi:note_1'>>> gen.get_or_create(None, type_hint="note") # Generate next
'midi:note_2'Methods
| Name | Description |
|---|---|
| create | Generate a new unique ID (no external ID). |
| get_or_create | Get a scoped ID string. |
| has_seen | Check if an ID has been generated/wrapped by this generator. |
| reset | Reset all counters and seen IDs. |
| reset_counters | Reset counters but keep seen IDs (for continuation). |
| wrap | Wrap an external ID with the scope. |
create
IdGenerator.create(type_hint='event')Generate a new unique ID (no external ID).
get_or_create
IdGenerator.get_or_create(external_id=None, type_hint='event')Get a scoped ID string.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| external_id | str | None |
The ID from the source, if any. Will be wrapped with the scope but otherwise preserved. | None |
| type_hint | str |
A prefix for generated IDs if external_id is None. | 'event' |
Returns
| Name | Type | Description |
|---|---|---|
str |
A string in “scope:local_id” format (or just “local_id” if | |
str |
scope is empty). |
has_seen
IdGenerator.has_seen(id_str)Check if an ID has been generated/wrapped by this generator.
reset
IdGenerator.reset()Reset all counters and seen IDs.
reset_counters
IdGenerator.reset_counters()Reset counters but keep seen IDs (for continuation).
wrap
IdGenerator.wrap(external_id)Wrap an external ID with the scope.