pipeworks_name_generation.generator
Core name generation - minimal proof of concept version.
This is the SIMPLEST possible implementation that passes tests. Features to add later: - Pattern loading from YAML files - Phonotactic constraints - Custom pattern sets - Performance optimization
For now: Hardcoded syllables, basic logic.
Classes
Generate phonetically-plausible names deterministically. |
Module Contents
- class pipeworks_name_generation.generator.NameGenerator(pattern)[source]
Generate phonetically-plausible names deterministically.
This is a minimal proof-of-concept implementation with hardcoded syllables. Pattern loading and advanced features will be added later.
The key requirement is DETERMINISM: same seed = same name, always. This is critical for games where entity IDs must map to consistent names.
- Parameters:
pattern (str) – Pattern set name (currently only “simple” is supported)
- Raises:
ValueError – If pattern is not recognized
Example
>>> gen = NameGenerator(pattern="simple") >>> name = gen.generate(seed=42) >>> assert gen.generate(seed=42) == name # Deterministic!
Initialize generator with a pattern set.
- Parameters:
pattern (str) – Pattern set name (only “simple” supported in POC)
- Raises:
ValueError – If pattern is not recognized
- pattern
- generate(seed, syllables=None)[source]
Generate a single name deterministically.
This is the core method. Given the same seed, it MUST produce the same name every time. This determinism is critical for games.
- Parameters:
- Returns:
Generated name string, capitalized (e.g., “Kalathin”)
- Raises:
ValueError – If syllable count is invalid
- Return type:
Example
>>> gen = NameGenerator(pattern="simple") >>> gen.generate(seed=1) 'Marindel' >>> gen.generate(seed=1) # Same seed 'Marindel' # Same name! >>> gen.generate(seed=2) # Different seed 'Soravyn' # Different name
- generate_batch(count, base_seed, unique=True)[source]
Generate multiple names at once.
This is useful for bulk generation (e.g., populating a town with NPCs).
- Parameters:
- Returns:
List of generated names
- Raises:
ValueError – If unable to generate enough unique names
- Return type:
Example
>>> gen = NameGenerator(pattern="simple") >>> names = gen.generate_batch(count=3, base_seed=100) >>> len(names) 3 >>> names == gen.generate_batch(count=3, base_seed=100) True # Deterministic!