Django-fakery
=============
.. image:: https://badge.fury.io/py/django-fakery.svg
:target: https://badge.fury.io/py/django-fakery
.. image:: https://travis-ci.org/fcurella/django-fakery.svg?branch=master
:target: https://travis-ci.org/fcurella/django-fakery
.. image:: https://coveralls.io/repos/fcurella/django-fakery/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/fcurella/django-fakery?branch=master
An easy-to-use implementation of `Creation Methods`_ (aka Object Factory) for Django, backed by ``Faker``.
.. _Creation Methods: http://xunitpatterns.com/Creation%20Method.html
``django_fakery`` will try to guess the field's value based on the field's name and type.
Installation
------------
Install with::
$ pip install django-fakery
QuickStart
----------
.. code-block:: python
from django_fakery import factory
from myapp.models import MyModel
factory.m(MyModel)(field='value')
If you're having issues with circular imports, you can also reference a model by using the ``M`` utility function:
.. code-block:: python
from django_fakery import factory, M
factory.m(M("myapp.MyModel"))(field="value")
If you really don't want to import things, you could also just reference a model by using the ``<app_label>.<ModelName>`` syntax. This is not encouraged, as it will likely break type-hinting:
.. code-block:: python
from django_fakery import factory
factory.m("myapp.MyModel")(field="value")
If you use ``pytest``, you can use the ``fakery`` and ``fakery_shortcuts` fixtures
(requires ``pytest`` and ``pytest-django``):
.. code-block:: python
import pytest
from myapp.models import MyModel
@pytest.mark.django_db
def test_mymodel(fakery, fakery_shortcuts):
fakery.m(MyModel)(field=fakery_shortcuts.future_datetime())
If you'd rather, you can use a more wordy API:
.. code-block:: python
from django_fakery import factory
from myapp.models import MyModel
factory.make(
MyModel,
fields={
'field': 'value',
}
)
We will use the short API thorough the documentation.
The value of a field can be any python object, a callable, or a lambda:
.. code-block:: python
from django.utils import timezone
from django_fakery import factory
from myapp.models import MyModel
factory.m(MyModel)(created=timezone.now)
When using a lambda, it will receive two arguments: ``n`` is the iteration number, and ``f`` is an instance of ``faker``:
.. code-block:: python
from django.contrib.auth.models import User
user = factory.m(User)(
username=lambda n, f: 'user_{}'.format(n),
)
``django-fakery`` includes some pre-built lambdas for common needs. See shortcuts_ for more info.
You can create multiple objects by using the ``quantity`` parameter:
.. code-block:: python
from django_fakery import factory
from django.contrib.auth.models import User
factory.m(User, quantity=4)
For convenience, when the value of a field is a string, it will be interpolated with the iteration number:
.. code-block:: python
from myapp.models import MyModel
user = factory.m(User, quantity=4)(
username='user_{}',
)
Custom fields
-------------
You can add support for custom fields by adding your
custom field class and a function in ``factory.field_types``:
.. code-block:: python
from django_fakery import factory
from my_fields import CustomField
def func(faker, field, count, *args, **kwargs):
return 43
factory.field_types.add(
CustomField, (func, [], {})
)
As a shortcut, you can specified any Faker function by its name:
.. code-block:: python
from django_fakery import factory
from my_fields import CustomField
factory.field_types.add(
CustomField, ("random_int", [], {"min": 0, "max": 60})
)
Foreign keys
------------
Non-nullable ``ForeignKey`` s create related objects automatically.
If you want to explicitly create a related object, you can pass a factory like any other value:
.. code-block:: python
from django.contrib.auth.models import User
from food.models import Pizza
pizza = factory.m(Pizza)(
chef=factory.m(User)(username='Gusteau'),
)
If you'd rather not create related objects and reuse the same value for a foreign key, you can use the special value ``django_fakery.rels.SELECT``:
.. code-block:: python
from django_fakery import factory, rels
from food.models import Pizza
pizza = factory.m(Pizza, quantity=5)(
chef=rels.SELECT,
)
``django-fakery`` will always use the first instance of the related model, creating one if necessary.
ManyToManies
------------
Because ``ManyToManyField`` s are implicitly nullable (ie: they're always allowed to have their ``.count()`` equal to ``0``), related objects on those fields are not automatically created for you.
If you want to explicitly create a related objects, you can pass a list as the field's value:
.. code-block:: python
from food.models import Pizza, Topping
pizza = factory.m(Pizza)(
toppings=[
factory.m(Topping)(name='Anchovies')
],
)
You can also pass a factory, to create multiple objects:
.. code-block:: python
from food.models import Pizza, Topping
pizza = factory.m(Pizza)(
toppings=factory.m(Topping, quantity=5),
)
.. _shortcuts:
Shortcuts
---------
``django-fakery`` includes some shortcut functions to generate commonly needed values.
``future_datetime(end='+30d')``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Returns a ``datetime`` object in the future (that is, 1 second from now) up to the specified ``end``. ``end`` can be a string, anotther datetime, or a timedelta. If it's a string, it must start with `+`, followed by and integer and a unit, Eg: ``'+30d'``. Defaults to ``'+30d'``
Valid units are:
* ``'years'``, ``'y'``
* ``'weeks'``, ``'w'``
* ``'days'``, ``'d'``
* ``'hours'``, ``'hours'``
* ``'minutes'``, ``'m'``
* ``'seconds'``, ``'s'``
Example:
.. code-block:: python
from django_fakery import factory, shortcuts
from myapp.models import MyModel
factory.m(MyModel)(field=shortcuts.future_datetime('+1w'))
``future_date(end='+30d')``
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Returns a ``date`` object in the future (that is, 1 day from now) up to the specified ``end``. ``end`` can be a string, another date, or a timedelta. If it's a string, it must start with `+`, followed by and integer and a unit, Eg: ``'+30d'``. Defaults to ``'+30d'``
``past_datetime(start='-30d')``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Returns a ``datetime`` object in the past between 1 second ago and the specified ``start``. ``start`` can be a string, another datetime, or a timedelta. If it's a string, it must start with `-`, followed by and integer and a unit, Eg: ``'-30d'``. Defaults to ``'-30d'``
``past_date(start='-30d')``
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Returns a ``date`` object in the past between 1 day ago and the specified ``start``. ``start`` can be a string, another date, or a timedelta. If it's a string, it must start with `-`, followed by and integer and a unit, Eg: ``'-30d'``. Defaults to ``'-30d'``
Lazies
------
You can refer to the created instance's own attributes or method by using `Lazy` objects.
For example, if you'd like to create user with email as username, and have them always match, you could do:
.. code-block:: python
from django_fakery import factory, Lazy
from django.contrib.auth.models import User
factory.m(auth.User)(
username=Lazy('email'),
)
If you want to assign a value returned by a method on the instance, you can pass the method's arguments to the ``Lazy`` object:
.. code-block:: python
from django_fakery import factory, Lazy
from myapp.models import MyModel
factory.m(MyModel)(
myfield=Lazy('model_method', 'argument', keyword='keyword value'),
)
Pre-save and Post-save hooks
----------------------------
You can define functions to be called right before the instance is saved or right after:
.. code-block:: python
from django.contrib.auth.models import User
from django_fakery import factory
factory.m(
User,
pre_save=[
lambda u: u.set_password('password')
],
)(username='username')
Since settings a user's password is such a common case, we special-cased that scenario, so you can just pass it as a field:
.. code-block:: python
from django.contrib.auth.models import User
from django_fakery import factory
factory.m(User)(
username='username',
password='password',
)
Get or Make
-----------
You can check for existance of a model instance and create it if necessary by using the ``g_m`` (short for ``get_or_make``) method:
.. code-block:: python
from myapp.models import MyModel
myinstance, created = factory.g_m(
MyModel,
lookup={
'myfield': 'myvalue',
}
)(myotherfield='somevalue')
If you're looking for a more explicit API, you can use the ``.get_or_make()`` method:
.. code-block:: python
from myapp.models import MyModel
myinstance, created = factory.get_or_make(
MyModel,
lookup={
'myfield': 'myvalue',
},
fields={
'myotherfield': 'somevalue',
},
)
Get or Update
-------------
You can check for existence of a model instance and update it by using the ``g_u`` (short for ``get_or_update``) method:
.. code-block:: python
from myapp.models import MyModel
myinstance, created = factory.g_u(
MyModel,
lookup={
'myfield': 'myvalue',
}
)(myotherfield='somevalue')
If you're looking for a more explicit API, you can use the ``.get_or_update()`` method:
.. code-block:: python
from myapp.models import MyModel
myinstance, created = factory.get_or_update(
MyModel,
lookup={
'myfield': 'myvalue',
},
fields={
'myotherfield': 'somevalue',
},
)
Non-persistent instances
------------------------
You can build instances that are not saved to the database by using the ``.b()`` method, just like you'd use ``.m()``:
.. code-block:: python
from django_fakery import factory
from myapp.models import MyModel
factory.b(MyModel)(
field='value',
)
Note that since the instance is not saved to the database, ``.build()`` does not support ManyToManies or post-save hooks.
If you're looking for a more explicit API, you can use the ``.build()`` method:
.. code-block:: python
from django_fakery import factory
from myapp.models import MyModel
factory.build(
MyModel,
fields={
'field': 'value',
}
)
Blueprints
----------
Use a blueprint:
.. code-block:: python
from django.contrib.auth.models import User
from django_fakery import factory
user = factory.blueprint(User)
user.make(quantity=10)
Blueprints can refer other blueprints:
.. code-block:: python
from food.models import Pizza
pizza = factory.blueprint(Pizza).fields(
chef=user,
)
)
You can also override the field values you previously specified:
.. code-block:: python
from food.models import Pizza
pizza = factory.blueprint(Pizza).fields(
chef=user,
thickness=1
)
)
pizza.m(quantity=10)(thickness=2)
Or, if you'd rather use the explicit api:
.. code-block:: python
from food.models import Pizza
pizza = factory.blueprint(Pizza).fields(
chef=user,
thickness=1
)
)
thicker_pizza = pizza.fields(thickness=2)
thicker_pizza.make(quantity=10)
Seeding the faker
-----------------
.. code-block:: python
from django.contrib.auth.models import User
from django_fakery import factory
factory.m(User, seed=1234, quantity=4)(
username='regularuser_{}'
)
Credits
-------
The API is heavily inspired by `model_mommy`_.
.. _model_mommy: https://github.com/vandersonmota/model_mommy
License
-------
This software is released under the MIT License.
Raw data
{
"_id": null,
"home_page": "https://github.com/fcurella/django-fakery/",
"name": "django-fakery",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Flavio Curella",
"author_email": "flavio.curella@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/fc/2c/aad10072a4574015aba247404573c7d90b1d7ae8b8676325275b6fcdb92b/django_fakery-4.1.2.tar.gz",
"platform": "any",
"description": "Django-fakery\n=============\n\n.. image:: https://badge.fury.io/py/django-fakery.svg\n :target: https://badge.fury.io/py/django-fakery\n\n.. image:: https://travis-ci.org/fcurella/django-fakery.svg?branch=master\n :target: https://travis-ci.org/fcurella/django-fakery\n\n\n.. image:: https://coveralls.io/repos/fcurella/django-fakery/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/fcurella/django-fakery?branch=master\n\nAn easy-to-use implementation of `Creation Methods`_ (aka Object Factory) for Django, backed by ``Faker``.\n\n.. _Creation Methods: http://xunitpatterns.com/Creation%20Method.html\n\n``django_fakery`` will try to guess the field's value based on the field's name and type.\n\nInstallation\n------------\n\nInstall with::\n\n $ pip install django-fakery\n\nQuickStart\n----------\n\n.. code-block:: python\n\n from django_fakery import factory\n from myapp.models import MyModel\n\n factory.m(MyModel)(field='value')\n\nIf you're having issues with circular imports, you can also reference a model by using the ``M`` utility function:\n\n.. code-block:: python\n\n from django_fakery import factory, M\n\n factory.m(M(\"myapp.MyModel\"))(field=\"value\")\n\n\nIf you really don't want to import things, you could also just reference a model by using the ``<app_label>.<ModelName>`` syntax. This is not encouraged, as it will likely break type-hinting:\n\n.. code-block:: python\n\n from django_fakery import factory\n\n factory.m(\"myapp.MyModel\")(field=\"value\")\n\n\nIf you use ``pytest``, you can use the ``fakery`` and ``fakery_shortcuts` fixtures\n(requires ``pytest`` and ``pytest-django``):\n\n.. code-block:: python\n\n import pytest\n from myapp.models import MyModel\n\n @pytest.mark.django_db\n def test_mymodel(fakery, fakery_shortcuts):\n fakery.m(MyModel)(field=fakery_shortcuts.future_datetime())\n\n\n\nIf you'd rather, you can use a more wordy API:\n\n.. code-block:: python\n\n from django_fakery import factory\n from myapp.models import MyModel\n\n factory.make(\n MyModel,\n fields={\n 'field': 'value',\n }\n )\n\nWe will use the short API thorough the documentation.\n\nThe value of a field can be any python object, a callable, or a lambda:\n\n.. code-block:: python\n\n from django.utils import timezone\n from django_fakery import factory\n from myapp.models import MyModel\n\n factory.m(MyModel)(created=timezone.now)\n\nWhen using a lambda, it will receive two arguments: ``n`` is the iteration number, and ``f`` is an instance of ``faker``:\n\n.. code-block:: python\n\n from django.contrib.auth.models import User\n\n user = factory.m(User)(\n username=lambda n, f: 'user_{}'.format(n),\n )\n\n``django-fakery`` includes some pre-built lambdas for common needs. See shortcuts_ for more info.\n\nYou can create multiple objects by using the ``quantity`` parameter:\n\n.. code-block:: python\n\n from django_fakery import factory\n from django.contrib.auth.models import User\n\n factory.m(User, quantity=4)\n\nFor convenience, when the value of a field is a string, it will be interpolated with the iteration number:\n\n.. code-block:: python\n\n from myapp.models import MyModel\n\n user = factory.m(User, quantity=4)(\n username='user_{}', \n )\n\nCustom fields\n-------------\n\nYou can add support for custom fields by adding your\ncustom field class and a function in ``factory.field_types``:\n\n.. code-block:: python\n\n from django_fakery import factory\n\n from my_fields import CustomField\n\n def func(faker, field, count, *args, **kwargs):\n return 43\n\n\n factory.field_types.add(\n CustomField, (func, [], {})\n )\n\n\nAs a shortcut, you can specified any Faker function by its name:\n\n.. code-block:: python\n\n from django_fakery import factory\n\n from my_fields import CustomField\n\n\n factory.field_types.add(\n CustomField, (\"random_int\", [], {\"min\": 0, \"max\": 60})\n )\n\nForeign keys\n------------\n\nNon-nullable ``ForeignKey`` s create related objects automatically.\n\nIf you want to explicitly create a related object, you can pass a factory like any other value:\n\n.. code-block:: python\n\n from django.contrib.auth.models import User\n from food.models import Pizza\n\n pizza = factory.m(Pizza)(\n chef=factory.m(User)(username='Gusteau'),\n )\n\nIf you'd rather not create related objects and reuse the same value for a foreign key, you can use the special value ``django_fakery.rels.SELECT``:\n\n.. code-block:: python\n\n from django_fakery import factory, rels\n from food.models import Pizza\n\n pizza = factory.m(Pizza, quantity=5)(\n chef=rels.SELECT,\n )\n\n``django-fakery`` will always use the first instance of the related model, creating one if necessary.\n\nManyToManies\n------------\n\nBecause ``ManyToManyField`` s are implicitly nullable (ie: they're always allowed to have their ``.count()`` equal to ``0``), related objects on those fields are not automatically created for you.\n\nIf you want to explicitly create a related objects, you can pass a list as the field's value:\n\n.. code-block:: python\n\n from food.models import Pizza, Topping\n\n pizza = factory.m(Pizza)(\n toppings=[\n factory.m(Topping)(name='Anchovies')\n ],\n )\n\nYou can also pass a factory, to create multiple objects:\n\n.. code-block:: python\n\n from food.models import Pizza, Topping\n\n pizza = factory.m(Pizza)(\n toppings=factory.m(Topping, quantity=5),\n )\n\n.. _shortcuts:\n\nShortcuts\n---------\n\n``django-fakery`` includes some shortcut functions to generate commonly needed values.\n\n\n``future_datetime(end='+30d')``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns a ``datetime`` object in the future (that is, 1 second from now) up to the specified ``end``. ``end`` can be a string, anotther datetime, or a timedelta. If it's a string, it must start with `+`, followed by and integer and a unit, Eg: ``'+30d'``. Defaults to ``'+30d'``\n\nValid units are:\n\n* ``'years'``, ``'y'``\n* ``'weeks'``, ``'w'``\n* ``'days'``, ``'d'``\n* ``'hours'``, ``'hours'``\n* ``'minutes'``, ``'m'``\n* ``'seconds'``, ``'s'``\n\nExample:\n\n.. code-block:: python\n\n from django_fakery import factory, shortcuts\n from myapp.models import MyModel\n\n factory.m(MyModel)(field=shortcuts.future_datetime('+1w'))\n\n\n``future_date(end='+30d')``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns a ``date`` object in the future (that is, 1 day from now) up to the specified ``end``. ``end`` can be a string, another date, or a timedelta. If it's a string, it must start with `+`, followed by and integer and a unit, Eg: ``'+30d'``. Defaults to ``'+30d'``\n\n``past_datetime(start='-30d')``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns a ``datetime`` object in the past between 1 second ago and the specified ``start``. ``start`` can be a string, another datetime, or a timedelta. If it's a string, it must start with `-`, followed by and integer and a unit, Eg: ``'-30d'``. Defaults to ``'-30d'``\n\n``past_date(start='-30d')``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns a ``date`` object in the past between 1 day ago and the specified ``start``. ``start`` can be a string, another date, or a timedelta. If it's a string, it must start with `-`, followed by and integer and a unit, Eg: ``'-30d'``. Defaults to ``'-30d'``\n\n\nLazies\n------\n\nYou can refer to the created instance's own attributes or method by using `Lazy` objects.\n\nFor example, if you'd like to create user with email as username, and have them always match, you could do:\n\n.. code-block:: python\n\n from django_fakery import factory, Lazy\n from django.contrib.auth.models import User\n\n factory.m(auth.User)(\n username=Lazy('email'),\n )\n\n\nIf you want to assign a value returned by a method on the instance, you can pass the method's arguments to the ``Lazy`` object:\n\n.. code-block:: python\n\n from django_fakery import factory, Lazy\n from myapp.models import MyModel\n\n factory.m(MyModel)(\n myfield=Lazy('model_method', 'argument', keyword='keyword value'),\n )\n\nPre-save and Post-save hooks\n----------------------------\n\nYou can define functions to be called right before the instance is saved or right after:\n\n.. code-block:: python\n\n from django.contrib.auth.models import User\n from django_fakery import factory\n\n factory.m(\n User,\n pre_save=[\n lambda u: u.set_password('password')\n ],\n )(username='username')\n\nSince settings a user's password is such a common case, we special-cased that scenario, so you can just pass it as a field:\n\n.. code-block:: python\n\n from django.contrib.auth.models import User\n from django_fakery import factory\n\n factory.m(User)(\n username='username',\n password='password',\n )\n\nGet or Make\n-----------\n\nYou can check for existance of a model instance and create it if necessary by using the ``g_m`` (short for ``get_or_make``) method:\n\n.. code-block:: python\n\n from myapp.models import MyModel\n\n myinstance, created = factory.g_m(\n MyModel,\n lookup={\n 'myfield': 'myvalue',\n }\n )(myotherfield='somevalue')\n\nIf you're looking for a more explicit API, you can use the ``.get_or_make()`` method:\n\n.. code-block:: python\n\n from myapp.models import MyModel\n\n myinstance, created = factory.get_or_make(\n MyModel,\n lookup={\n 'myfield': 'myvalue',\n },\n fields={\n 'myotherfield': 'somevalue',\n },\n )\n\nGet or Update\n-------------\n\nYou can check for existence of a model instance and update it by using the ``g_u`` (short for ``get_or_update``) method:\n\n.. code-block:: python\n\n from myapp.models import MyModel\n\n myinstance, created = factory.g_u(\n MyModel,\n lookup={\n 'myfield': 'myvalue',\n }\n )(myotherfield='somevalue')\n\nIf you're looking for a more explicit API, you can use the ``.get_or_update()`` method:\n\n.. code-block:: python\n\n from myapp.models import MyModel\n\n myinstance, created = factory.get_or_update(\n MyModel,\n lookup={\n 'myfield': 'myvalue',\n },\n fields={\n 'myotherfield': 'somevalue',\n },\n )\n\nNon-persistent instances\n------------------------\n\nYou can build instances that are not saved to the database by using the ``.b()`` method, just like you'd use ``.m()``:\n\n.. code-block:: python\n\n from django_fakery import factory\n from myapp.models import MyModel\n\n factory.b(MyModel)(\n field='value',\n )\n\nNote that since the instance is not saved to the database, ``.build()`` does not support ManyToManies or post-save hooks.\n\nIf you're looking for a more explicit API, you can use the ``.build()`` method:\n\n.. code-block:: python\n\n from django_fakery import factory\n from myapp.models import MyModel\n\n factory.build(\n MyModel,\n fields={\n 'field': 'value',\n }\n )\n\n\nBlueprints\n----------\n\nUse a blueprint:\n\n.. code-block:: python\n\n from django.contrib.auth.models import User\n from django_fakery import factory\n\n user = factory.blueprint(User)\n\n user.make(quantity=10)\n\nBlueprints can refer other blueprints:\n\n.. code-block:: python\n\n from food.models import Pizza\n\n pizza = factory.blueprint(Pizza).fields(\n chef=user,\n )\n )\n\nYou can also override the field values you previously specified:\n\n.. code-block:: python\n\n from food.models import Pizza\n\n pizza = factory.blueprint(Pizza).fields(\n chef=user,\n thickness=1\n )\n )\n\n pizza.m(quantity=10)(thickness=2)\n\nOr, if you'd rather use the explicit api:\n\n.. code-block:: python\n\n from food.models import Pizza\n\n pizza = factory.blueprint(Pizza).fields(\n chef=user,\n thickness=1\n )\n )\n\n thicker_pizza = pizza.fields(thickness=2)\n thicker_pizza.make(quantity=10)\n\n\nSeeding the faker\n-----------------\n\n.. code-block:: python\n\n from django.contrib.auth.models import User\n from django_fakery import factory\n\n factory.m(User, seed=1234, quantity=4)(\n username='regularuser_{}'\n )\n\nCredits\n-------\n\nThe API is heavily inspired by `model_mommy`_.\n\n.. _model_mommy: https://github.com/vandersonmota/model_mommy\n\nLicense\n-------\n\nThis software is released under the MIT License.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A model instances generator for Django",
"version": "4.1.2",
"project_urls": {
"Homepage": "https://github.com/fcurella/django-fakery/"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f54b36c6f58471232d3e55cc724826064133f845bac74f84354fdb3be3539187",
"md5": "9539f78d08ad299b8857d34e90df5cb7",
"sha256": "f943cda59eb17b1106f22aaa9262c66ac8c2abc012661fab3d867fd1fdafb339"
},
"downloads": -1,
"filename": "django_fakery-4.1.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "9539f78d08ad299b8857d34e90df5cb7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.8",
"size": 17545,
"upload_time": "2024-06-17T22:28:21",
"upload_time_iso_8601": "2024-06-17T22:28:21.278312Z",
"url": "https://files.pythonhosted.org/packages/f5/4b/36c6f58471232d3e55cc724826064133f845bac74f84354fdb3be3539187/django_fakery-4.1.2-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fc2caad10072a4574015aba247404573c7d90b1d7ae8b8676325275b6fcdb92b",
"md5": "2e6b0991d86708b7cbd23431945a2de5",
"sha256": "5723a725a87d87e93ddd8f09024842c24be539c3adca0e00b3304f14bd594868"
},
"downloads": -1,
"filename": "django_fakery-4.1.2.tar.gz",
"has_sig": false,
"md5_digest": "2e6b0991d86708b7cbd23431945a2de5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 17503,
"upload_time": "2024-06-17T22:28:23",
"upload_time_iso_8601": "2024-06-17T22:28:23.993701Z",
"url": "https://files.pythonhosted.org/packages/fc/2c/aad10072a4574015aba247404573c7d90b1d7ae8b8676325275b6fcdb92b/django_fakery-4.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-17 22:28:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "fcurella",
"github_project": "django-fakery",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "django-fakery"
}