Skip to content

feat(cli): Add feast projects delete command (closes #5095)#6318

Merged
ntkathole merged 5 commits intofeast-dev:masterfrom
mailtoboggavarapu-coder:feat/expose-project-delete-cli-v2
May 6, 2026
Merged

feat(cli): Add feast projects delete command (closes #5095)#6318
ntkathole merged 5 commits intofeast-dev:masterfrom
mailtoboggavarapu-coder:feat/expose-project-delete-cli-v2

Conversation

@mailtoboggavarapu-coder
Copy link
Copy Markdown
Contributor

@mailtoboggavarapu-coder mailtoboggavarapu-coder commented Apr 22, 2026

Summary

Closes #5095

Exposes project deletion through the CLI by adding a new feast projects delete <name> subcommand to the existing projects group.

What's changed

Added project_delete command to sdk/python/feast/cli/projects.py:

Usage: feast projects delete [OPTIONS] NAME

  Delete a project and all its resources from the registry.

Options:
  -y, --yes  Skip confirmation prompt and delete immediately.
  --help     Show this message and exit.

Design notes

  • Uses store.registry.delete_project(name, commit=True) via the lazy-init registry property (the abstract method exists in BaseRegistry and is implemented in all concrete registries)
  • Adds an interactive confirmation prompt with click.confirm — can be skipped with --yes / -y for scripting
  • Catches both FeastObjectNotFoundException and ProjectNotFoundException so the CLI exits cleanly (exit code 1) for either variant raised by concrete registry implementations
  • Follows existing CLI patterns in projects.py

Example

# Interactive (prompts for confirmation)
feast projects delete my-project

# Non-interactive
feast projects delete my-project --yes

Checklist

  • Added delete command to projects_cmd group
  • Confirmation prompt with --yes bypass flag
  • Error handling for non-existent projects
  • Follows existing CLI patterns in projects.py

Open in Devin Review

devin-ai-integration[bot]

This comment was marked as resolved.

@mailtoboggavarapu-coder
Copy link
Copy Markdown
Contributor Author

Thanks for the detailed review, @devin-ai-integration! Fixed both issues in commit 21f7f6a:

  1. project_listutils.py_object_to_proto + broken tag parsing: Updated to match master exactly: uses utils.tags_list_to_dict(tags) for tag filtering and prints tabulated output via tabulate.
  2. project_current — simplified incorrectly: Fixed to match master (calls store.get_project(name=None) with try/except and YAML-formatted output).

The only new code is the project_delete command itself.

@mailtoboggavarapu-coder
Copy link
Copy Markdown
Contributor Author

Hi team! Friendly ping on this PR — all 18 CI checks are passing and there are no conflicts with the base branch.

This adds a feast projects delete command (closes #5095) with an interactive confirmation prompt and a --yes / -y flag for scripting. Happy to iterate on any feedback!

@mailtoboggavarapu-coder
Copy link
Copy Markdown
Contributor Author

Hi team! 👋 Friendly ping on feast #6318 — this adds feast projects delete <name> to the CLI (closes #5095).

Status as of today:

  • ✅ DCO passing
  • ✅ Devin Review completed
  • ✅ Branch synced with master
  • ⏳ 11 workflows awaiting maintainer CI approval (fork policy)

The only blocker is maintainer CI approval + code review. Happy to address any feedback!

@ntkathole ntkathole force-pushed the feat/expose-project-delete-cli-v2 branch from cfe215b to 9f45a4b Compare May 1, 2026 04:44
@ntkathole
Copy link
Copy Markdown
Member

@mailtoboggavarapu-coder I think it's better to include delete_project method in sdk/python/feast/feature_store.py

See #6212

Let's add it to feature_store.py and remove context passing in cli

@mailtoboggavarapu-coder
Copy link
Copy Markdown
Contributor Author

Hi @ntkathole 👋 — all unit tests, smoke tests, and most integration tests are now passing after the indentation fix. Two checks are failing but neither is caused by this PR's changes:

  1. linterdetect-secrets is flagging infra/feast-operator/bundle/manifests/openlineage-secret_v1_secret.yaml, a file this PR does not touch (pre-existing repo issue).

  2. pr-integration-tests — exited with code 2 (pytest "interrupted") after 16+ minutes, indicating a cloud infrastructure/timeout flake rather than a test assertion failure. All other integration test workflows (DuckDB, Ray, remote-rbac, registry REST API, local) passed.

Could you please re-run the pr-integration-tests job? It appears to be a transient infrastructure failure unrelated to this change. Thank you! 🙏

Exposes project deletion via the CLI. The new `feast projects delete <name>`
command calls store.registry.delete_project() which is already implemented
in all concrete registries.

- Adds interactive confirmation prompt with --yes/-y flag for scripting
- Catches both FeastObjectNotFoundException and ProjectNotFoundException
- Exits with code 1 for non-existent projects

Signed-off-by: Venkateswarlu Boggavarapu <mailtoboggavarapu@gmail.com>
…tation

Addresses Devin Review findings:
- Fix project_list: use utils.tags_list_to_dict() instead of manual tag.split(), and print tabulated output matching master
- Fix project_current: call store.get_project(name=None) with error handling instead of store.project

Both functions now match master branch exactly. Only project_delete is new code from this PR.

Signed-off-by: Venkateswarlu Boggavarapu <mailtoboggavarapu@gmail.com>
Refactor project listing and deletion commands in CLI.
Added a method to delete a project from the registry.
@ntkathole ntkathole force-pushed the feat/expose-project-delete-cli-v2 branch from 2babaa0 to 5d6419a Compare May 6, 2026 04:04
@ntkathole ntkathole merged commit 1a4b96c into feast-dev:master May 6, 2026
25 of 28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose project deletion to CLI

2 participants