| name | feast-dev |
| description | Development guide for contributing to the Feast codebase. Covers environment setup, testing, linting, project structure, and PR workflow for feast-dev/feast. |
| license | Apache-2.0 |
| compatibility | Works with Claude Code, OpenAI Codex, and any Agent Skills compatible tool. Requires Python 3.10+, uv, and git. |
| metadata | {"author":"feast-dev","version":"1.0"} |
Feast Development Guide
Environment Setup
make install-python-dependencies-dev
make install-python-dependencies-minimal
make install-precommit
Running Tests
Unit Tests
make test-python-unit
python -m pytest sdk/python/tests/unit/test_unit_feature_store.py -v
python -m pytest sdk/python/tests/unit/test_unit_feature_store.py -k "test_apply" -v
make test-python-unit-fast
Integration Tests (local)
make test-python-integration-local
Linting and Formatting
make format-python
make lint-python
make precommit-check
uv run bash -c "cd sdk/python && mypy feast"
uv run bash -c "cd sdk/python && mypy feast/path/to/file.py"
Code Style
- Use type hints on all function signatures
- Use
from __future__ import annotations at the top of new files
- Follow existing patterns in the module you are modifying
- PR titles must follow semantic conventions:
feat:, fix:, ci:, chore:, docs:
- Add a GitHub label to PRs (e.g.
kind/bug, kind/feature, kind/housekeeping)
- Sign off commits with
git commit -s (DCO requirement)
Docker Images
make build-docker
make build-feature-server-docker
Documentation
make build-sphinx
make build-templates
make build-helm-docs
Documentation and Blog Posts
- Blog posts must be placed in
/infra/website/docs/blog/ — do NOT place them under docs/blog/ or elsewhere.
- Blog post files must include YAML frontmatter with
title, description, date, and authors fields matching the format of existing posts in that directory.
- All other docs go under
docs/ and must be added to docs/SUMMARY.md (GitBook navigation) or they won't appear on the website.
| Change type | Doc location |
|---|
| New online store | docs/reference/online-stores/<name>.md + update README.md and SUMMARY.md |
| New offline store | docs/reference/offline-stores/<name>.md + update README.md, overview.md, SUMMARY.md |
| New registry backend | docs/reference/registries/<name>.md + update SUMMARY.md |
| Config option | docs/reference/feature-store-yaml.md |
| CLI flag/command | docs/reference/feast-cli-commands.md |
| How-to / integration | docs/how-to-guides/customizing-feast/ or docs/how-to-guides/ + update SUMMARY.md |
| Architecture / concept | docs/getting-started/architecture/ or docs/getting-started/components/ |
Project Structure
sdk/python/feast/ # Main Python SDK
cli/cli.py # CLI entry point (feast apply, feast materialize, etc.)
feature_store.py # FeatureStore class - core orchestration
repo_config.py # feature_store.yaml configuration parsing
repo_operations.py # feast apply / feast teardown logic
infra/ # Online/offline store implementations
online_stores/ # Redis, DynamoDB, SQLite, etc.
offline_stores/ # BigQuery, Snowflake, File, etc.
transformation/ # On-demand and streaming transformations
protos/feast/ # Protobuf definitions
sdk/python/tests/ # Test suite
unit/ # Fast, no external deps
integration/ # Requires infrastructure
Key Abstractions
- FeatureStore (
feature_store.py): Entry point for all operations
- FeatureView: Defines a set of features from a data source
- OnDemandFeatureView: Computed features using request-time transformations
- Entity: Join key definition (e.g. driver_id, customer_id)
- DataSource: Where raw data lives (BigQuery, files, Snowflake, etc.)
- OnlineStore: Low-latency feature serving (Redis, DynamoDB, SQLite)
- OfflineStore: Historical feature retrieval (BigQuery, Snowflake, file)