F40 Change Proposal: Update to Pydantic Version 2 (Self-Contained)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Wiki Link: https://fedoraproject.org/wiki/Changes/Update_To_Pydantic_Version_2

Discussion.fpo Link:
https://discussion.fedoraproject.org/t/f40-change-proposal-update-to-pydantic-version-2-self-contained/92894

This document represents a proposed Change. As part of the Changes
process, proposals are publicly announced in order to receive
community feedback. This proposal will only be implemented if approved
by the Fedora Engineering Steering Committee.

== Summary ==

{{package|python-pydantic}}, a Python data validation library, will be
updated from 1.10.z to 2.y.z.
The Change owners will perform a test rebuild and work with package maintainers
and upstreams to port code.

== Owner ==

* Name: Maxwell G; Benjamin Beasley; Python SIG
* Email: maxwell@xxxxxxx; code@xxxxxxxxxxxxxxxxxx;
python-devel@xxxxxxxxxxxxxxxxxxxxxxx



== Detailed Description ==

Pydantic is a Python data validation library.
Recently, upstream released major version 2 with many fixes and performance
improvements but also multiple breaking API changes.
The new release relies on {{package|python-pydantic-core}}, which provides the
core validation and serialization functionality used by pydantic v2.
pydantic-core is a Rust PyO3 Python extension module.

We will update pydantic to version 2 after making sure dependent packages are
accounted for.

=== Porting strategies ===

Pydantic v2 contains some breaking API changes that may require porting if
packages depend on old functionality.
Upstream provides a detailed
[https://docs.pydantic.dev/latest/migration/ Migration Guide] that describes
the breaking API changes.

Projects that are not ready to port to pydantic v2 may use the
<code>pydantic.v1</code>
compatibility module which contains a full copy of the old pydantic v1 code.
https://github.com/matrix-org/synapse/pull/16332 exemplifies this approach.
As shown in the above PR, projects can use conditional imports to import
<code>pydantic.v1</code> if pydantic v2 is in use and otherwise fall
back to importing
<code>pydantic</code> if pydantic v1 is in use.

Maintaining compatibility for both pydantic v1 and v2 in the same codebase
without the compatibility module is possible but may not be practical for
larger, more complex usecases.
fedrq [https://git.sr.ht/~gotmax23/fedrq/commit/35d64cd2a8bd0ea8210d8b086e14e3d66611dc06
uses this approach]
and silences <code>pydantic.PydanticDeprecatedSince20</code> warnings.
Many of these deprecation warnings cannot be resolved without dropping support
for pydantic v1.

== Feedback ==

I did not receive much feedback as of yet, but I expect this change to
be uncontroversial.

== Benefit to Fedora ==

Fedora will have the latest version of pydantic in its repositories.
The new version touts a significant performance boost, amongst other
improvements.

== Scope ==

* Proposal owners:
** Preform an [https://hackmd.io/@python-maint/rJSm5WC9Y impact check]
** Make an inventory of failures or packages that have a hard
dependency on pydantic v1.
** Submit distgit PRs and/or file upstream issues to fix
incompatibilities in dependent packages
** Submit new python-pydantic-settings and python-pydantic-extra-types
packages for review
** Wait two weeks for packagers to review PRs. Those that remain
compatible with pydantic v1 can be merged immediately.
** Build pydantic v2 package and any outstanding PRs in a side tag.

* Other developers:
** Test your package to ensure it still builds and functions with pydantic v2
** Help with package reviews
** Review distgit PRs to fix incompatibilities

== Upgrade/compatibility impact ==

Pydantic version 2 has some breaking API changes.
See upstream's [https://docs.pydantic.dev/latest/migration/ Migration Guide].

== How To Test ==

You can perform test builds like this:

<pre>
$ copr mock-config gotmax23/pydanticv2-testing fedora-rawhide-x86_64 >
~/.config/pydanticv2.cfg
$ fedpkg --release=rawhide mockbuild --root pydanticv2
</pre>

== User Experience ==

This isn't a particularly user visible change. Users of Python applications
that utilize Pydantic should notice a performance improvement.

== Dependencies ==
See https://gtmx.me/Wiki/Fedora/pydantic-v2-update/#lists for a list of
dependent packages.
The Change owners will work with these packages' maintainers to ensure the
packages remain functional with the new pydantic version.

== Contingency Plan ==

* Contingency mechanism: N/A (not a System Wide Change)
* Contingency deadline: N/A (not a System Wide Change)
* Blocks release? N/A (not a System Wide Change)

== Documentation ==

See https://gtmx.me/Wiki/Fedora/pydantic-v2-update/ for the current status and
notes.

== Release Notes ==

python3-pydantic was updated from 1.10.z to 2.y.z. Pydantic v2 brings
performance improvements and an API refactoring, amongst other changes.
See upstream's [https://docs.pydantic.dev/latest/migration/ Migration Guide]
for a full inventory of breaking changes.


-- 
Aoife Moloney

Product Owner

Community Platform Engineering Team

Red Hat EMEA

Communications House

Cork Road

Waterford
_______________________________________________
devel-announce mailing list -- devel-announce@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-announce-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel-announce@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux