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.
|
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
|
2022-02-23 12:43:41 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-attrs: updated to 21.4.0
21.4.0 (2021-12-29)
-------------------
Changes
^^^^^^^
- Fixed the test suite on PyPy3.8 where ``cloudpickle`` does not work.
- Fixed ``coverage report`` for projects that use ``attrs`` and don't set a \
``--source``.
----
21.3.0 (2021-12-28)
-------------------
Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- When using ``@define``, converters are now run by default when setting an \
attribute on an instance -- additionally to validators.
I.e. the new default is ``on_setattr=[attrs.setters.convert, \
attrs.setters.validate]``.
This is unfortunately a breaking change, but it was an oversight, impossible \
to raise a ``DeprecationWarning`` about, and it's better to fix it now while the \
APIs are very fresh with few users.
- ``import attrs`` has finally landed!
As of this release, you can finally import ``attrs`` using its proper name.
Not all names from the ``attr`` namespace have been transferred; most notably \
``attr.s`` and ``attr.ib`` are missing.
See ``attrs.define`` and ``attrs.field`` if you haven't seen our \
next-generation APIs yet.
A more elaborate explanation can be found `On The Core API Names \
<https://www.attrs.org/en/latest/names.html>`_
This feature is at least for one release **provisional**.
We don't *plan* on changing anything, but such a big change is unlikely to go \
perfectly on the first strike.
The API docs have been mostly updated, but it will be an ongoing effort to \
change everything to the new APIs.
Please note that we have **not** moved -- or even removed -- anything from \
``attr``!
Please do report any bugs or documentation inconsistencies!
Changes
^^^^^^^
- ``attr.asdict(retain_collection_types=False)`` (default) dumps \
collection-esque keys as tuples.
- ``__match_args__`` are now generated to support Python 3.10's
`Structural Pattern Matching \
<https://docs.python.org/3.10/whatsnew/3.10.html#pep-634-structural-pattern-matching>`_.
This can be controlled by the ``match_args`` argument to the class decorators \
on Python 3.10 and later.
On older versions, it is never added and the argument is ignored.
- If the class-level *on_setattr* is set to ``attrs.setters.validate`` (default \
in ``@define`` and ``@mutable``) but no field defines a validator, pretend that \
it's not set.
- The generated ``__repr__`` is significantly faster on Pythons with f-strings.
- Attributes transformed via ``field_transformer`` are wrapped with \
``AttrsClass`` again.
- Generated source code is now cached more efficiently for identical classes.
- Added ``attrs.converters.to_bool()``.
- ``attrs.resolve_types()`` now resolves types of subclasses after the parents \
are resolved.
- Added new validators: ``lt(val)`` (< val), ``le(va)`` (≤ val), \
``ge(val)`` (≥ val), ``gt(val)`` (> val), and ``maxlen(n)``.
- ``attrs`` classes are now fully compatible with `cloudpickle \
<https://github.com/cloudpipe/cloudpickle>`_ (no need to disable ``repr`` \
anymore).
- Added new context manager ``attrs.validators.disabled()`` and functions \
``attrs.validators.(set|get)_disabled()``.
They deprecate ``attrs.(set|get)_run_validators()``.
All functions are interoperable and modify the same internal state.
They are not – and never were – thread-safe, though.
- ``attrs.validators.matches_re()`` now accepts pre-compiled regular expressions \
in addition to pattern strings.
21.2.0 (2021-05-07)
-------------------
Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- We had to revert the recursive feature for ``attr.evolve()`` because it broke \
some use-cases -- sorry!
- Python 3.4 is now blocked using packaging metadata because ``attrs`` can't be \
imported on it anymore.
To ensure that 3.4 users can keep installing ``attrs`` easily, we will `yank \
<https://pypi.org/help/#yanked>`_ 21.1.0 from PyPI.
This has **no** consequences if you pin ``attrs`` to 21.1.0.
21.1.0 (2021-05-06)
-------------------
Deprecations
^^^^^^^^^^^^
- The long-awaited, much-talked-about, little-delivered ``import attrs`` is \
finally upon us!
Since the NG APIs have now been proclaimed stable, the **next** release of \
``attrs`` will allow you to actually ``import attrs``.
We're taking this opportunity to replace some defaults in our APIs that made \
sense in 2015, but don't in 2021.
So please, if you have any pet peeves about defaults in ``attrs``'s APIs, \
*now* is the time to air your grievances in 487!
We're not gonna get such a chance for a second time, without breaking our \
backward-compatibility guarantees, or long deprecation cycles.
Therefore, speak now or forever hold you peace!
- The *cmp* argument to ``attr.s()`` and `attr.ib()` has been **undeprecated**
It will continue to be supported as syntactic sugar to set *eq* and *order* in \
one go.
I'm terribly sorry for the hassle around this argument!
The reason we're bringing it back is it's usefulness regarding customization \
of equality/ordering.
The ``cmp`` attribute and argument on ``attr.Attribute`` remains deprecated \
and will be removed later this year.
Changes
^^^^^^^
- It's now possible to customize the behavior of ``eq`` and ``order`` by passing \
in a callable.
- The instant favorite next-generation APIs are not provisional anymore!
They are also officially supported by Mypy as of their `0.800 release \
<https://mypy-lang.blogspot.com/2021/01/mypy-0800-released.html>`_.
We hope the next release will already contain an (additional) importable \
package called ``attrs``.
- If an attribute defines a converter, the type of its parameter is used as type \
annotation for its corresponding ``__init__`` parameter.
If an ``attr.converters.pipe`` is used, the first one's is used.
- Fixed the creation of an extra slot for an ``attr.ib`` when the parent class \
already has a slot with the same name.
- ``__attrs__init__()`` will now be injected if ``init=False``, or if \
``auto_detect=True`` and a user-defined ``__init__()`` exists.
This enables users to do "pre-init" work in their ``__init__()`` \
(such as ``super().__init__()``).
``__init__()`` can then delegate constructor argument processing to \
``self.__attrs_init__(*args, **kwargs)``.
- ``bool(attr.NOTHING)`` is now ``False``.
- It's now possible to use ``super()`` inside of properties of slotted classes.
- Allow for a ``__attrs_pre_init__()`` method that -- if defined -- will get \
called at the beginning of the ``attrs``-generated ``__init__()`` method.
- Added forgotten ``attr.Attribute.evolve()`` to type stubs.
- ``attrs.evolve()`` now works recursively with nested ``attrs`` classes.
- Python 3.10 is now officially supported.
- ``attr.resolve_types()`` now takes an optional *attrib* argument to work \
inside a ``field_transformer``.
- ``ClassVar``\ s are now also detected if they come from `typing-extensions \
<https://pypi.org/project/typing-extensions/>`_.
- To make it easier to customize attribute comparison, we have added the \
``attr.cmp_with()`` helper.
See the `new docs on comparison \
<https://www.attrs.org/en/stable/comparison.html>`_ for more details.
- Added **provisional** support for static typing in ``pyright`` via the \
`dataclass_transforms specification \
<https://github.com/microsoft/pyright/blob/main/specs/dataclass_transforms.md>`_.
Both the ``pyright`` specification and ``attrs`` implementation may change in \
future versions of both projects.
|
2022-01-04 21:55:40 by Thomas Klausner | Files touched by this commit (1595) |
Log message:
*: bump PKGREVISION for egg.mk users
They now have a tool dependency on py-setuptools instead of a DEPENDS
|