Changelog
5.0.0 (2016-04-13)
- Added the
fields.InheritableFields base. It allows subclassing and it’s intended for multiple inheritance scenarios. Yes,
yes, this enables lots pain and suffering, but some people just like it that way.
- Simplified the interfaces for the builtin sealers (the required argument is gone as it was redundant, and the remaining
arguments are swapped). Now they must be a function that take just two arguments:
fields, defaults.
4.0.0 (2016-01-28)
- Added
__all__ and factory conveniences. Removed fields.Factory from the public API since it need some special
care with it’s use (it’s a damn metaclass after all).
- Added
make_init_func into public API for advanced uses (combine with factory and class_sealer).
3.0.0 (2015-10-04)
- Disallowed creating containers with fields with “dunder” names. E.g.:
class Foo(Fields.__foo__): is disallowed.
2.4.0 (2015-06-13)
- Similarly to
fields.Fields, added three new bases:
fields.BareFields (implements __init__).
fields.ComparableMixin (implements __eq__, __ne__, __lt__, __gt__, __le__, __ge__ and __hash__).
fields.PrintableMixin (implements __repr__).
- Improved reference section in the docs.
- Added
fields.ConvertibleFields and fields.ConvertibleMixin. They have two convenience properties: as_dict and as_tuple`.
2.3.0 (2015-01-20)
- Allowed overriding
__slots__ in SlotsFields subclasses.
2.2.0 (2015-01-19)
- Added
make_init_func as an optional argument to class_sealer. Rename the __base__ option to just base.
2.1.1 (2015-01-19)
- Removed bogus
console_scripts entrypoint.
2.1.0 (2015-01-09)
- Added
SlotsFields (same as Fields but automatically adds __slots__ for memory efficiency on CPython).
- Added support for default argument to Tuple.
2.0.0 (2014-10-16)
- Made the __init__ in the FieldsBase way faster (used for
fields.Fields).
- Moved
RegexValidate in fields.extras.
1.0.0 (2014-10-05)
- Lots of internal changes, the metaclass is not created in a closure anymore. No more closures.
- Added
RegexValidate container creator (should be taken as an example on using the Factory metaclass).
- Added support for using multiple containers as baseclasses.
- Added a
super() sink so that super().__init__(*args, **kwargs) always works. Everything inherits from a
baseclass that has an __init__ that can take any argument (unlike object.__init__). This allows for flexible
usage.
- Added validation so that you can’t use conflicting field layout when using multiple containers as the baseclass.
- Changed the __init__ function in the class container so it works like a python function w.r.t. positional and keyword
arguments. Example:
class MyContainer(Fields.a.b.c[1].d[2]) will function the same way as def func(a, b, c=1,
d=2) would when arguments are passed in. You can now use MyContainer(1, 2, 3, 4) (everything positional) or
MyContainer(1, 2, 3, d=4) (mixed).
0.2.0 (2014-06-28)
- Lots of breaking changes. Switched from __call__ to __getitem__ for default value assignment.