5 files changed
@@ -0,0 +1,153 @@ | |||
| 1 | + # Feast - Agent Instructions | ||
| 2 | + | ||
| 3 | + This file provides instructions for AI coding agents (GitHub Copilot, Claude Code, OpenAI Codex, etc.) working in this repository. | ||
| 4 | + | ||
| 5 | + ## Project Overview | ||
| 6 | + | ||
| 7 | + Feast is an open source feature store for machine learning that helps ML platform teams manage features consistently for training and serving. | ||
| 8 | + | ||
| 9 | + Feast (Feature Store) is a Python-based project that provides: | ||
| 10 | + - **Offline Store**: Process historical data for batch scoring or model training | ||
| 11 | + - **Online Store**: Power real-time predictions with low-latency features | ||
| 12 | + - **Feature Server**: Serve pre-computed features online | ||
| 13 | + - **Point-in-time correctness**: Prevent data leakage during model training | ||
| 14 | + - **Data infrastructure abstraction**: Decouple ML from data infrastructure | ||
| 15 | + | ||
| 16 | + ## Development Commands | ||
| 17 | + | ||
| 18 | + ### Setup | ||
| 19 | + ```bash | ||
| 20 | + # Install development dependencies | ||
| 21 | + make install-python-dependencies-dev | ||
| 22 | + | ||
| 23 | + # Install minimal dependencies | ||
| 24 | + make install-python-dependencies-minimal | ||
| 25 | + ``` | ||
| 26 | + | ||
| 27 | + ### Code Quality | ||
| 28 | + ```bash | ||
| 29 | + # Format Python code | ||
| 30 | + make format-python | ||
| 31 | + | ||
| 32 | + # Lint Python code | ||
| 33 | + make lint-python | ||
| 34 | + | ||
| 35 | + # Type check | ||
| 36 | + cd sdk/python && python -m mypy feast | ||
| 37 | + ``` | ||
| 38 | + | ||
| 39 | + ### Testing | ||
| 40 | + ```bash | ||
| 41 | + # Run unit tests | ||
| 42 | + make test-python-unit | ||
| 43 | + | ||
| 44 | + # Run integration tests (local) | ||
| 45 | + make test-python-integration-local | ||
| 46 | + | ||
| 47 | + # Run integration tests (CI) | ||
| 48 | + make test-python-integration | ||
| 49 | + | ||
| 50 | + # Run all Python tests | ||
| 51 | + make test-python-universal | ||
| 52 | + ``` | ||
| 53 | + | ||
| 54 | + ### Protobuf Compilation | ||
| 55 | + ```bash | ||
| 56 | + # Compile Python protobuf files | ||
| 57 | + make compile-protos-python | ||
| 58 | + | ||
| 59 | + # Compile all protos | ||
| 60 | + make protos | ||
| 61 | + ``` | ||
| 62 | + | ||
| 63 | + ### Go Development | ||
| 64 | + ```bash | ||
| 65 | + # Build Go code | ||
| 66 | + make build-go | ||
| 67 | + | ||
| 68 | + # Test Go code | ||
| 69 | + make test-go | ||
| 70 | + | ||
| 71 | + # Format Go code | ||
| 72 | + make format-go | ||
| 73 | + | ||
| 74 | + # Lint Go code | ||
| 75 | + make lint-go | ||
| 76 | + ``` | ||
| 77 | + | ||
| 78 | + ### Docker | ||
| 79 | + ```bash | ||
| 80 | + # Build all Docker images | ||
| 81 | + make build-docker | ||
| 82 | + | ||
| 83 | + # Build feature server Docker image | ||
| 84 | + make build-feature-server-docker | ||
| 85 | + ``` | ||
| 86 | + | ||
| 87 | + ### Documentation | ||
| 88 | + ```bash | ||
| 89 | + # Build Sphinx documentation | ||
| 90 | + make build-sphinx | ||
| 91 | + | ||
| 92 | + # Build templates | ||
| 93 | + make build-templates | ||
| 94 | + | ||
| 95 | + # Build Helm docs | ||
| 96 | + make build-helm-docs | ||
| 97 | + ``` | ||
| 98 | + | ||
| 99 | + ## Project Structure | ||
| 100 | + | ||
| 101 | + ``` | ||
| 102 | + feast/ | ||
| 103 | + ├── sdk/python/ # Python SDK and core implementation | ||
| 104 | + ├── go/ # Go implementation | ||
| 105 | + ├── ui/ # Web UI | ||
| 106 | + ├── docs/ # Documentation | ||
| 107 | + ├── examples/ # Example projects | ||
| 108 | + ├── infra/ # Infrastructure and deployment | ||
| 109 | + │ ├── charts/ # Helm charts | ||
| 110 | + │ └── feast-operator/ # Kubernetes operator | ||
| 111 | + └── protos/ # Protocol buffer definitions | ||
| 112 | + ``` | ||
| 113 | + | ||
| 114 | + ## Key Technologies | ||
| 115 | + | ||
| 116 | + - **Languages**: Python (primary), Go | ||
| 117 | + - **Dependencies**: pandas, pyarrow, SQLAlchemy, FastAPI, protobuf | ||
| 118 | + - **Data Sources**: BigQuery, Snowflake, Redshift, Parquet, Postgres, Spark | ||
| 119 | + - **Online Stores**: Redis, DynamoDB, Bigtable, Snowflake, SQLite, Postgres | ||
| 120 | + - **Offline Stores**: BigQuery, Snowflake, Redshift, Spark, Dask, DuckDB | ||
| 121 | + - **Cloud Providers**: AWS, GCP, Azure | ||
| 122 | + | ||
| 123 | + ## Common Development Tasks | ||
| 124 | + | ||
| 125 | + ### Running Tests | ||
| 126 | + The project uses pytest for Python testing with extensive integration test suites for different data sources and stores. | ||
| 127 | + | ||
| 128 | + ### Code Style | ||
| 129 | + - Use type hints on all Python function signatures | ||
| 130 | + - Follow existing patterns in the module you are modifying | ||
| 131 | + - PR titles must follow semantic conventions: `feat:`, `fix:`, `ci:`, `chore:`, `docs:` | ||
| 132 | + - Sign off commits with `git commit -s` (DCO requirement) | ||
| 133 | + - Uses `ruff` for Python linting and formatting | ||
| 134 | + - Go uses standard `gofmt` | ||
| 135 | + | ||
| 136 | + ### Protobuf Development | ||
| 137 | + Protocol buffers are used for data serialization and gRPC APIs. Recompile protos after making changes to `.proto` files. | ||
| 138 | + | ||
| 139 | + ### Multi-language Support | ||
| 140 | + Feast supports Python and Go SDKs. Changes to core functionality may require updates across both languages. | ||
| 141 | + | ||
| 142 | + ## Documentation and Blog Posts | ||
| 143 | + | ||
| 144 | + - **Blog posts must be placed in `/infra/website/docs/blog/`** — do NOT create blog posts under `docs/blog/` or any other location. | ||
| 145 | + - Blog post files must include YAML frontmatter with `title`, `description`, `date`, and `authors` fields, following the format of existing posts in that directory. | ||
| 146 | + - All other reference documentation goes under `docs/`. | ||
| 147 | + | ||
| 148 | + ## Contributing | ||
| 149 | + | ||
| 150 | + 1. Follow the [contribution guide](docs/project/contributing.md) | ||
| 151 | + 2. Set up your development environment | ||
| 152 | + 3. Run relevant tests before submitting PRs | ||
| 153 | + 4. Ensure code passes linting and type checking | ||
@@ -1,141 +1 @@ | |||
| 1 | - # Feast - Feature Store for Machine Learning | ||
| 2 | - | ||
| 3 | - Feast is an open source feature store for machine learning that helps ML platform teams manage features consistently for training and serving. | ||
| 4 | - | ||
| 5 | - ## Project Overview | ||
| 6 | - | ||
| 7 | - Feast (Feature Store) is a Python-based project that provides: | ||
| 8 | - - **Offline Store**: Process historical data for batch scoring or model training | ||
| 9 | - - **Online Store**: Power real-time predictions with low-latency features | ||
| 10 | - - **Feature Server**: Serve pre-computed features online | ||
| 11 | - - **Point-in-time correctness**: Prevent data leakage during model training | ||
| 12 | - - **Data infrastructure abstraction**: Decouple ML from data infrastructure | ||
| 13 | - | ||
| 14 | - ## Development Commands | ||
| 15 | - | ||
| 16 | - ### Setup | ||
| 17 | - ```bash | ||
| 18 | - # Install development dependencies | ||
| 19 | - make install-python-dependencies-dev | ||
| 20 | - | ||
| 21 | - # Install minimal dependencies | ||
| 22 | - make install-python-dependencies-minimal | ||
| 23 | - ``` | ||
| 24 | - | ||
| 25 | - ### Code Quality | ||
| 26 | - ```bash | ||
| 27 | - # Format Python code | ||
| 28 | - make format-python | ||
| 29 | - | ||
| 30 | - # Lint Python code | ||
| 31 | - make lint-python | ||
| 32 | - | ||
| 33 | - # Type check | ||
| 34 | - cd sdk/python && python -m mypy feast | ||
| 35 | - ``` | ||
| 36 | - | ||
| 37 | - ### Testing | ||
| 38 | - ```bash | ||
| 39 | - # Run unit tests | ||
| 40 | - make test-python-unit | ||
| 41 | - | ||
| 42 | - # Run integration tests (local) | ||
| 43 | - make test-python-integration-local | ||
| 44 | - | ||
| 45 | - # Run integration tests (CI) | ||
| 46 | - make test-python-integration | ||
| 47 | - | ||
| 48 | - # Run all Python tests | ||
| 49 | - make test-python-universal | ||
| 50 | - ``` | ||
| 51 | - | ||
| 52 | - ### Protobuf Compilation | ||
| 53 | - ```bash | ||
| 54 | - # Compile Python protobuf files | ||
| 55 | - make compile-protos-python | ||
| 56 | - | ||
| 57 | - # Compile all protos | ||
| 58 | - make protos | ||
| 59 | - ``` | ||
| 60 | - | ||
| 61 | - ### Go Development | ||
| 62 | - ```bash | ||
| 63 | - # Build Go code | ||
| 64 | - make build-go | ||
| 65 | - | ||
| 66 | - # Test Go code | ||
| 67 | - make test-go | ||
| 68 | - | ||
| 69 | - # Format Go code | ||
| 70 | - make format-go | ||
| 71 | - | ||
| 72 | - # Lint Go code | ||
| 73 | - make lint-go | ||
| 74 | - ``` | ||
| 75 | - | ||
| 76 | - ### Docker | ||
| 77 | - ```bash | ||
| 78 | - # Build all Docker images | ||
| 79 | - make build-docker | ||
| 80 | - | ||
| 81 | - # Build feature server Docker image | ||
| 82 | - make build-feature-server-docker | ||
| 83 | - ``` | ||
| 84 | - | ||
| 85 | - ### Documentation | ||
| 86 | - ```bash | ||
| 87 | - # Build Sphinx documentation | ||
| 88 | - make build-sphinx | ||
| 89 | - | ||
| 90 | - # Build templates | ||
| 91 | - make build-templates | ||
| 92 | - | ||
| 93 | - # Build Helm docs | ||
| 94 | - make build-helm-docs | ||
| 95 | - ``` | ||
| 96 | - | ||
| 97 | - ## Project Structure | ||
| 98 | - | ||
| 99 | - ``` | ||
| 100 | - feast/ | ||
| 101 | - ├── sdk/python/ # Python SDK and core implementation | ||
| 102 | - ├── go/ # Go implementation | ||
| 103 | - ├── ui/ # Web UI | ||
| 104 | - ├── docs/ # Documentation | ||
| 105 | - ├── examples/ # Example projects | ||
| 106 | - ├── infra/ # Infrastructure and deployment | ||
| 107 | - │ ├── charts/ # Helm charts | ||
| 108 | - │ └── feast-operator/ # Kubernetes operator | ||
| 109 | - └── protos/ # Protocol buffer definitions | ||
| 110 | - ``` | ||
| 111 | - | ||
| 112 | - ## Key Technologies | ||
| 113 | - | ||
| 114 | - - **Languages**: Python (primary), Go | ||
| 115 | - - **Dependencies**: pandas, pyarrow, SQLAlchemy, FastAPI, protobuf | ||
| 116 | - - **Data Sources**: BigQuery, Snowflake, Redshift, Parquet, Postgres, Spark | ||
| 117 | - - **Online Stores**: Redis, DynamoDB, Bigtable, Snowflake, SQLite, Postgres | ||
| 118 | - - **Offline Stores**: BigQuery, Snowflake, Redshift, Spark, Dask, DuckDB | ||
| 119 | - - **Cloud Providers**: AWS, GCP, Azure | ||
| 120 | - | ||
| 121 | - ## Common Development Tasks | ||
| 122 | - | ||
| 123 | - ### Running Tests | ||
| 124 | - The project uses pytest for Python testing with extensive integration test suites for different data sources and stores. | ||
| 125 | - | ||
| 126 | - ### Code Style | ||
| 127 | - - Uses `ruff` for Python linting and formatting | ||
| 128 | - - Go uses standard `gofmt` | ||
| 129 | - | ||
| 130 | - ### Protobuf Development | ||
| 131 | - Protocol buffers are used for data serialization and gRPC APIs. Recompile protos after making changes to `.proto` files. | ||
| 132 | - | ||
| 133 | - ### Multi-language Support | ||
| 134 | - Feast supports Python and Go SDKs. Changes to core functionality may require updates across both languages. | ||
| 135 | - | ||
| 136 | - ## Contributing | ||
| 137 | - | ||
| 138 | - 1. Follow the [contribution guide](docs/project/contributing.md) | ||
| 139 | - 2. Set up your development environment | ||
| 140 | - 3. Run relevant tests before submitting PRs | ||
| 141 | - 4. Ensure code passes linting and type checking | ||
| 1 | + @AGENTS.md | ||
0 commit comments