Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration to Pydantic V2 #115

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open

Migration to Pydantic V2 #115

wants to merge 25 commits into from

Conversation

nesitor
Copy link
Member

@nesitor nesitor commented Oct 31, 2024

No description provided.

Antonyjin and others added 20 commits February 25, 2025 16:25
Pydantic used to be in 1.10.5 now moving to up to v2 accepting from v2.x to the latest
Replaced `__get_pydantic_core_schema__` with a more efficient schema
handling using `core_schema.str_schema()` and custom validation for ItemHash.
- Updated code to explicitly specify optional keys where necessary.
- Replaced direct `.get` calls with `data.get()` to handle new validation logic.
- Migrated model configuration to use `model_config = ConfigDict(extra="forbid")`
or `model_config = ConfigDict(extra="allow")` in place of Pydantic v1's configuration style.
…eprecated methods.

- Replaced `.dict()` with `.model_dump()` for model serialization.
- Replaced deprecated `.json()` with `.model_dump_json()` for JSON serialization.

These changes ensure compatibility with Pydantic v2 by using the updated serialization methods.
…_content` function for stricter comparison.

- Replaced `.dict()` with `.model_dump()` for model serialization.
- Replaced deprecated `.json()` with `.model_dump_json()` for JSON serialization.
- Updated the `check_content` function to properly normalize and compare JSON structures,
as Pydantic v2 enforces stricter validation and comparison rules.

These changes ensure compatibility with Pydantic v2 by adopting
the new serialization methods and handling stricter content comparison logic.
- Refactored the normalize_content function to respect MyPy.
- Reformatted code according to Black.
- Fixed linting issues raised by Ruff.
Some fields were missing and needed to be specified
du to the v2 of pydantic.
Black test failed
Wrong indentation on one line, add comment for custom_dump
Refactoring normalize_content function from Hugo and added docstring
for better comprehension
Debuging using logger and not print
Function to convert size always return the instance needed.
Updating the version of Pydantic, and adding pydantic-core
Upgrading yamlfix because it is not compatible with pydantic2
Adding a type none to the concerned functions
- Removing @model_serializer on ItemType
- Updated __get_pydantic_core_schema__ signature for Pydantic v2
- Added __get_pydantic_json_schema__ for JSON Schema generation
- Annotated validate and __repr__ methods for better type safety
Using Annoted instead of ConstrainedId because is no longer available in
Pydantic2
- Can't use get() to access InstanceContent data, instead we directly access the
element by using .data for exemple
- root_validator is deprecated, use of model_validator instead
@Antonyjin Antonyjin force-pushed the 108-upgrade-pydantic-version branch from 31a3370 to 934a66f Compare February 25, 2025 09:50
- Pydantic v2 changed how validation errors are structured
- `loc` can now be either `("content",)` or `("content", "__root__")`
- Updated test to handle both cases and prevent failures
- Now checks only the error message to avoid issues with prefix changes
Returning 'authorized_keys' inside InstantConstant class in the sdk, but there is no field
'authorized_keys' in the class

Adding this field
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants