Skip to main content

Minimalistic, standalone alternative fake data generator with no dependencies.

Project description

Minimalistic, standalone alternative fake data generator with no dependencies.

PyPI Version Supported Python versions Build Status Documentation Status MIT Coverage

Overview

fake.py is a standalone, portable library designed for generating various random data types for testing.

It offers a simplified, dependency-free alternative for creating random texts, (person) names, URLs, dates, file names, IPs, primitive Python data types (such as uuid, str, int, float, bool) and byte content for multiple file formats including PDF, DOCX, PNG, SVG, BMP, and GIF.

The package also supports file creation on the filesystem and includes factories (dynamic fixtures) compatible with Django, TortoiseORM, and Pydantic.

Features

  • Generation of random texts, (person) names, emails, URLs, dates, IPs, and primitive Python data types.

  • Support for various file formats (PDF, DOCX, TXT, PNG, SVG, BMP, GIF) and file creation on the filesystem.

  • Basic factories for integration with Django, Pydantic, and TortoiseORM.

Prerequisites

Python 3.8+

Installation

pip

pip install fake.py

Download and copy

fake.py is the sole, self-contained module of the package. It includes tests too. If it’s more convenient to you, you could simply download the fake.py module and include it in your repository.

Since tests are included, it won’t have a negative impact on your test coverage (you might need to apply tweaks to your coverage configuration).

Documentation

Usage

Generate data

Person names

from fake import FAKER

FAKER.first_name()
FAKER.last_name()
FAKER.name()
FAKER.username()

Random texts

from fake import FAKER

FAKER.slug()
FAKER.word()
FAKER.sentence()
FAKER.paragraph()
FAKER.text()

Internet

from fake import FAKER

FAKER.email()
FAKER.url()
FAKER.ipv4()

Filenames

from fake import FAKER

FAKER.filename()

Primitive data types

from fake import FAKER

FAKER.pyint()
FAKER.pybool()
FAKER.pystr()
FAKER.pyfloat()

Dates

from fake import FAKER

FAKER.date()
FAKER.date_time()

Generate files

As bytes

from fake import FAKER

FAKER.pdf()
FAKER.docx()
FAKER.png()
FAKER.svg()
FAKER.bmp()
FAKER.gif()

As files on the file system

from fake import FAKER

FAKER.pdf_file()
FAKER.docx_file()
FAKER.png_file()
FAKER.svg_file()
FAKER.bmp_file()
FAKER.gif_file()
FAKER.txt_file()

Factories

This is how you could define a factory for Django’s built-in User model.

from django.conf import settings
from django.contrib.auth.models import User
from fake import (
    FACTORY,
    DjangoModelFactory,
    FileSystemStorage,
    SubFactory,
    pre_save,
)

STORAGE = FileSystemStorage(root_path=settings.MEDIA_ROOT, rel_path="tmp")

class UserFactory(DjangoModelFactory):

    username = FACTORY.username()
    first_name = FACTORY.first_name()
    last_name = FACTORY.last_name()
    email = FACTORY.email()
    last_login = FACTORY.date_time()
    is_superuser = False
    is_staff = False
    is_active = FACTORY.pybool()
    date_joined = FACTORY.date_time()

    class Meta:
        model = User
        get_or_create = ("username",)

    @pre_save
    def __set_password(instance):
        instance.set_password("test")

And this is how you could use it:

user = UserFactory()
users = UserFactory.create_batch(5)

Tests

Run the tests with unittest:

python -m unittest

Or pytest:

pytest

Differences with Faker

fake.py is modeled after the famous Faker package. Its’ API is highly compatible, although drastically reduced. It’s not multilingual and does not support postal codes or that many RAW file formats. However, you could easily include it in your production setup without worrying about yet another dependency.

License

MIT

Author

Artur Barseghyan <artur.barseghyan@gmail.com>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fake.py-0.3.tar.gz (52.4 kB view details)

Uploaded Source

Built Distribution

fake.py-0.3-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file fake.py-0.3.tar.gz.

File metadata

  • Download URL: fake.py-0.3.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for fake.py-0.3.tar.gz
Algorithm Hash digest
SHA256 1989f21714f78029836de84a4196f5f7b6c649ce675b8139de73021c8acaff7b
MD5 abdd8b1774a5adc8624fd8ccf8f2c3da
BLAKE2b-256 4985bf7ccb2f3ee88ffa348009f74ab134524ef83c4c9bf4d7ec796e50126d6c

See more details on using hashes here.

File details

Details for the file fake.py-0.3-py3-none-any.whl.

File metadata

  • Download URL: fake.py-0.3-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for fake.py-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 dbbceb212fc9c3fb3ac242f2b32607dc57d0de9da7383fb6ca93b34e928b9646
MD5 add278d6112a16b88dc6b72e834f2f81
BLAKE2b-256 2cf740a3fc53da2a7e7a48a3c6004b3a4a99b5f8a2a2c0dbb468dbd274c21fe1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page