- update to 23.2.0:
* 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.
be deeply immutable
- Initial version
OBS-URL: https://build.opensuse.org/request/show/1137517
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-attrs?expand=0&rev=23
* 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.
be deeply immutable
- Initial version
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=48
- Update to 23.1.0:
# 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 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. #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 e.g.
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
OBS-URL: https://build.opensuse.org/request/show/1085487
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-attrs?expand=0&rev=21
# 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 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. #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 e.g.
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
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=44
- update to 22.2.0:
* Python 3.5 is not supported anymore.
* Python 3.6 is now deprecated and support will be removed in the next
release.
* `attrs.field()` now supports an *alias* option for explicit `__init__`
argument names.
* `attrs.NOTHING` is now an enum value, making it possible to use with
e.g. `typing.Literal`.
* 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.
OBS-URL: https://build.opensuse.org/request/show/1046288
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-attrs?expand=0&rev=19
* Python 3.5 is not supported anymore.
* Python 3.6 is now deprecated and support will be removed in the next
release.
* `attrs.field()` now supports an *alias* option for explicit `__init__`
argument names.
* `attrs.NOTHING` is now an enum value, making it possible to use with
e.g. `typing.Literal`.
* 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.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=40
- Update to 22.1.0:
* 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. #936
* 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. #939
* Changes
* Instantiation of frozen slotted classes is now faster. #898
* If an eq key is defined, it is also used before hashing the attribute. #909
* Added attrs.validators.min_len(). #916
* attrs.validators.deep_iterable()'s member_validator argument now also
accepts a list of validators and wraps them in an attrs.validators.and_(). #925
* Added missing type stub re-imports for attrs.converters and attrs.filters. #931
* Added missing stub for attr(s).cmp_using(). #949
* attrs.validators._in()'s ValueError is not missing the attribute, expected
options, and the value it got anymore. #951
* Python 3.11 is now officially supported. #969
OBS-URL: https://build.opensuse.org/request/show/992744
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=36
- update to 21.4.0:
* 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``.
* When using ``@define``, converters are now run by default when
setting an attribute on an instance -- additionally to validators.
* ``import attrs`` has finally landed!
* ``attr.asdict(retain_collection_types=False)`` (default)
dumps collection-esque keys as tuples.
* ``__match_args__`` are now generated to support Python 3.10's
* 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
* 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.
OBS-URL: https://build.opensuse.org/request/show/945429
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-attrs?expand=0&rev=16
* 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``.
* When using ``@define``, converters are now run by default when
setting an attribute on an instance -- additionally to validators.
* ``import attrs`` has finally landed!
* ``attr.asdict(retain_collection_types=False)`` (default)
dumps collection-esque keys as tuples.
* ``__match_args__`` are now generated to support Python 3.10's
* 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
* 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.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=35
* 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.
* The long-awaited, much-talked-about, little-delivered ``import attrs`` is
finally upon us!
* 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.
* Further smaller changes, see included Changelog.md
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=33
- Python 3.4 is not supported anymore.
- ``attr.define()``, ``attr.frozen()``, ``attr.mutable()``, and ``attr.field()`` remain **provisional**.
This release fixes a bunch of bugs and ergonomics but they remain mostly unchanged.
Further changes see included CHANGELOG.rst
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=29
- update to 19.3.0
* Fixed auto_attribs usage when default values cannot be compared directly
with ==, such as numpy arrays.
- update to version 19.2.0:
* Backward-incompatible Changes
+ Removed deprecated "Attribute" attribute "convert" per scheduled
removal on 2019/1. This planned deprecation is tracked in issue
`#307 <https://github.com/python-attrs/attrs/issues/307>`_.
`#504 <https://github.com/python-attrs/attrs/issues/504>`_
+ "__lt__", "__le__", "__gt__", and "__ge__" do not consider
subclasses comparable anymore. This has been deprecated since
18.2.0 and was raising a "DeprecationWarning" for over a year.
`#570 <https://github.com/python-attrs/attrs/issues/570>`_
* Deprecations
+ The "cmp" argument to "attr.s()" and "attr.ib()" is now
deprecated. Please use "eq" to add equality methods ("__eq__"
and "__ne__") and "order" to add ordering methods ("__lt__",
"__le__", "__gt__", and "__ge__") instead – just like with
`dataclasses
<https://docs.python.org/3/library/dataclasses.html>`_. Both
are effectively "True" by default but it's enough to set
"eq=False" to disable both at once. Passing "eq=False,
order=True" explicitly will raise a "ValueError" though. Since
this is arguably a deeper backward-compatibility break, it will
have an extended deprecation period until 2021-06-01. After
that day, the "cmp" argument will be removed. "attr.Attribute"
also isn't orderable anymore. `#574
<https://github.com/python-attrs/attrs/issues/574>`_
* Changes
OBS-URL: https://build.opensuse.org/request/show/741439
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-attrs?expand=0&rev=11
- update to 19.1.0
* Fixed a bug where deserialized objects with cache_hash=True could have
incorrect hash code values
* Add is_callable, deep_iterable, and deep_mapping validators.
* Fixed stub files to prevent errors raised by mypy's
disallow_any_generics = True option.
* Attributes with init=False now can follow after kw_only=True attributes.
* attrs now has first class support for defining exception classes.
* Clarified documentation for hashing to warn that hashable objects should
be deeply immutable
OBS-URL: https://build.opensuse.org/request/show/681547
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-attrs?expand=0&rev=9
* Fixed a bug where deserialized objects with cache_hash=True could have
incorrect hash code values
* Add is_callable, deep_iterable, and deep_mapping validators.
* Fixed stub files to prevent errors raised by mypy's
disallow_any_generics = True option.
* Attributes with init=False now can follow after kw_only=True attributes.
* attrs now has first class support for defining exception classes.
* Clarified documentation for hashing to warn that hashable objects should
be deeply immutable
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=20
- update to 17.2.0:
- Validators are hashable again.
- ``attrs`` will set the ``__hash__()`` method to ``None`` by default now.
The way hashes were handled before was in conflict with `Python's
specification
This *may* break some software although this breakage is most likely just
surfacing of latent bugs.
You can always make ``attrs`` create the ``__hash__()`` method using
``@attr.s(hash=True)``. See `#136`_ for the rationale of this change.
- Correspondingly, ``attr.ib``'s ``hash`` argument is ``None`` by default too
and mirrors the ``cmp`` argument as it should.
- ``attr.assoc()`` is now deprecated in favor of ``attr.evolve()`` and will
stop working in 2018.
- Fix default hashing behavior.
Now *hash* mirrors the value of *cmp* and classes are unhashable by default.
- Added ``attr.evolve()`` that, given an instance of an ``attrs`` class and
field changes as keyword arguments, will instantiate a copy of the given
instance with the changes applied.
- ``FrozenInstanceError`` is now raised when trying to delete an attribute
from a frozen class.
- Frozen-ness of classes is now inherited.
- ``__attrs_post_init__()`` is now run if validation is disabled.
- Added ``attr.validators.in_(options)`` that, given the allowed `options`,
checks whether the attribute value is in it.
This can be used to check constants, enums, mappings, etc.
- Added ``attr.validators.and_()`` that composes multiple validators into one.
- For convenience, the ``validator`` argument of ``@attr.s`` now can take a
``list`` of validators that are wrapped using ``and_()``.
- Accordingly, ``attr.validators.optional()`` now can take a ``list`` of
validators too.
OBS-URL: https://build.opensuse.org/request/show/507963
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=6
- update to 16.0.0
Backward-incompatible changes:
* Python 3.3 and 2.6 aren’t supported anymore. They may work by chance but
any effort to keep them working has ceased.
The last Python 2.6 release was on October 29, 2013 and isn’t supported by
the CPython core team anymore. Major Python packages like Django and Twisted
dropped Python 2.6 a while ago already.
Python 3.3 never had a significant user base and wasn’t part of any
distribution’s LTS release.
Changes:
* __slots__ have arrived! Classes now can automatically be slots-style (and
save your precious memory) just by passing slots=True. #35
* Allow the case of initializing attributes that are set to init=False. This
allows for clean initializer parameter lists while being able to initialize
attributes to default values. #32
* attr.asdict can now produce arbitrary mappings instead of Python dicts when
provided with a dict_factory argument. #40 Multiple performance improvements.
OBS-URL: https://build.opensuse.org/request/show/406822
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=3