Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Feast - Feature Store for Machine Learning

Feast is an open source feature store for machine learning that helps ML platform teams manage features consistently for training and serving.

## Project Overview

Feast (Feature Store) is a Python-based project that provides:
- **Offline Store**: Process historical data for batch scoring or model training
- **Online Store**: Power real-time predictions with low-latency features
- **Feature Server**: Serve pre-computed features online
- **Point-in-time correctness**: Prevent data leakage during model training
- **Data infrastructure abstraction**: Decouple ML from data infrastructure

## Development Commands

### Setup
```bash
# Install development dependencies
make install-python-dependencies-dev

# Install minimal dependencies
make install-python-dependencies-minimal
```

### Code Quality
```bash
# Format Python code
make format-python

# Lint Python code
make lint-python

# Type check
cd sdk/python && python -m mypy feast
```

### Testing
```bash
# Run unit tests
make test-python-unit

# Run integration tests (local)
make test-python-integration-local

# Run integration tests (CI)
make test-python-integration

# Run all Python tests
make test-python-universal
```

### Protobuf Compilation
```bash
# Compile Python protobuf files
make compile-protos-python

# Compile all protos
make protos
```

### Go Development
```bash
# Build Go code
make build-go

# Test Go code
make test-go

# Format Go code
make format-go

# Lint Go code
make lint-go
```

### Docker
```bash
# Build all Docker images
make build-docker

# Build feature server Docker image
make build-feature-server-docker
```

### Documentation
```bash
# Build Sphinx documentation
make build-sphinx

# Build templates
make build-templates

# Build Helm docs
make build-helm-docs
```

## Project Structure

```
feast/
├── sdk/python/ # Python SDK and core implementation
├── go/ # Go implementation
├── ui/ # Web UI
├── docs/ # Documentation
├── examples/ # Example projects
├── infra/ # Infrastructure and deployment
│ ├── charts/ # Helm charts
│ └── feast-operator/ # Kubernetes operator
└── protos/ # Protocol buffer definitions
```

## Key Technologies

- **Languages**: Python (primary), Go
- **Dependencies**: pandas, pyarrow, SQLAlchemy, FastAPI, protobuf
- **Data Sources**: BigQuery, Snowflake, Redshift, Parquet, Postgres, Spark
- **Online Stores**: Redis, DynamoDB, Bigtable, Snowflake, SQLite, Postgres
- **Offline Stores**: BigQuery, Snowflake, Redshift, Spark, Dask, DuckDB
- **Cloud Providers**: AWS, GCP, Azure

## Common Development Tasks

### Running Tests
The project uses pytest for Python testing with extensive integration test suites for different data sources and stores.

### Code Style
- Uses `ruff` for Python linting and formatting
- Go uses standard `gofmt`

### Protobuf Development
Protocol buffers are used for data serialization and gRPC APIs. Recompile protos after making changes to `.proto` files.

### Multi-language Support
Feast supports Python and Go SDKs. Changes to core functionality may require updates across both languages.

## Contributing

1. Follow the [contribution guide](docs/project/contributing.md)
2. Set up your development environment
3. Run relevant tests before submitting PRs
4. Ensure code passes linting and type checking
Loading