About the Pinttrs interface¶
TL;DR
As of Pinttrs v23.2.0, using the modern interface
pinttrs.field()
is recommended. The classic interfacepinttr.ib()
is still available.As of Pinttrs v23.2.0, using
import attrs
is recommended. The classicimport attr
is still supported.
Pinttrs initially mimicked the attrs import and interface policies so
that using it would feel natural to attrs users. Therefore, the code was
located in a pinttr
package, and the main interface was pinttr.ib()
.
Typically, a field definition would look like this:
>>> import attr, pinttr
>>> ureg = pinttr.get_unit_registry()
>>> @attr.s
... class MyClass:
... field = pinttr.ib(units=ureg.m)
>>> MyClass(1.0)
MyClass(field=1.0 m)
As mentioned in the documentation,
the attrs interface then evolved. Pinttrs followed the movement to provide
similar expressiveness. Consequently, we introduced pinttrs.field
and
the pinttrs
package:
>>> import attrs, pinttrs
>>> @attrs.define
... class MyClass:
... field = pinttrs.field(units=ureg.m)
>>> MyClass(1.0)
MyClass(field=1.0 m)
This interface is recommended, but the classic one is still available and supported.