Skip to content

Latest commit

 

History

History
727 lines (470 loc) · 25.2 KB

changelog.rst

File metadata and controls

727 lines (470 loc) · 25.2 KB

ChangeLog

3.0.0 (unreleased)

New:

Bugfix:

  • Fix issue with SubFactory not preserving signal muting behaviour of the used factory, thanks Patrick Stein.
  • Fix issue with overriding params in a Trait, thanks Grégoire Rocher.
  • :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.

Removed:

  • Drop support for Python 2 and 3.4. These versions are not maintained anymore.
  • Drop support for Django 2.0 and 2.1. These versions are not maintained anymore.
  • Remove deprecated force_flush from SQLAlchemyModelFactory options. Use sqlalchemy_session_persistence = "flush" instead.
  • Drop deprecated attributes() and declarations() methods from factory.BaseFactory.
  • Drop deprecated aliases factory.fuzzy aliases for get_random_state(), set_random_state() and reseed_random() .fuzzy``. Use methods from the factory.random module instead.
  • Remove references django, alchemy, mogo and mongoengine in module factory. Import the submodules factory.django, factory.alchemy, factory.mogo and factory.mongoengine instead.
  • Remove aliases factory.DjangoFactory and factory.MogoFactory. Use factory.django.DjangoFactory and factory.mogo.MogoFactory instead.

2.12.0 (2019-05-11)

New:

Bugfix:

2.11.1 (2018-05-05)

Bugfix:

2.11.0 (2018-05-05)

Bugfix:

2.10.0 (2018-01-28)

Bugfix:

New:

2.9.2 (2017-08-03)

Bugfix:

  • Fix declaration corruption bug when a factory defined foo__bar__baz=1 and a caller provided a foo__bar=x parameter at call time: this got merged into the factory's base declarations.

2.9.1 (2017-08-02)

Bugfix:

2.9.0 (2017-07-30)

This version brings massive changes to the core engine, thus reducing the number of corner cases and weird behaviours.

New:

Deprecation:

  • factory.fuzzy.get_random_state is deprecated, factory.random.get_random_state should be used instead.
  • factory.fuzzy.set_random_state is deprecated, factory.random.set_random_state should be used instead.
  • factory.fuzzy.reseed_random is deprecated, factory.random.reseed_random should be used instead.

2.8.1 (2016-12-17)

Bugfix:

  • Fix packaging issues.

2.8.0 (2016-12-17)

New:

Bugfix:

2.7.0 (2016-04-19)

New:

Removed:

  • :pr:`278`: Formally drop support for Python2.6

Warning

Version 2.7.0 moves all error classes to factory.errors. This breaks existing import statements for any error classes except those importing FactoryError directly from the factory module.

2.6.1 (2016-02-10)

New:

2.6.0 (2015-10-20)

New:

  • Add :attr:`factory.FactoryOptions.rename` to help handle conflicting names (:issue:`206`)
  • Add support for random-yet-realistic values through fake-factory, through the :class:`factory.Faker` class.
  • :class:`factory.Iterator` no longer begins iteration of its argument at import time, thus allowing to pass in a lazy iterator such as a Django queryset (i.e factory.Iterator(models.MyThingy.objects.all())).
  • Simplify imports for ORM layers, now available through a simple factory import, at factory.alchemy.SQLAlchemyModelFactory / factory.django.DjangoModelFactory / factory.mongoengine.MongoEngineFactory.

Bugfix:

2.5.2 (2015-04-21)

Bugfix:

  • Add support for Django 1.7/1.8
  • Add support for mongoengine>=0.9.0 / pymongo>=2.1

2.5.1 (2015-03-27)

Bugfix:

2.5.0 (2015-03-26)

New:

Bugfix:

Deprecation:

Warning

Version 2.5.0 removes the 'auto-magical sequence setup' bug-and-feature. This could trigger some bugs when tests expected a non-zero sequence reference.

Upgrading

Warning

Version 2.5.0 removes features that were marked as deprecated in :ref:`v2.4.0 <v2.4.0>`.

All FACTORY_*-style attributes are now declared in a class Meta: section:

# Old-style, deprecated
class MyFactory(factory.Factory):
    FACTORY_FOR = models.MyModel
    FACTORY_HIDDEN_ARGS = ['a', 'b', 'c']

# New-style
class MyFactory(factory.Factory):
    class Meta:
        model = models.MyModel
        exclude = ['a', 'b', 'c']

A simple shell command to upgrade the code would be:

# sed -i: inplace update
# grep -l: only file names, not matching lines
sed -i 's/FACTORY_FOR =/class Meta:\n        model =/' $(grep -l FACTORY_FOR $(find . -name '*.py'))

This takes care of all FACTORY_FOR occurrences; the files containing other attributes to rename can be found with grep -R FACTORY .

2.4.1 (2014-06-23)

Bugfix:

  • Fix overriding deeply inherited attributes (set in one factory, overridden in a subclass, used in a sub-sub-class).

2.4.0 (2014-06-21)

New:

Deprecation:

2.3.1 (2014-01-22)

Bugfix:

2.3.0 (2013-12-25)

New:

2.2.1 (2013-09-24)

Bugfix:

2.2.0 (2013-09-24)

Bugfix:

New:

2.1.2 (2013-08-14)

New:

2.1.1 (2013-07-02)

Bugfix:

2.1.0 (2013-06-26)

New:

Bugfix

Deprecation:

2.0.2 (2013-04-16)

New:

2.0.1 (2013-04-16)

New:

2.0.0 (2013-04-15)

New:

Removed:

1.3.0 (2013-03-11)

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

Pending deprecation

The following features have been deprecated and will be removed in an upcoming release.

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 automagic 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 (2012-09-08)

New:

1.1.5 (2012-07-09)

Bugfix:

1.1.4 (2012-06-19)

New:

1.1.3 (2012-03-09)

Bugfix:

  • Fix packaging rules

1.1.2 (2012-02-25)

New:

1.1.1 (2012-02-24)

New:

1.1.0 (2012-02-24)

New:

Bugfix:

  • Allow classmethod/staticmethod on factories

Deprecation:

1.0.4 (2011-12-21)

New:

Bugfix:

1.0.2 (2011-05-16)

New:

1.0.1 (2011-05-13)

New:

Bugfix:

1.0.0 (2010-08-22)

New:

  • First version of factory_boy

Credits

  • Initial version by Mark Sandstrom (2010)
  • Developed by Raphaël Barrois since 2011