Skip to content

Conversation

@WhiteLotusLA
Copy link
Contributor

Summary

This PR fixes a Pydantic v2.12+ deprecation warning in OidcClientAuthConfig._validate_credentials.

The warning:

DeprecationWarning: Using `@model_validator` with mode='after' on a classmethod is deprecated

Changes

In Pydantic v2.12, using @model_validator(mode="after") with a classmethod-style signature (cls, values) was deprecated in favor of an instance method signature (self).

Before:

@model_validator(mode="after")
def _validate_credentials(cls, values):
    d = values.__dict__ if hasattr(values, "__dict__") else values
    has_user_pass = bool(d.get("username")) and bool(d.get("password"))
    # ...
    return values

After:

@model_validator(mode="after")
def _validate_credentials(self):
    has_user_pass = bool(self.username) and bool(self.password)
    # ...
    return self

Benefits

  • Eliminates deprecation warning spam in user logs
  • Uses direct attribute access instead of dict gymnastics
  • Cleaner, more idiomatic Pydantic v2 code
  • No functional changes - same validation logic

Testing

This is a non-breaking change that maintains identical validation behavior. The only difference is the method signature and attribute access pattern.

References

@WhiteLotusLA WhiteLotusLA requested a review from a team as a code owner January 9, 2026 04:52
@franciscojavierarceo
Copy link
Member

Can you fix DCO?

Pydantic v2.12 deprecated using @model_validator(mode='after') with a
classmethod-style signature (cls, values). This change updates the
_validate_credentials method to use the correct instance method signature
(self), which:

- Eliminates the deprecation warning
- Uses direct attribute access (self.username) instead of dict access
- Returns self instead of values

This is a non-breaking change that maintains the same validation logic
while conforming to Pydantic v2.12+ best practices.

Fixes deprecation warning:
'Using @model_validator with mode="after" on a classmethod is deprecated'

Signed-off-by: WhiteLotusLA <[email protected]>
@WhiteLotusLA WhiteLotusLA force-pushed the fix/pydantic-model-validator-deprecation branch from 4609a0d to a42fe11 Compare January 9, 2026 15:16
@ntkathole ntkathole changed the title fix: update model_validator to use instance method signature (Pydantic v2.12 deprecation) fix: Update model_validator to use instance method signature (Pydantic v2.12 deprecation) Jan 11, 2026
Copy link
Member

@ntkathole ntkathole left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you

@ntkathole ntkathole merged commit 3c10b6e into feast-dev:master Jan 13, 2026
17 checks passed
franciscojavierarceo pushed a commit that referenced this pull request Jan 16, 2026
# [0.59.0](v0.58.0...v0.59.0) (2026-01-16)

### Bug Fixes

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

### Features

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

3 participants