./devel/py-attrs, Attributes without boilerplate

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 25.1.0, Package name: py312-attrs-25.1.0, Maintainer: pkgsrc-users

attrs is an MIT-licensed Python package with class decorators that ease the
chores of implementing the most common attribute-related object protocols.

You just specify the attributes to work with and attrs gives you:

* a nice human-readable __repr__,
* a complete set of comparison methods,
* an initializer,
* and much more

without writing dull boilerplate code again and again.

This gives you the power to use actual classes with actual types in your code
instead of confusing tuples or confusingly behaving namedtuples.

So put down that type-less data structures and welcome some class into your
life!


Required to run:
[devel/py-setuptools] [lang/python37]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 791.564 KB

Version history: (Expand)


CVS history: (Expand)


   2025-01-27 10:41:49 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-attrs: updated to 25.1.0

25.1.0
This release only ensures correct PyPI licensing metadata.
   2024-12-24 17:06:13 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-attrs: updated to 24.3.0

24.3.0

Backwards-incompatible Changes

- Python 3.7 has been dropped.

Changes

- Introduce `attrs.NothingType`, for annotating types consistent with \ 
`attrs.NOTHING`.
- Allow mutating `__suppress_context__` and `__notes__` on frozen exceptions.
- `attrs.converters.optional()` works again when taking \ 
`attrs.converters.pipe()` or another Converter as its argument.
- *attrs* instances now support \ 
[`copy.replace()`](https://docs.python.org/3/library/copy.html#copy.replace).
- `attrs.validators.instance_of()`'s type hints now allow for union types.
  For example: `instance_of(str | int)`
   2024-08-07 22:12:10 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-attrs: updated to 24.2.0

24.2.0

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.

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`).
- Restored support for PEP [649](https://peps.python.org/pep-0649/) / \ 
[749](https://peps.python.org/pep-0749/)-implementing Pythons -- currently \ 
3.14-dev.
   2024-08-04 08:40:25 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-attrs: updated to 24.1.0

24.1.0

Backwards-incompatible Changes

- `attrs.evolve()` doesn't accept the *inst* argument as a keyword argument anymore.
  Pass it as the first positional argument instead.
- `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.
- 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.
- 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')`.

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.
- The *hash* argument to `@attr.s`, `@attrs.define`, and `make_class()` is now \ 
deprecated in favor of *unsafe_hash*, as defined by PEP 681.

Changes

- Allow original slotted `functools.cached_property` classes to be cleaned by \ 
garbage collection.
  Allow `super()` calls in slotted cached properties.
- Our type stubs now use modern type notation and are organized such that VS \ 
Code's quick-fix prefers the `attrs` namespace.
- Preserve `AttributeError` raised by properties of slotted classes with \ 
`functools.cached_properties`.
- 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.
- `attrs.make_class()` now populates the `__annotations__` dict of the generated \ 
class, so that `attrs.resolve_types()` can resolve them.
- Added the `attrs.validators.or_()` validator.
- The combination of a `__attrs_pre_init__` that takes arguments, a kw-only \ 
field, and a default on that field does not crash anymore.
- `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()`.
- 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.
   2023-12-31 09:01:32 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-attrs: updated to 23.2.0

23.2.0

Changes

- The type annotation for `attrs.resolve_types()` is now correct.
- 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.
- Fixed serialization of namedtuple fields using `attrs.asdict/astuple()` with \ 
`retain_collection_types=True`.
- `attrs.AttrsInstance` is now a `typing.Protocol` in both type hints and code.
  This allows you to subclass it along with another `Protocol`.
- 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__()`.
- Slotted classes now transform `functools.cached_property` decorated methods to \ 
support equivalent semantics.
- 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.
   2023-10-28 21:57:26 by Thomas Klausner | Files touched by this commit (516) | Package updated
Log message:
python/wheel.mk: simplify a lot, and switch to 'installer' for installation

This follows the recommended bootstrap method (flit_core, build, installer).

However, installer installs different files than pip, so update PLISTs
for all packages using wheel.mk and bump their PKGREVISIONs.
   2023-07-30 17:32:50 by Adam Ciarcinski | Files touched by this commit (19)
Log message:
Remove dependencies for Python 3.7
   2023-06-18 07:39:38 by Adam Ciarcinski | Files touched by this commit (20)
Log message:
py-ZopeInterface: moved to py-zope.interface