Factory-boy

Latest version: v3.3.3

Safety actively analyzes 722296 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 9

2.0.0

------------------

*New:*

- Allow overriding the base factory class for :func:`~factory.make_factory` and friends.
- Add support for Python3 (Thanks to `kmike <https://github.com/kmike>`_ and `nkryptic <https://github.com/nkryptic>`_)
- The default type for :class:`~factory.Sequence` is now :obj:`int`
- Fields listed in ``factory.Factory.FACTORY_HIDDEN_ARGS`` won't be passed to
the associated class' constructor
- Add support for ``get_or_create`` in :class:`~factory.django.DjangoModelFactory`,
through ``factory.django.DjangoModelFactory.FACTORY_DJANGO_GET_OR_CREATE``.
- Add support for :mod:`~factory.fuzzy` attribute definitions.
- The :class:`Sequence` counter can be overridden when calling a generating function
- Add :class:`~factory.Dict` and :class:`~factory.List` declarations (Closes :issue:`18`).

*Removed:*

- Remove associated class discovery
- Remove ``factory.InfiniteIterator`` and ``factory.infinite_iterator``
- Remove ``factory.CircularSubFactory``
- Remove ``extract_prefix`` kwarg to post-generation hooks.
- Stop defaulting to Django's ``Foo.objects.create()`` when "creating" instances
- Remove STRATEGY_*
- Remove ``factory.Factory.set_building_function`` / ``factory.Factory.set_creation_function``

1.3.0

------------------

.. 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``

1.2.0

------------------

*New:*

- Add ``factory.CircularSubFactory`` to solve circular dependencies between factories

1.1.5

------------------

*Bug fix:*

- Fix ``factory.PostGenerationDeclaration`` and derived classes.

1.1.4

------------------

*New:*

- Add :meth:`~factory.use_strategy` decorator to override a
:class:`~factory.Factory`'s default strategy
- Improve test running (tox, python2.6/2.7)
- Introduce :class:`~factory.PostGeneration` and
:class:`~factory.RelatedFactory`

1.1.3

------------------

*Bug fix:*

- Fix packaging rules

Page 7 of 9

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.