A python 3 library providing functions and decorators to automatically generate class code, such as constructor body or properties getters/setters along with optional support of validation contracts on the generated setters. Its objective is to reduce the amount of copy/paste code in your classes - and hence to help reducing human mistakes :).
@autoclass
now provides an autofields
argument to apply pyfields.autofields
automatically before applying autoclass. Fixes #38
@autoclass
now removes private fields from the generated autodict representation by default. Fixes #37
See documentation page for details.
See documentation page for details.
setup.py
improvements: now including py.typed
, excluding tests
folder, and using zip_safe=False
See documentation page for details.
Fixed bug happening when pyfields
is not installed. Fixed #33.
See documentation page for details.
Added pyproject.toml
.
See documentation page for details.
Features
@autoeq
, supported in @autoclass
and automatically activated when autodict=False
. Fixed #32.Bugfixes
Fixed @autorepr
when only_known_fields
is False
: now property names are correctly used instead of the private names.
Fixed @autodict
's generated __eq__
method: when the other object is a dictionary a direct comparison is now done before trying super.
See documentation page for details.
Features
default string representation in @autodict
is now more readable. Legacy representation is still available through a parameter. Fixed #29.
pyfields
can now be used as the source for the list of attributes, in @autohash
, @autodict
, and @autoclass
. Fixes #28
new @autorepr
decorator. Previously this feature was only available through @autodict
, it can now be used without it. autorepr
is supported in @autoclass
, and if users set autodict=False
by default it will be enabled. Fixed Fixed #30 and #31.
Misc / bugfixes
Major refactoring: more readable and maintainable code.
Fixed @autodict
behaviour when the list was vars(self)
and used together with @autoprops
: with some options the private names were appearing and with others the public property names were appearing. Now the public property names always appear if they exist.
See documentation page for details.
New @autoslots
feature, that can also be used from @autoclass
by setting (autoslots=True)
. Fixes #9
See documentation page for details.
Added __version__
attribute at package level.
See documentation page for details.
ValidationError
happening in all use cases. Fixed #25.See documentation page for details.