CHANGELOG.rst
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 :obj:`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.3.0 (2014-07-19)
------------------
* Corrected string repr.
0.2.0 (2014-06-28)
------------------
* Lots of breaking changes. Switched from __call__ to __getitem__ for default value assignment.
0.1.0 (2014-06-27)
------------------
* Alpha release.