Path to this page:
./
devel/py-attrs,
Attributes without boilerplate
Branch: CURRENT,
Version: 24.2.0,
Package name: py311-attrs-24.2.0,
Maintainer: pkgsrc-usersattrs 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: 774.1 KB
Version history: (Expand)
- (2024-08-07) Updated to version: py311-attrs-24.2.0
- (2024-08-04) Updated to version: py311-attrs-24.1.0
- (2023-12-31) Updated to version: py311-attrs-23.2.0
- (2023-10-28) Updated to version: py311-attrs-23.1.0nb1
- (2023-04-30) Updated to version: py310-attrs-23.1.0
- (2022-08-24) Updated to version: py310-attrs-21.4.0
CVS history: (Expand)
2024-08-07 22:12:10 by Adam Ciarcinski | Files touched by this commit (2) | |
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) | |
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) | |
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) | |
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
|
2023-04-30 15:14:49 by Thomas Klausner | Files touched by this commit (3) | |
Log message:
py-attrs: update to 23.1.0.
## - 2023-04-16
### Backwards-incompatible Changes
- Python 3.6 has been dropped and packaging switched to static package data using .
### 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 developement 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.
### Changes
- `attrs.filters.exclude()` and `attrs.filters.include()` now support the \
passing of attribute names as strings.
- `attrs.has()` and `attrs.fields()` now handle generic classes correctly.
- Fix frozen exception classes when raised within e.g. \
`contextlib.contextmanager`, which mutates their `__traceback__` attributes.
- `@frozen` now works with type checkers that implement .
- Restored ability to unpickle instances pickled before 22.2.0.
- `attrs.asdict()`'s and `attrs.astuple()`'s type stubs now accept the \
`attrs.AttrsInstance` protocol.
- Fix slots class cellvar updating closure in CPython 3.8+ even when `__code__` \
introspection is unavailable.
- `attrs.resolve_types()` can now pass `include_extras` to \
`typing.get_type_hints()` on Python 3.9+, and does so by default.
- Added instructions for pull request workflow to `CONTRIBUTING.md`.
- 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_.
- 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.
- `attrs.validators.optional()` now also accepts a tuple of validators (in \
addition to lists of validators).
## - 2022-12-21
### Backwards-incompatible Changes
- Python 3.5 is not supported anymore.
### Deprecations
- Python 3.6 is now deprecated and support will be removed in the next release.
### Changes
- `attrs.field()` now supports an *alias* option for explicit `__init__` \
argument names.
Get `__init__` signatures matching any taste, peculiar or plain!
The *alias* option can be use to override private attribute name mangling, or \
add other arbitrary field argument name overrides.
- `attrs.NOTHING` is now an enum value, making it possible to use with e.g. .
- Added missing re-import of `attr.AttrsInstance` to the `attrs` namespace.
- Fix slight performance regression in classes with custom `__setattr__` and \
speedup even more.
- Class-creation performance improvements by switching performance-sensitive \
templating operations to f-strings.
You can expect an improvement of about 5% -- even for very simple classes.
- `attrs.has()` is now a for `AttrsInstance`.
That means that type checkers know a class is an instance of an `attrs` class \
if you check it using `attrs.has()` (or `attr.has()`) first.
- Made `attrs.AttrsInstance` stub available at runtime and fixed type errors \
related to the usage of `attrs.AttrsInstance` in *Pyright*.
- On Python 3.10 and later, call on dict classes after creation.
This improves the detection of abstractness.
- *attrs*'s pickling methods now use dicts instead of tuples.
That is safer and more robust across different versions of a class.
- Added `attrs.validators.not_(wrapped_validator)` to logically invert \
*wrapped_validator* by accepting only values where *wrapped_validator* rejects \
the value with a `ValueError` or `TypeError` (by default, exception types \
configurable).
- The type stubs for `attrs.cmp_using()` now have default values.
- To conform with ` now accept *unsafe_hash* in addition to *hash*.
## - 2022-07-28
### Backwards-incompatible Changes
- Python 2.7 is not supported anymore.
Dealing with Python 2.7 tooling has become too difficult for a volunteer-run \
project.
We have supported Python 2 more than 2 years after it was officially \
discontinued and feel that we have paid our dues.
All version up to 21.4.0 from December 2021 remain fully functional, of course.
- The deprecated `cmp` attribute of `attrs.Attribute` has been removed.
This does not affect the *cmp* argument to `attr.s` that can be used as a \
shortcut to set *eq* and *order* at the same time.
### Changes
- Instantiation of frozen slotted classes is now faster.
- If an `eq` key is defined, it is also used before hashing the attribute.
- Added `attrs.validators.min_len()`.
- `attrs.validators.deep_iterable()`'s *member_validator* argument now also \
accepts a list of validators and wraps them in an `attrs.validators.and_()`.
- Added missing type stub re-imports for `attrs.converters` and `attrs.filters`.
- Added missing stub for `attr(s).cmp_using()`.
- `attrs.validators._in()`'s `ValueError` is not missing the attribute, expected \
options, and the value it got anymore.
- Python 3.11 is now officially supported.
|
2023-04-30 14:12:52 by Thomas Klausner | Files touched by this commit (1) |
Log message:
py-attrs: add test status, comment out test dependency
py-ZopeInterface will shortly stop supporting python 2.x, and it's an
optional here.
|