------------------
.. warning:: This version deprecates many magic or unexplicit features that will be
removed in v2.0.0.
Please read the :ref:`changelog-1-3-0-upgrading` section, then run your
tests with ``python -W default`` to see all remaining warnings.
New
"""
- **Global:**
- Rewrite the whole documentation
- Provide a dedicated :class:`~factory.mogo.MogoFactory` subclass of :class:`~factory.Factory`
- **The Factory class:**
- Better creation/building customization hooks at :meth:`factory.Factory._build` and :meth:`factory.Factory.create`
- Add support for passing non-kwarg parameters to a :class:`~factory.Factory`
wrapped class through ``FACTORY_ARG_PARAMETERS``.
- Keep the ``FACTORY_FOR`` attribute in :class:`~factory.Factory` classes
- **Declarations:**
- Allow :class:`~factory.SubFactory` to solve circular dependencies between factories
- Enhance :class:`~factory.SelfAttribute` to handle "container" attribute fetching
- Add a :attr:`~factory.Iterator.getter` to :class:`~factory.Iterator`
declarations
- A :class:`~factory.Iterator` may be prevented from cycling by setting
its :attr:`~factory.Iterator.cycle` argument to ``False``
- Allow overriding default arguments in a :class:`~factory.PostGenerationMethodCall`
when generating an instance of the factory
- An object created by a :class:`~factory.django.DjangoModelFactory` will be saved
again after :class:`~factory.PostGeneration` hooks execution
Pending deprecation
"""""""""""""""""""
The following features have been deprecated and will be removed in an upcoming release.
- **Declarations:**
- ``factory.InfiniteIterator`` is deprecated in favor of :class:`~factory.Iterator`
- ``factory.CircularSubFactory`` is deprecated in favor of :class:`~factory.SubFactory`
- The ``extract_prefix`` argument to :meth:`~factory.post_generation` is now deprecated
- **Factory:**
- Usage of ``factory.Factory.set_creation_function`` and ``factory.Factory.set_building_function``
are now deprecated
- Implicit associated class discovery is no longer supported, you must set the ``FACTORY_FOR``
attribute on all :class:`~factory.Factory` subclasses
.. _changelog-1-3-0-upgrading:
Upgrading
"""""""""
This version deprecates a few magic or undocumented features.
All warnings will turn into errors starting from v2.0.0.
In order to upgrade client code, apply the following rules:
- Add a ``FACTORY_FOR`` attribute pointing to the target class to each
:class:`~factory.Factory`, instead of relying on automatic associated class
discovery
- When using factory_boy for Django models, have each factory inherit from
:class:`~factory.django.DjangoModelFactory`
- Replace ``factory.CircularSubFactory('some.module', 'Symbol')`` with
``factory.SubFactory('some.module.Symbol')``
- Replace ``factory.InfiniteIterator(iterable)`` with ``factory.Iterator(iterable)``
- Replace ``factory.post_generation()`` with ``factory.post_generation``
- Replace ``factory.set_building_function(SomeFactory, building_function)`` with
an override of the :meth:`~factory.Factory._build` method of ``SomeFactory``
- Replace ``factory.set_creation_function(SomeFactory, creation_function)`` with
an override of the :meth:`~factory.Factory._create` method of ``SomeFactory``