Permalink
677 lines (430 sloc) 22.2 KB

ChangeLog

2.11.2 (unreleased)

  • Nothing changed yet.

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

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:

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