Skip to content

Conversation

@kyledepasquale
Copy link

What this PR does / why we need it:

Update requirements to allow usage of snowflake-connector-python v4.x.x

Which issue(s) this PR fixes:

Allows for usage of the current versions of snowflake-connector-python

Misc

@kyledepasquale kyledepasquale requested a review from a team as a code owner January 16, 2026 00:44
@kyledepasquale kyledepasquale changed the title chore: bump requirements to allow snowflake-conector-python v4.x.x chore: Bump requirements to allow snowflake-conector-python v4.x.x Jan 16, 2026
@franciscojavierarceo
Copy link
Member

@kyledepasquale can you resolve the conflicts on this? i'm giong to cut a release and would love to get this in.

nanohanno and others added 8 commits January 21, 2026 09:22
Update lambda materialization engine

Signed-off-by: hkuepers <hanno.kuepers@ratepay.com>
Co-authored-by: hkuepers <hanno.kuepers@ratepay.com>
Co-authored-by: Francisco Javier Arceo <arceofrancisco@gmail.com>
Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
…-dev#5827)

* feat: Add dbt integration for importing models as FeatureViews (feast-dev#3335)

This PR implements the dbt-Feast integration feature requested in feast-dev#3335,
enabling users to import dbt models as Feast FeatureViews.

## New CLI Commands

- `feast dbt list` - List dbt models available for import
- `feast dbt import` - Import dbt models as Feast objects

## Features

- Parse dbt manifest.json files to extract model metadata
- Map dbt types to Feast types (38 types supported)
- Generate Entity, DataSource, and FeatureView objects
- Support for BigQuery, Snowflake, and File data sources
- Tag-based filtering (--tag) to select specific models
- Code generation (--output) to create Python files
- Dry-run mode to preview changes before applying

## Usage Examples

```bash
# List models with 'feast' tag
feast dbt list -m target/manifest.json --tag feast

# Import models to registry
feast dbt import -m target/manifest.json -e driver_id --tag feast

# Generate Python file instead
feast dbt import -m target/manifest.json -e driver_id --output features.py
```

Closes feast-dev#3335

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Address mypy and ruff lint errors in dbt integration

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Address ruff lint errors in dbt unit tests

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* style: Format dbt files with ruff

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Remove unused dbt-artifacts-parser import and fix enum import

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* feat: Use dbt-artifacts-parser for typed manifest parsing

- Add dbt-artifacts-parser as optional dependency (feast[dbt])
- Update parser to use typed parsing with fallback to raw dict
- Provides better support for manifest versions v1-v12

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Add graceful fallback for dbt-artifacts-parser validation errors

When parsing minimal/incomplete manifests (e.g., in unit tests),
dbt-artifacts-parser may fail validation. This change adds a graceful
fallback to use raw dict parsing when typed parsing fails.

Also updated test fixture with dbt_schema_version field.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Skip dbt tests when dbt-artifacts-parser is not installed

Since dbt-artifacts-parser is an optional dependency, unit tests
should be skipped in CI when it's not installed.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* refactor: Simplify parser to rely solely on dbt-artifacts-parser

Removed manual/fallback dict parsing code. The parser now exclusively
uses dbt-artifacts-parser typed objects. Updated test fixtures to
create complete manifests that dbt-artifacts-parser can parse.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* ci: Add dbt-artifacts-parser to unit test dependencies

Install dbt-artifacts-parser in CI so dbt unit tests run instead
of being skipped.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Address Copilot code review comments for dbt integration

- mapper.py: Fix Array element type check to use set membership instead
  of incorrect isinstance() comparison
- codegen.py: Add safe getattr() with fallback for Array.base_type access

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Only add ellipsis to truncated descriptions

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* style: Format dbt files with ruff

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Convert doctest examples to code blocks to avoid CI failures

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Add dbt-artifacts-parser to feast[ci] and update requirements

- Add dbt-artifacts-parser to pyproject.toml under feast[dbt] and feast[ci] extras
- Remove separate install step from unit_tests.yml workflow
- Update all requirements lock files

Addresses review feedback from @ntkathole.

Signed-off-by: YassinNouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* docs: Add dbt integration documentation

Add comprehensive documentation for the new dbt integration feature:
- Quick start guide with step-by-step instructions
- CLI reference for `feast dbt list` and `feast dbt import`
- Type mapping table for dbt to Feast types
- Data source configuration examples (BigQuery, Snowflake, File)
- Best practices for tagging, documentation, and CI/CD
- Troubleshooting section

Addresses review feedback from @franciscojavierarceo.

Signed-off-by: YassinNouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* docs: Add alpha warning to dbt integration documentation

Add prominent warning callout highlighting that the dbt integration is
an alpha feature with current limitations. This sets proper expectations
for users regarding:
- Supported data sources (BigQuery, Snowflake, File only)
- Single entity per model constraint
- Potential for breaking changes in future releases

Addresses feedback from PR feast-dev#5827 review comments.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Add dbt-artifacts-parser to CI_REQUIRED dependencies

Ensure dbt-artifacts-parser is installed in CI environments by adding
it to the CI_REQUIRED list in setup.py. This matches the dependency
already present in pyproject.toml and ensures CI tests for dbt
integration have access to the required parser library.

Addresses feedback from PR feast-dev#5827 review comments.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Add defensive Array.base_type handling with logging

Add logging and defensive attribute access for Array.base_type in code
generation to prevent potential AttributeError. While Array.__init__
always sets base_type, defensive programming with warnings provides:
- Protection against edge cases or future Array implementation changes
- Clear visibility when fallback occurs via logger.warning
- Consistent error handling across both usage sites

Changes:
- Add logging module and logger instance
- Update _get_feast_type_name() to use getattr with warning
- Update import tracking logic to use getattr with warning
- Add concise comments with examples (e.g., Array(String) -> base_type = String)

Addresses code review feedback from PR feast-dev#5827.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* docs: Add comment explaining ImageBytes/PdfBytes exclusion

Add clarifying comment in type_map explaining why ImageBytes and
PdfBytes are not included in the dbt type mapping. While these types
exist in Feast, dbt manifests only expose generic BYTES type without
semantic information to distinguish between regular bytes, images, or
PDFs.

Example: A dbt model with image and PDF columns both appear as
'BYTES' in the manifest, making ImageBytes/PdfBytes types unmappable
from dbt artifacts.

Addresses feedback from PR feast-dev#5827 review (franciscojavierarceo).

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Move imports to top of file to resolve linter errors

- Fix E402 linter error in feast/dbt/codegen.py by moving imports before logger initialization
- Update requirements files to include dbt-artifacts-parser in pydantic dependency comments

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

---------

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: YassinNouh21 <yassinnouh21@gmail.com>
Co-authored-by: Francisco Javier Arceo <arceofrancisco@gmail.com>
Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
* feat: Add progress bar to CLI from feast apply

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* format nicer

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* fix

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* fix

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* fix

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

---------

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
# [0.59.0](feast-dev/feast@v0.58.0...v0.59.0) (2026-01-16)

### Bug Fixes

* Add get_table_query_string_with_alias() for PostgreSQL subquery aliasing ([feast-dev#5811](feast-dev#5811)) ([11122ce](feast-dev@11122ce))
* Add hybrid online store to ONLINE_STORE_CLASS_FOR_TYPE mapping ([feast-dev#5810](feast-dev#5810)) ([678589b](feast-dev@678589b))
* Add possibility to overwrite send_receive_timeout for clickhouse offline store ([feast-dev#5792](feast-dev#5792)) ([59dbb33](feast-dev@59dbb33))
* Denial by default to all resources when no permissions set  ([feast-dev#5663](feast-dev#5663)) ([1524f1c](feast-dev@1524f1c))
* Make operator include full OIDC secret in repo config ([feast-dev#5676](feast-dev#5676)) ([feast-dev#5809](feast-dev#5809)) ([a536bc2](feast-dev@a536bc2))
* Populate Postgres `registry.path` during `feast init` ([feast-dev#5785](feast-dev#5785)) ([f293ae8](feast-dev@f293ae8))
* **redis:** Preserve millisecond timestamp precision for Redis online store ([feast-dev#5807](feast-dev#5807)) ([9e3f213](feast-dev@9e3f213))
* Search API to return all matching tags in matched_tags field ([feast-dev#5843](feast-dev#5843)) ([de37f66](feast-dev@de37f66))
* Spark Materialization Engine Cannot Infer Schema ([feast-dev#5806](feast-dev#5806)) ([58d0325](feast-dev@58d0325)), closes [feast-dev#5594](feast-dev#5594) [feast-dev#5594](feast-dev#5594)
* Support arro3 table schema with newer deltalake packages ([feast-dev#5799](feast-dev#5799)) ([103c5e9](feast-dev@103c5e9))
* Timestamp formatting and lakehouse-type connector for trino_offline_store. ([feast-dev#5846](feast-dev#5846)) ([c2ea7e9](feast-dev@c2ea7e9))
* Update model_validator to use instance method signature (Pydantic v2.12 deprecation) ([feast-dev#5825](feast-dev#5825)) ([3c10b6e](feast-dev@3c10b6e))

### Features

* Add dbt integration for importing models as FeatureViews ([feast-dev#5827](feast-dev#5827)) ([b997361](feast-dev@b997361)), closes [feast-dev#3335](feast-dev#3335) [feast-dev#3335](feast-dev#3335) [feast-dev#3335](feast-dev#3335)
* Add GCS registry store in Go feature server ([feast-dev#5818](feast-dev#5818)) ([1dc2be5](feast-dev@1dc2be5))
* Add progress bar to CLI from feast apply ([feast-dev#5867](feast-dev#5867)) ([ab3562b](feast-dev@ab3562b))
* Add RBAC blog post to website ([feast-dev#5861](feast-dev#5861)) ([b1844a3](feast-dev@b1844a3))
* Add skip_feature_view_validation parameter to FeatureStore.apply() and plan() ([feast-dev#5859](feast-dev#5859)) ([5482a0e](feast-dev@5482a0e))
* Added batching to feature server /push to offline store ([feast-dev#5683](feast-dev#5683)) ([feast-dev#5729](feast-dev#5729)) ([ce35ce6](feast-dev@ce35ce6))
* Enable static artifacts for feature server that can be used in Feature Transformations ([feast-dev#5787](feast-dev#5787)) ([edefc3f](feast-dev@edefc3f))
* Improve lambda materialization engine ([feast-dev#5829](feast-dev#5829)) ([f6116f9](feast-dev@f6116f9))
* Offline Store historical features retrieval based on datetime range in Ray ([feast-dev#5738](feast-dev#5738)) ([e484c12](feast-dev@e484c12))
* Read, Save docs and chat fixes ([feast-dev#5865](feast-dev#5865)) ([2081b55](feast-dev@2081b55))
* Resolve pyarrow >21 installation with ibis-framework ([feast-dev#5847](feast-dev#5847)) ([8b9bb50](feast-dev@8b9bb50))
* Support staging for spark materialization ([feast-dev#5671](feast-dev#5671)) ([feast-dev#5797](feast-dev#5797)) ([5b787af](feast-dev@5b787af))

Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
* refactor(odfv): Clean up OnDemandFeatureView implementation for better maintainability

This commit implements focused code cleanup for the OnDemandFeatureView class
to reduce complexity and improve maintainability while preserving all existing
functionality and APIs.

## Key Improvements:

### 1. Simplified from_proto() method (40% complexity reduction)
- Extracted helper methods for each transformation type deserialization
- Separated backward compatibility handling into dedicated methods
- Added clear separation of concerns with proper error handling

### 2. Cleaned up source type handling in constructor
- Replaced implicit 'else' clause with explicit isinstance() checks
- Added _add_source_to_collections() helper with comprehensive validation
- Improved error messages for unsupported source types

### 3. Simplified feature inference logic
- Eliminated 27+ hardcoded value type mappings with clean helper methods
- Replaced brittle string-based type checking with proper type validation
- Added _get_sample_values_by_type() for centralized type mapping

### 4. Consolidated transform method logic (50% duplication reduction)
- Extracted common preprocessing logic into shared helper methods
- Standardized error handling across transform_arrow(), transform_dict(), transform_ibis()
- Reduced code duplication while maintaining three separate transform methods

### 5. Enhanced ODFV validation in ensure_valid()
- Added comprehensive validation with dedicated helper methods
- Validates online store, singleton, sources, and transformation config
- Provides actionable error messages for configuration issues

### 6. Standardized error messages
- Created ODFVErrorMessages class with centralized error templates
- Consistent formatting and helpful guidance across all error cases
- Better debugging experience for developers

## Backward Compatibility:
- ✅ All public APIs remain unchanged
- ✅ All existing ODFVs continue working identically
- ✅ Zero breaking changes to functionality
- ✅ All unit tests passing

## Testing:
- Core ODFV tests: 6/6 passing
- Pandas transformation tests: 3/3 passing
- ODFV aggregation tests: 5/5 passing
- Inference tests: 12/12 passing

This cleanup prepares the codebase for future architectural changes while
maintaining complete backward compatibility.

Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

* fix(odfv): Fix mypy type annotations for source parsing

- Fix unknown_source_type_in_proto to accept str | None
- Add explicit type annotation for sources list in _parse_sources_from_proto

Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4 <noreply@anthropic.com>
Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
Signed-off-by: Kyle DePasquale <kyle@kiddom.co>
@franciscojavierarceo franciscojavierarceo enabled auto-merge (squash) January 24, 2026 05:44
@franciscojavierarceo
Copy link
Member

@copilot can you fix the conflicts?

@franciscojavierarceo
Copy link
Member

@kyledepasquale going to handle this for you here #5912

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.

5 participants