-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Add support for pydantic v2 via pydantic.v1 compat module #16332
Conversation
poetry.lock
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was generated with poetry update pydantic
so other dependencies weren't touched here.
See also #16331. |
1dd3295
to
296bbf0
Compare
@clokep, do you mind approving the CI run? |
It looks like one of the CI jobs is failing too: https://github.com/matrix-org/synapse/actions/runs/6230975624/job/16994483499#step:10:32 |
Those tests are running with |
This adds support for pydantic v2 by using the `pydantic.v1` compat module when pydantic v2 is installed and otherwise falling back to the `pydantic` module. In order to satisfy mypy, we only import `pydantic.v1` during type checking. This allows proper type checking without needing to clutter the code with `type: ignores`. Once some time is passed, we can entirely drop compatibility for pydantic v1 and start using the actual pydantic v2 code to reap the additional performance benefits and other improvements of pydantic v2. Signed-off-by: Maxwell G <maxwell@gtmx.me>
Old pydantic v1 versions do not define `__version__`. Signed-off-by: Maxwell G <maxwell@gtmx.me>
296bbf0
to
a3f4f59
Compare
I pushed to address the merge conflicts and feedback. @clokep, can you please approve CI again 🙂? |
I bumped the minimum packaging version. |
Signed-off-by: Maxwell G <maxwell@gtmx.me>
a3f4f59
to
2dcd89f
Compare
Apparently, towncrier doesn't like this. Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be fine, just double checking that packaging >= 20 won't cause issues.
Alpine packager: ACK |
Gentoo: ACK, tested with pydantic 1.10.12 and 2.3.0. |
Just need CI to churn and this is good to go. 👍 |
Thanks @clokep! |
The <dev-python/pydantic-2 restriction was removed as this version supports new releases as well [1]. [1] matrix-org/synapse#16332 Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
The <dev-python/pydantic-2 restriction was removed as this version supports new releases as well [1]. [1] matrix-org/synapse#16332 Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
The <dev-python/pydantic-2 restriction was removed as this version supports new releases as well [1]. [1] matrix-org/synapse#16332 Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
The <dev-python/pydantic-2 restriction was removed as this version supports new releases as well [1]. [1] matrix-org/synapse#16332 Signed-off-by: Petr Vaněk <arkamar@atlas.cz> Closes: #33279 Signed-off-by: Sam James <sam@gentoo.org>
No significant changes since 1.94.0rc1. - Render plain, CSS, CSV, JSON and common image formats in the browser (inline) when requested through the /download endpoint. ([\matrix-org#15988](matrix-org#15988)) - Add experimental support for [MSC4028](matrix-org/matrix-spec-proposals#4028) to push all encrypted events to clients. ([\matrix-org#16361](matrix-org#16361)) - Minor performance improvement when sending presence to federated servers. ([\matrix-org#16385](matrix-org#16385)) - Minor performance improvement by caching server ACL checking. ([\matrix-org#16360](matrix-org#16360)) - Add developer documentation concerning gradual schema migrations with column alterations. ([\matrix-org#15691](matrix-org#15691)) - Improve documentation of the user directory search algorithm. ([\matrix-org#16320](matrix-org#16320)) - Fix rendering of user admin API documentation around deactivation. This was broken in Synapse 1.91.0. ([\matrix-org#16355](matrix-org#16355)) - Update documentation around message retention policies. ([\matrix-org#16382](matrix-org#16382)) - Add note to `federation_domain_whitelist` config option to clarify its usage. ([\matrix-org#16416](matrix-org#16416)) - Improve legacy release notes. ([\matrix-org#16418](matrix-org#16418)) - Remove Python version from `/_synapse/admin/v1/server_version`. ([\matrix-org#16380](matrix-org#16380)) - Avoid running CI steps when the files they check have not been changed. ([\matrix-org#14745](matrix-org#14745), [\matrix-org#16387](matrix-org#16387)) - Improve type hints. ([\matrix-org#14911](matrix-org#14911), [\matrix-org#16350](matrix-org#16350), [\matrix-org#16356](matrix-org#16356), [\matrix-org#16395](matrix-org#16395)) - Added support for pydantic v2 in addition to pydantic v1. Contributed by Maxwell G (@gotmax23). ([\matrix-org#16332](matrix-org#16332)) - Get CI to check PRs have been signed-off. ([\matrix-org#16348](matrix-org#16348)) - Add missing licence header. ([\matrix-org#16359](matrix-org#16359)) - Improve type hints, and bump types-psycopg2 from 2.9.21.11 to 2.9.21.14. ([\matrix-org#16381](matrix-org#16381)) - Improve comments in `StateGroupBackgroundUpdateStore`. ([\matrix-org#16383](matrix-org#16383)) - Update maturin configuration. ([\matrix-org#16394](matrix-org#16394)) - Downgrade replication stream time out error log lines to warning. ([\matrix-org#16401](matrix-org#16401)) * Bump actions/checkout from 3 to 4. ([\matrix-org#16250](matrix-org#16250)) * Bump cryptography from 41.0.3 to 41.0.4. ([\matrix-org#16362](matrix-org#16362)) * Bump dawidd6/action-download-artifact from 2.27.0 to 2.28.0. ([\matrix-org#16374](matrix-org#16374)) * Bump docker/setup-buildx-action from 2 to 3. ([\matrix-org#16375](matrix-org#16375)) * Bump gitpython from 3.1.35 to 3.1.37. ([\matrix-org#16376](matrix-org#16376)) * Bump msgpack from 1.0.5 to 1.0.6. ([\matrix-org#16377](matrix-org#16377)) * Bump msgpack from 1.0.6 to 1.0.7. ([\matrix-org#16412](matrix-org#16412)) * Bump phonenumbers from 8.13.19 to 8.13.22. ([\matrix-org#16413](matrix-org#16413)) * Bump psycopg2 from 2.9.7 to 2.9.8. ([\matrix-org#16409](matrix-org#16409)) * Bump pydantic from 2.3.0 to 2.4.2. ([\matrix-org#16410](matrix-org#16410)) * Bump regex from 1.9.5 to 1.9.6. ([\matrix-org#16408](matrix-org#16408)) * Bump sentry-sdk from 1.30.0 to 1.31.0. ([\matrix-org#16378](matrix-org#16378)) * Bump types-netaddr from 0.8.0.9 to 0.9.0.1. ([\matrix-org#16411](matrix-org#16411)) * Bump types-psycopg2 from 2.9.21.11 to 2.9.21.14. ([\matrix-org#16381](matrix-org#16381)) * Bump urllib3 from 1.26.15 to 1.26.17. ([\matrix-org#16422](matrix-org#16422)) # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE8SRSDO7gYkSP4chELS76LzL74EcFAmUlINwACgkQLS76LzL7 # 4EdvExAAgjk6+/Fu45MRG7u5kFmFzoZWLOPD10XROANaSeqW1l/pBhFh+XvwR4TZ # l/FdkSfS9YpHnw3aof13TclLu6IVWDM+vqYFuY2HSY/yzbcGvJFHqr26kOccpTTd # 2r9m/AkguyHEBECDW8qJLXb8M7dqNa2SydTBu1+IrKfj6nq+fRxVyQhyAJXrI1Ta # Dnz0XJ4TcwTrMPVk4MYrAcYjID6IV89dtp7ttH4DwXKDeSjMtxM/46EIg4u+VXDz # fzK25JHVFYJA5+/rOn/RslmxjJHQfEIEB6NYxQwLeMeZuGSZooTebKn1odwogvhI # Srtfsytum+twgSHD1s+7KldM+EjTiu7ouKi8VcfOlFuLnuBiROEc5WUljcL5K63F # kVx2bXGU/eNkPp6ntNhYfgswx+yk2rXFqkTjz+xZQIZcOBqehHBDy8VhtwlRkTUw # bzocdKkLMA4nfSlq5fFOAErMqJKsPS8aN9yYPShqEUiSUOKle8eHfA1cTXJuK0MS # K2/YcDDZmJBrwVADyNDk5GKaDx39rR752OSuJb57Sp/edwUg6+H1I6lIN6YTeoJw # FzJwGMzuMCktOQRW2enxQiA6RZjXFCwvD1LoWMjyO4YTXQwXxNCXsb0kLKUqfwsy # qMGphWEl3rdzVSuFapNAgOLF0RfFNYZdhQnk+3fNEwxumxoqgho= # =hx8G # -----END PGP SIGNATURE----- # gpg: Signature made Tue Oct 10 11:01:00 2023 BST # gpg: using RSA key F124520CEEE062448FE1C8442D2EFA2F32FBE047 # gpg: Can't check signature: No public key # Conflicts: # .github/workflows/docker.yml # .github/workflows/docs-pr-netlify.yaml # .github/workflows/docs-pr.yaml # .github/workflows/docs.yaml # .github/workflows/latest_deps.yml # .github/workflows/poetry_lockfile.yaml # .github/workflows/push_complement_image.yml # .github/workflows/release-artifacts.yml # .github/workflows/tests.yml # .github/workflows/twisted_trunk.yml # poetry.lock # rust/src/push/base_rules.rs
Add support for pydantic v2 via pydantic.v1 compat module
This adds support for pydantic v2 by using the
pydantic.v1
compat modulewhen pydantic v2 is installed and otherwise falling back to the
pydantic
module.In order to satisfy mypy, we only import
pydantic.v1
during typechecking. This allows proper type checking without needing to clutter
the code with
type: ignores
.Once some time is passed, we can entirely drop compatibility for pydantic v1 and
start using the actual pydantic v2 code to reap the additional
performance benefits and other improvements of pydantic v2.
Relates: #15858
(I didn't use
Fixes:
, as we should track enabling full support for pydantic v2)Pull Request Checklist
EventStore
toEventWorkerStore
.".code blocks
.(run the linters)