Skip to content

Commit

Permalink
Prepare 24.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
hynek committed Aug 3, 2024
1 parent 95238e7 commit 556ca7c
Show file tree
Hide file tree
Showing 16 changed files with 55 additions and 35 deletions.
61 changes: 55 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,64 @@ You can find our backwards-compatibility policy [here](https:/python

Changes for the upcoming release can be found in the [`changelog.d` directory](https:/python-attrs/attrs/tree/main/changelog.d) in our repository.

<!--
Do *NOT* add changelog entries here!
<!-- towncrier release notes start -->

This changelog is managed by towncrier and is compiled at release time.
## [24.1.0](https:/python-attrs/attrs/tree/24.1.0) - 2024-08-03

See https:/python-attrs/attrs/blob/main/.github/CONTRIBUTING.md#changelog for details.
-->
### Backwards-incompatible Changes

<!-- towncrier release notes start -->
- `attrs.evolve()` doesn't accept the *inst* argument as a keyword argument anymore.
Pass it as the first positional argument instead.
[#1264](https:/python-attrs/attrs/issues/1264)
- `attrs.validators.provides()` has been removed.
The removed code is available as a [gist](https://gist.github.com/hynek/9eaaaeb659808f3519870dfa16d2b6b2) for convenient copy and pasting.
[#1265](https:/python-attrs/attrs/issues/1265)
- All packaging metadata except from `__version__` and `__version_info__` has been removed from the `attr` and `attrs` modules (for example, `attrs.__url__`).

Please use [`importlib.metadata`](https://docs.python.org/3/library/importlib.metadata.html) or [*importlib_metadata*](https://pypi.org/project/importlib-metadata/) instead.
[#1268](https:/python-attrs/attrs/issues/1268)
- Speed up the generated `__eq__` methods significantly by generating a chain of attribute comparisons instead of constructing and comparing tuples.
This change arguably makes the behavior more correct,
but changes it if an attribute compares equal by identity but not value, like `float('nan')`.
[#1310](https:/python-attrs/attrs/issues/1310)


### Deprecations

- The *repr_ns* argument to `attr.s` is now deprecated.
It was a workaround for nested classes in Python 2 and is pointless in Python 3.
[#1263](https:/python-attrs/attrs/issues/1263)
- The *hash* argument to `@attr.s`, `@attrs.define`, and `make_class()` is now deprecated in favor of *unsafe_hash*, as defined by PEP 681.
[#1323](https:/python-attrs/attrs/issues/1323)


### Changes

- Allow original slotted `functools.cached_property` classes to be cleaned by garbage collection.
Allow `super()` calls in slotted cached properties.
[#1221](https:/python-attrs/attrs/issues/1221)
- Our type stubs now use modern type notation and are organized such that VS Code's quick-fix prefers the `attrs` namespace.
[#1234](https:/python-attrs/attrs/issues/1234)
- Preserve `AttributeError` raised by properties of slotted classes with `functools.cached_properties`.
[#1253](https:/python-attrs/attrs/issues/1253)
- It is now possible to wrap a converter into an `attrs.Converter` and get the current instance and/or the current field definition passed into the converter callable.

Note that this is not supported by any type checker, yet.
[#1267](https:/python-attrs/attrs/issues/1267)
- `attrs.make_class()` now populates the `__annotations__` dict of the generated class, so that `attrs.resolve_types()` can resolve them.
[#1285](https:/python-attrs/attrs/issues/1285)
- Added the `attrs.validators.or_()` validator.
[#1303](https:/python-attrs/attrs/issues/1303)
- The combination of a `__attrs_pre_init__` that takes arguments, a kw-only field, and a default on that field does not crash anymore.
[#1319](https:/python-attrs/attrs/issues/1319)
- `attrs.validators.in_()` now transforms certain unhashable options to tuples to keep the field hashable.

This allows fields that use this validator to be used with, for example, `attrs.filters.include()`.
[#1320](https:/python-attrs/attrs/issues/1320)
- If a class has an *inherited* method called `__attrs_init_subclass__`, it is now called once the class is done assembling.

This is a replacement for Python's `__init_subclass__` and useful for registering classes, and similar.
[#1321](https:/python-attrs/attrs/issues/1321)


## [23.2.0](https:/python-attrs/attrs/tree/23.2.0) - 2023-12-31
Expand Down
2 changes: 0 additions & 2 deletions changelog.d/1221.change.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/1234.change.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/1253.change.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/1263.deprecation.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/1264.breaking.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/1265.breaking.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog.d/1267.change.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog.d/1268.breaking.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/1285.change.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/1303.change.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog.d/1310.breaking.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/1319.change.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog.d/1320.change.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog.d/1321.change.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/1323.deprecation.md

This file was deleted.

0 comments on commit 556ca7c

Please sign in to comment.