Skip to content

Introduce hook factories for enums#705

Merged
Tinche merged 10 commits intomainfrom
tin/enum-factories
Dec 25, 2025
Merged

Introduce hook factories for enums#705
Tinche merged 10 commits intomainfrom
tin/enum-factories

Conversation

@Tinche
Copy link
Member

@Tinche Tinche commented Dec 15, 2025

No description provided.

@codspeed-hq
Copy link

codspeed-hq bot commented Dec 16, 2025

CodSpeed Performance Report

Merging #705 will improve performance by 10.54%

Comparing tin/enum-factories (bcd7a80) with main (6941413)

Summary

⚡ 3 improvements
✅ 51 untouched

Benchmarks breakdown

Benchmark BASE HEAD Efficiency
test_unstructure_simple_int_enum[MsgspecJsonConverter] 27.4 µs 24.8 µs +10.39%
test_unstructure_simple_enum[MsgspecJsonConverter] 27.2 µs 24.6 µs +10.53%
test_structure_simple_enum[BaseConverter] 30.1 µs 27.2 µs +10.54%

@Tinche Tinche force-pushed the tin/enum-factories branch from b8b125b to bcd7a80 Compare December 25, 2025 22:42
@Tinche Tinche merged commit 32d0be5 into main Dec 25, 2025
14 checks passed
@Tinche Tinche deleted the tin/enum-factories branch December 25, 2025 23:15
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Feb 22, 2026
## 26.1.0 (2026-02-18)

- Add the {mod}`tomllib <cattrs.preconf.tomllib>` preconf converter.
  See [here](https://catt.rs/en/latest/preconf.html#tomllib) for details.
  ([#716](python-attrs/cattrs#716))
- Customizing un/structuring of _attrs_ classes, dataclasses, TypedDicts and dict NamedTuples is now possible by using `Annotated[T, override()]` on fields.
  See [here](https://catt.rs/en/stable/customizing.html#using-typing-annotated-t-override) for more details.
  ([#717](python-attrs/cattrs#717))
- Fix structuring of nested generic classes with stringified annotations.
  ([#688](python-attrs/cattrs#688))
- Python 3.9 is no longer supported, as it is end-of-life. Use previous versions on this Python version.
  ([#698](python-attrs/cattrs#698))
- Apply the attrs converter to the default value before checking if it is equal to the attribute's value, when `omit_if_default` is true and an attrs converter is specified.
  ([#696](python-attrs/cattrs#696))
- Use the optional `_value_` type hint to structure and unstructure enums if present.
  ([#699](python-attrs/cattrs#699))
- Aliases (when in use) now properly generate rename metadata in generated hooks.
  ([#706](python-attrs/cattrs#706) [#710](python-attrs/cattrs#710))
- _cattrs_ now tracks performance using [codspeed](https://codspeed.io/python-attrs/cattrs).
  ([#703](python-attrs/cattrs#703))
- The {mod}`tomlkit <cattrs.preconf.tomlkit>` preconf converter now properly handles native `date` objects when structuring.
  ([#707](python-attrs/cattrs#707) [#708](python-attrs/cattrs#708))
- The {mod}`tomlkit <cattrs.preconf.tomlkit>` preconf converter now passes date objects directly to _tomlkit_ for unstructuring.
  ([#707](python-attrs/cattrs#707) [#708](python-attrs/cattrs#708))
- Enum handling has been optimized by switching to hook factories, improving performance especially for plain enums.
  ([#705](python-attrs/cattrs#705))
- Fix {func}`cattrs.strategies.include_subclasses` when used with {func}`cattrs.strategies.configure_tagged_union` and classes using diamond inheritance.
  ([#685](python-attrs/cattrs#685) [#713](python-attrs/cattrs#713))
- Fix {func}`cattrs.strategies.configure_tagged_union` when used with recursive type aliases.
  ([#678](python-attrs/cattrs#678) [#714](python-attrs/cattrs#714))
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.

1 participant