Skip to content

Mimesis is a high-performance fake data generator for Python, which provides data for a variety of purposes in a variety of languages.

License

Notifications You must be signed in to change notification settings

treylav/mimesis

 
 

Repository files navigation

Mimesis: The Fake Data Generator


https://raw.githubusercontent.com/lk-geimfari/mimesis/master/.github/images/logo-white-bg.png

Description

Github Actions Test Documentation Status Code Coverage PyPi Version PyPI - Downloads Python version

Mimesis (/mɪˈmiːsɪs) is a robust data generator for Python that can produce a wide range of fake data in various languages. This tool is useful for populating testing databases, creating fake API endpoints, generating JSON and XML files with custom structures, and anonymizing production data, among other purposes. With Mimesis, developers can easily obtain realistic, randomized data to facilitate development and testing.

Installation

To install mimesis, simply use pip:

pip install mimesis

Python compatibility

Mimesis is compatible with Python, including PyPy, version 3.8 or higher. The Mimesis 4.1.3 is the last release that accommodates Python 3.6 and 3.7.

Supported Features

  • Easy: User-friendly data generator, with a simple design and clear documentation for easy and swift data generation.
  • Multilingual: Mimesis generates data in a vast range of languages, making it a multilingual tool that caters to numerous language requirements.
  • Performance: Mimesis has excellent performance and is widely regarded as the fastest data generator among all Python solutions available.
  • Data variety: Mimesis supports a broad range of data providers, including names, addresses, phone numbers, email addresses, dates, times, and more, enabling users to generate data for various purposes.
  • Country-specific data providers: Mimesis supports country-specific data providers for generating country-specific data.
  • Extensibility: Mimesis is extensible, allowing users to create and integrate their own data providers with the library, thus enabling them to generate custom datasets that meet their unique data generation requirements.
  • Generic data provider: Mimesis provides a generic data provider that offers easy access to all the available data providers within the library from a single object, enabling the creation of customized data generation workflows with a simplified and streamlined approach.
  • Zero hard dependencies: Mimesis has zero hard dependencies on external modules and does not require the installation of any libraries other than the Python standard library, making it easy to install and use.
  • Schema-based generators: Mimesis provides schema-based data generators, offering an effortless way to produce data by the schema of any complexity. This feature enables users to generate customized data that follows a predefined structure or schema, making it especially helpful when creating test data for applications.

Documentation

You can find the complete documentation on the Read the Docs.

It is divided into several sections:

You can improve it by sending pull requests to this repository.

Usage

The library is exceptionally user-friendly, and it only requires you to import a Data Provider object that corresponds to the desired data type.

For instance, the Person provider can be imported to access personal information, including name, surname, email, and other related fields:

>>> from mimesis import Person
>>> from mimesis.locales import Locale
>>> person = Person(Locale.EN)

>>> person.full_name()
'Brande Sears'

>>> person.email(domains=['example.com'])
'[email protected]'

>>> person.email(domains=['mimesis.name'], unique=True)
'[email protected]'

>>> person.telephone(mask='1-4##-8##-5##3')
'1-436-896-5213'

More about the other providers you can read in our documentation.

Locales

Mimesis presently encompasses 34 distinct locales, enabling users to specify the desired region or language when creating providers. Following this approach, providers will provide data relevant to the corresponding location or language.

Here's how it operates practically:

>>> from mimesis import Person
>>> from mimesis.locales import Locale
>>> from mimesis.enums import Gender

>>> de = Person(locale=Locale.DE)
>>> en = Person(locale=Locale.EN)

>>> de.full_name(gender=Gender.FEMALE)
'Sabrina Gutermuth'

>>> en.full_name(gender=Gender.MALE)
'Layne Gallagher'

Providers

Mimesis provides more than twenty data providers which can generate a broad range of data related to food, transportation, computer hardware, people, internet, addresses, and more.

This makes it possible to generate exceedingly detailed data:

>>> from mimesis import Internet, Development
>>> from mimesis.enums import URLScheme, DSNType
>>> internet = Internet()
>>> development = Development()
>>> internet.url(scheme=URLScheme.WSS, subdomains=["chat"])
'wss://chat.system.io/'
>>> development.dsn(dsn_type=DSNType.REDIS, subdomains=["cache"])
'redis://cache.fisher.app:5432'
>>> development.dsn(dsn_type=DSNType.POSTGRES, tld_type=TLDType.CCTLD)
'postgres://posted.sy:5432'

See API Reference and Data Providers for more info.

How to Contribute

  1. Take a look at contributing guidelines.
  2. Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
  3. Fork the repository on GitHub to start making your changes to the your_branch branch.
  4. Add yourself to the list of contributors.
  5. Send a pull request and bug the maintainer until it gets merged and published.

Disclaimer

The creators of Mimesis do not hold themselves accountable for how you employ the library's functionalities or the data generated with it. Mimesis is designed to facilitate testing and with good intentions. Mimesis should not be used for illicit purposes.

License

Mimesis is licensed under the MIT License. See LICENSE for more information.

About

Mimesis is a high-performance fake data generator for Python, which provides data for a variety of purposes in a variety of languages.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.8%
  • Other 0.2%