Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dependency attrs to v24 #317

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

red-hat-konflux[bot]
Copy link
Contributor

@red-hat-konflux red-hat-konflux bot commented Nov 23, 2024

This PR contains the following updates:

Package Type Update Change
attrs (changelog) install major >=21.4.0,<23 -> >=24.3,<25

Release Notes

python-attrs/attrs (attrs)

v24.3.0

Compare Source

Backwards-incompatible Changes
Changes
  • Introduce attrs.NothingType, for annotating types consistent with attrs.NOTHING.
    #​1358
  • Allow mutating __suppress_context__ and __notes__ on frozen exceptions.
    #​1365
  • attrs.converters.optional() works again when taking attrs.converters.pipe() or another Converter as its argument.
    #​1372
  • attrs instances now support copy.replace().
    #​1383
  • attrs.validators.instance_of()'s type hints now allow for union types.
    For example: instance_of(str | int)
    #​1385

v24.2.0

Compare Source

Deprecations
  • Given the amount of warnings raised in the broader ecosystem, we've decided to only soft-deprecate the hash argument to @define / @attr.s.
    Please don't use it in new code, but we don't intend to remove it anymore.
    #​1330
Changes
  • attrs.converters.pipe() (and its syntactic sugar of passing a list for attrs.field()'s / attr.ib()'s converter argument) works again when passing attrs.setters.convert to on_setattr (which is default for attrs.define).
    #​1328
  • Restored support for PEP 649 / 749-implementing Pythons -- currently 3.14-dev.
    #​1329

v24.1.0

Compare Source

Backwards-incompatible Changes
  • attrs.evolve() doesn't accept the inst argument as a keyword argument anymore.
    Pass it as the first positional argument instead.
    #​1264

  • attrs.validators.provides() has been removed.
    The removed code is available as a gist for convenient copy and pasting.
    #​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 or importlib-metadata instead.
    #​1268

  • The generated __eq__ methods have been sped up 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

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
  • 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
Changes
  • Allow original slotted functools.cached_property classes to be cleaned by garbage collection.
    Allow super() calls in slotted cached properties.
    #​1221

  • Our type stubs now use modern type notation and are organized such that VS Code's quick-fix prefers the attrs namespace.
    #​1234

  • Preserve AttributeError raised by properties of slotted classes with functools.cached_properties.
    #​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

  • attrs.make_class() now populates the __annotations__ dict of the generated class, so that attrs.resolve_types() can resolve them.
    #​1285

  • Added the attrs.validators.or_() validator.
    #​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

  • 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

  • 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

v23.2.0

Compare Source

Changes
  • The type annotation for attrs.resolve_types() is now correct.
    #​1141
  • Type stubs now use typing.dataclass_transform to decorate dataclass-like decorators, instead of the non-standard __dataclass_transform__ special form, which is only supported by Pyright.
    #​1158
  • Fixed serialization of namedtuple fields using attrs.asdict/astuple() with retain_collection_types=True.
    #​1165
  • attrs.AttrsInstance is now a typing.Protocol in both type hints and code.
    This allows you to subclass it along with another Protocol.
    #​1172
  • If attrs detects that __attrs_pre_init__ accepts more than just self, it will call it with the same arguments as __init__ was called.
    This allows you to, for example, pass arguments to super().__init__().
    #​1187
  • Slotted classes now transform functools.cached_property decorated methods to support equivalent semantics.
    #​1200
  • Added class_body argument to attrs.make_class() to provide additional attributes for newly created classes.
    It is, for example, now possible to attach methods.
    #​1203

v23.1.0

Compare Source

Backwards-incompatible Changes
  • Python 3.6 has been dropped and packaging switched to static package data using Hatch.
    #​993
Deprecations
  • The support for zope-interface via the attrs.validators.provides validator is now deprecated and will be removed in, or after, April 2024.

    The presence of a C-based package in our development dependencies has caused headaches and we're not under the impression it's used a lot.

    Let us know if you're using it and we might publish it as a separate package.
    #​1120

Changes
  • attrs.filters.exclude() and attrs.filters.include() now support the passing of attribute names as strings.
    #​1068

  • attrs.has() and attrs.fields() now handle generic classes correctly.
    #​1079

  • Fix frozen exception classes when raised within, for example, contextlib.contextmanager, which mutates their __traceback__ attributes.
    #​1081

  • @frozen now works with type checkers that implement PEP-681 (ex. pyright).
    #​1084

  • Restored ability to unpickle instances pickled before 22.2.0.
    #​1085

  • attrs.asdict()'s and attrs.astuple()'s type stubs now accept the attrs.AttrsInstance protocol.
    #​1090

  • Fix slots class cellvar updating closure in CPython 3.8+ even when __code__ introspection is unavailable.
    #​1092

  • attrs.resolve_types() can now pass include_extras to typing.get_type_hints() on Python 3.9+, and does so by default.
    #​1099

  • Added instructions for pull request workflow to CONTRIBUTING.md.
    #​1105

  • Added type parameter to attrs.field() function for use with attrs.make_class().

    Please note that type checkers ignore type metadata passed into make_class(), but it can be useful if you're wrapping attrs.
    #​1107

  • It is now possible for attrs.evolve() (and attr.evolve()) to change fields named inst if the instance is passed as a positional argument.

    Passing the instance using the inst keyword argument is now deprecated and will be removed in, or after, April 2024.
    #​1117

  • attrs.validators.optional() now also accepts a tuple of validators (in addition to lists of validators).
    #​1122


Configuration

📅 Schedule: Branch creation - "after 5am on saturday" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

To execute skipped test pipelines write comment /ok-to-test.

This PR has been generated by MintMaker (powered by Renovate Bot).

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
@red-hat-konflux red-hat-konflux bot force-pushed the konflux/mintmaker/master/attrs-24.x branch from 1d272b8 to 75a2bc9 Compare December 21, 2024 08:28
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.

0 participants