Port variant py39
Summary Classes Without Boilerplate (3.9)
Package version 21.4.0
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants py310
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 01 JAN 2022, 00:13:39 UTC
Port created 06 AUG 2019, 14:27:27 UTC
Subpackage Descriptions
single .. image:: :alt: attrs logo :align: center attrs is the Python package that will bring back the **joy** of **writing classes** by relieving you from the drudgery of implementing object protocols (aka [dunder methods]). [Trusted by NASA] for Mars missions since 2020! Its main goal is to help you to write **concise** and **correct** software without slowing down your code. .. teaser-end For that, it gives you a class decorator and a way to declaratively define the attributes on that class: .. -code-begin- .. code-block:: pycon >>> from attrs import asdict, define, make_class, Factory >>> @define ... class SomeClass: ... a_number: int = 42 ... list_of_numbers: list[int] = Factory(list) ... ... def hard_math(self, another_number): ... return self.a_number + sum(self.list_of_numbers) * another_number >>> sc = SomeClass(1, [1, 2, 3]) >>> sc SomeClass(a_number=1, list_of_numbers=[1, 2, 3]) >>> sc.hard_math(3) 19 >>> sc == SomeClass(1, [1, 2, 3]) True >>> sc != SomeClass(2, [3, 2, 1]) True >>> asdict(sc) {'a_number': 1, 'list_of_numbers': [1, 2, 3]} >>> SomeClass() SomeClass(a_number=42, list_of_numbers=[]) >>> C = make_class("C", ["a", "b"]) >>> C("foo", "bar") C(a='foo', b='bar') After *declaring* your attributes attrs gives you: - a concise and explicit overview of the class's attributes, - a nice human-readable __repr__, - a equality-checking methods, - an initializer, - and much more, *without* writing dull boilerplate code again and again and *without* runtime performance penalties. **Hate type annotations**!? No problem! Types are entirely **optional** with attrs. Simply assign ``attrs.field()`` to the attributes instead of annotating them with types. ---- This example uses attrs's modern APIs that have been introduced in version 20.1.0, and the attrs package import name that has been added in version 21.3.0. The classic APIs (``@attr.s``, ``attr.ib``, plus their serious business aliases) and the attr package import name will remain **indefinitely**. Please check out [On The Core API Names] for a more in-depth explanation. Data Classes ============ On the tin, attrs might remind you of dataclasses (and indeed, dataclasses are a descendant of attrs). In practice it does a lot more and is more flexible. For instance it allows you to define [special handling of NumPy arrays for equality checks], or allows more ways to [plug into the initialization process]. For more details, please refer to our [comparison page]. .. -getting-help- Getting Help ============ Please use the ``python-attrs`` tag on [Stack Overflow] to get help.
Configuration Switches (platform-specific settings discarded)
PY310 OFF Build using Python 3.10 PY39 ON Build using Python 3.9
Package Dependencies by Type
Build (only) python-pip:single:py39
Build and Runtime python39:single:standard
Download groups
main mirror://PYPIWHL/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef
Distribution File Information
2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4 60567 attrs-21.4.0-py2.py3-none-any.whl
Ports that require python-attrs:py39
python-Automat:py39 Self-service finite-state machines (3.9)
python-Twisted:py39 Asynchronous networking framework (3.9)
python-cattrs:py39 Composable complex class support for attrs (3.9)
python-jsonschema:py39 Alternate implementation of JSON Schema (3.9)
python-statmake:py39 Applies STAT Stylespace to a variable font (3.9)
python-ufoLib2:py39 UfoLib2 is a UFO font processing library (3.9)