Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update factory-boy to 3.3.0 #1183

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

pyup-bot
Copy link
Collaborator

This PR updates factory-boy from 2.12.0 to 3.3.0.

Changelog

3.3.0

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

*New:*

 - :issue:`366`: Add :class:`factory.django.Password` to generate Django :class:`~django.contrib.auth.models.User`
   passwords.
 - :issue:`304`: Add :attr:`~factory.alchemy.SQLAlchemyOptions.sqlalchemy_session_factory` to dynamically
   create sessions for use by the :class:`~factory.alchemy.SQLAlchemyModelFactory`.
 - Add support for Django 4.0
 - Add support for Django 4.1
 - Add support for Python 3.10
 - Add support for Python 3.11

*Bugfix:*

 - Make :meth:`~factory.django.mute_signals` mute signals during post-generation.

 - :issue:`775`: Change the signature for :meth:`~factory.alchemy.SQLAlchemyModelFactory._save` and
   :meth:`~factory.alchemy.SQLAlchemyModelFactory._get_or_create` to avoid argument names clashes with a field named
   ``session``.

*Deprecated:*

 - :class:`~factory.django.DjangoModelFactory` will stop issuing a second call to
   :meth:`~django.db.models.Model.save` on the created instance when :ref:`post-generation-hooks` return a value.

   To help with the transition, :class:`factory.django.DjangoModelFactory._after_postgeneration` raises a
   :class:`DeprecationWarning` when calling :meth:`~django.db.models.Model.save`. Inspect your
   :class:`~factory.django.DjangoModelFactory` subclasses:

   - If the :meth:`~django.db.models.Model.save` call is not needed after :class:`~factory.PostGeneration`, set
     :attr:`factory.django.DjangoOptions.skip_postgeneration_save` to ``True`` in the factory meta.

   - Otherwise, the instance has been modified by :class:`~factory.PostGeneration` hooks and needs to be
     :meth:`~django.db.models.Model.save`\ d. Either:

       - call :meth:`django.db.models.Model.save` in the :class:`~factory.PostGeneration` hook that modifies the
         instance, or
       - override :class:`~factory.django.DjangoModelFactory._after_postgeneration` to
         :meth:`~django.db.models.Model.save` the instance.

*Removed:*

 - Drop support for Django 2.2
 - Drop support for Django 3.0
 - Drop support for Django 3.1
 - Drop support for Python 3.6

3.2.1

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

*New:*
 - Add support for Django 3.2

*Bugfix:*

 - Do not override signals receivers registered in a :meth:`~factory.django.mute_signals` context.

 - :issue:`775`: Change the signature for :meth:`~factory.alchemy.SQLAlchemyModelFactory._save` and
   :meth:`~factory.alchemy.SQLAlchemyModelFactory._get_or_create` to avoid argument names clashes with a field named
   ``session``.

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.Factory.model` for another :py:class:`~factory.Factory`.
 - Allow configuring the color palette of :py:class:`~factory.django.ImageField`.
 - :py:meth:`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.declarations.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.
Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant