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 2 of 9

3.2.0

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

*New:*

- Add support for Django 3.1
- Add support for Python 3.9

*Removed:*

- Drop support for Django 1.11. This version `is not maintained anymore <https://www.djangoproject.com/download/#supported-versions>`__.
- Drop support for Python 3.5. This version `is not maintained anymore <https://devguide.python.org/developer-workflow/development-cycle/index.html#end-of-life-branches>`__.

*Deprecated:*

- :func:`factory.use_strategy`. Use :attr:`factory.FactoryOptions.strategy` instead.
The purpose of :func:`~factory.use_strategy` duplicates the factory option. Follow :pep:`20`: *There should be
one-- and preferably only one --obvious way to do it.*

:func:`~factory.use_strategy()` will be removed in the next major version.

*Bug fix:*

- :issue:`785` :issue:`786` :issue:`787` :issue:`788` :issue:`790` :issue:`796`: Calls to :class:`factory.Faker`
and :class:`factory.django.FileField` within a :class:`~factory.Trait` or :class:`~factory.Maybe` no longer lead to
a ``KeyError`` crash.

3.1.0

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

*New:*

- Allow all types of declarations in :class:`factory.Faker` calls - enables references to other faker-defined attributes.

3.0.1

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

*Bug fix:*

- :issue:`769`: Fix ``import factory; factory.django.DjangoModelFactory`` and similar calls.

3.0.0

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

Breaking changes
""""""""""""""""

The following aliases were removed:

+================================================+===================================================+
| Broken alias | New import |
+================================================+===================================================+
| ``from factory import DjangoModelFactory`` | ``from factory.django import DjangoModelFactory`` |
+------------------------------------------------+---------------------------------------------------+
| ``from factory import MogoFactory`` | ``from factory.mogo import MogoFactory`` |
+------------------------------------------------+---------------------------------------------------+
| ``from factory.fuzzy import get_random_state`` | ``from factory.random import get_random_state`` |
+------------------------------------------------+---------------------------------------------------+
| ``from factory.fuzzy import set_random_state`` | ``from factory.random import set_random_state`` |
+------------------------------------------------+---------------------------------------------------+
| ``from factory.fuzzy import reseed_random`` | ``from factory.random import reseed_random`` |
+================================================+===================================================+

*Removed:*

- Drop support for Python 2 and 3.4. These versions `are not maintained anymore <https://devguide.python.org/developer-workflow/development-cycle/index.html#end-of-life-branches>`__.
- Drop support for Django 2.0 and 2.1. These versions `are not maintained anymore <https://www.djangoproject.com/download/#supported-versions>`__.
- Remove deprecated ``force_flush`` from ``SQLAlchemyModelFactory`` options. Use
``sqlalchemy_session_persistence = "flush"`` instead.
- Drop deprecated ``attributes()`` from :class:`~factory.Factory` subclasses; use
``factory.make_factory(dict, FactoryClass._meta.pre_declarations)`` instead.
- Drop deprecated ``declarations()`` from :class:`~factory.Factory` subclasses; use ``FactoryClass._meta.pre_declarations`` instead.
- Drop ``factory.compat`` module.

*New:*

- Add support for Python 3.8
- Add support for Django 2.2 and 3.0
- Report misconfiguration when a :py:class:`~factory.Factory` is used as the :py:attr:`~factory.FactoryOptions.model` for another :py:class:`~factory.Factory`.
- Allow configuring the color palette of :py:class:`~factory.django.ImageField`.
- :py:meth:`~factory.random.get_random_state()` now represents the state of Faker and ``factory_boy`` fuzzy attributes.
- Add SQLAlchemy ``get_or_create`` support

*Improvements:*

- :issue:`561`: Display a developer-friendly error message when providing a model instead of a factory in a :class:`~factory.SubFactory` class.

*Bug fix:*

- Fix issue with SubFactory not preserving signal muting behavior of the used factory, thanks `Patrick Stein <https://github.com/PFStein>`_.
- Fix issue with overriding parameters in a Trait, thanks `Grégoire Rocher <https://github.com/cecedille1>`_.
- :issue:`598`: Limit ``get_or_create`` behavior to fields specified in ``django_get_or_create``.
- :issue:`606`: Re-raise :class:`~django.db.IntegrityError` when ``django_get_or_create`` with multiple fields fails to lookup model using user provided keyword arguments.
- :issue:`630`: TypeError masked by __repr__ AttributeError when initializing ``Maybe`` with inconsistent phases.

2.12.0

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

*New:*

- Add support for Python 3.7
- Add support for Django 2.1
- Add ``getter`` to :class:`~factory.fuzzy.FuzzyChoice` that mimics
the behavior of ``getter`` in :class:`~factory.Iterator`
- Make the ``extra_kwargs`` parameter of :class:`~factory.Faker`'s ``generate`` method optional
- Add :class:`~factory.RelatedFactoryList` class for one-to-many support, thanks `Sean Harrington <https://github.com/seanharr11>`_.
- Make the `locale` argument for :class:`~factory.Faker` keyword-only

*Bug fix:*

- Allow renamed arguments to be optional, thanks to `Justin Crown <https://github.com/mrname>`_.
- Fix `django_get_or_create` behavior when using multiple fields with `unique=True`, thanks to `YPCrumble <https://github.com/YPCrumble>`

2.11.1

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

*Bug fix:*

- Fix passing deep context to a :class:`~factory.SubFactory` (``Foo(x__y__z=factory.Faker('name')``)

Page 2 of 9

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.