[pull] main from temporalio:main - #189
Merged
Merged
Conversation
* fix(contrib/pydantic): reuse TypeAdapters across payloads PydanticJSONPlainPayloadConverter.from_payload constructed a fresh pydantic TypeAdapter for every payload, rebuilding the core schema each time for non-class hints such as discriminated unions and generic collections. Cache adapters per converter instance, keyed on hashable type hints; unhashable hints keep constructing fresh adapters. The cache is unbounded by default and configurable via the new keyword-only max_cached_type_adapters option on PydanticJSONPlainPayloadConverter and PydanticPayloadConverter (positive bounds with LRU eviction, zero disables caching, negative raises ValueError). Fixes #1695 * fix(contrib/pydantic): default type adapter cache bound to 1024 Bound the per-converter type adapter cache to 1024 entries by default with LRU eviction, capping worst-case memory even with runtime-generated hints while never evicting for typical static hint sets. None remains available for an unbounded cache and zero still disables caching. * test(contrib/pydantic): cover re-imported class cache isolation The workflow sandbox re-imports user modules, producing distinct class objects with identical names. Verify each gets its own cache slot and validates to its own world's class, even when one converter is shared. * fix(contrib/pydantic): avoid double hash on cached decode path Address review: try the cache directly instead of pre-hashing every hint. On TypeError, hash the hint once only to distinguish an unhashable hint (bypass the cache with a fresh adapter) from a TypeError raised during adapter construction (re-raise), keeping adapter errors unsuppressed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )