feast init accepts project names incompatible with the local SQLite template
Expected Behavior
A repository successfully created by feast init should work with its generated configuration, or the CLI should reject a project name that is incompatible with the selected template.
Current Behavior
The default local template accepts a hyphenated repository/project name:
feast init feast-smoke -t localThe command exits successfully and generates a repository whose feature_store.yaml contains:
project: feast-smokeHowever, loading that generated repository fails because the local template uses the SQLite online store:
Value error, Project names for SQLite online stores cannot contain hyphens because they are used in table names.
at feature_store.yamlThis means feast init successfully generates a repository that cannot be used without manually editing its configuration.
Steps to Reproduce
feast init feast-smoke -t local
cd feast-smoke/feature_repo
python test_workflow.pyThe failure occurs when FeatureStore(repo_path=".") loads the generated configuration.
Using an underscore succeeds through the complete local workflow:
feast init feast_smoke -t local
cd feast_smoke/feature_repo
python test_workflow.pyExisting Test Behavior
sdk/python/tests/unit/test_repo_operations_validate_feast_project_name.py explicitly considers hyphen-name valid, while the generated SQLite-backed local repository rejects it later.
Related History
- #1545 previously tracked SQLite failures caused by hyphens in project names.
- #5561 and #5562 added support for hyphens in repository/project names.
- The current validation allows hyphens, but the generated SQLite-backed local repository remains incompatible.
- This issue supersedes closed #6807, which was accidentally submitted through the wrong connected GitHub account.
Possible Solutions
Either:
- Make SQLite table-name generation safely support hyphenated Feast project names; or
- Reject hyphenated names early when
feast inituses a SQLite-backed template, with a clear error; or - Preserve the requested directory name while normalizing the generated Feast project name (for example,
feast-smoke→feast_smoke).
I would be happy to contribute the fix once maintainers confirm the preferred behavior.
Environment
- Feast:
0.66.1.dev6+g5ad559239 - Python:
3.10.12 - OS: Ubuntu 22.04.5 LTS
Source: feast-dev/feast