./devel/py-attrs, Attributes without boilerplate

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


Branch: CURRENT, Version: 23.2.0, Package name: py311-attrs-23.2.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: 762.52 KB

Version history: (Expand)


CVS history: (Expand)


   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
   2023-04-30 15:14:49 by Thomas Klausner | Files touched by this commit (3) | Package updated
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.
   2022-08-24 11:25:57 by Thomas Klausner | Files touched by this commit (17)
Log message:
*: use coverage from versioned_dependencies.mk
   2022-02-26 14:39:07 by Thomas Klausner | Files touched by this commit (1)
Log message:
py-attrs: fix PLIST for python 2.x