Giter VIP home page Giter VIP logo

mimesis's Introduction


Build Status codecov PyPI version Python

Mimesis is a fast and easy to use library for Python, which helps generate mock data for a variety of purposes (see "Data providers") in a variety of languages (see "Locales"). This data can be particularly useful during software development and testing. The library was written with the use of tools from the standard Python library, and therefore, it does not have any side dependencies.

Documentation

Mimesis is very simple to use, and the below examples should help you get started. Complete documentation for Mimesis is available here.

Installation

To install mimesis, simply:

~ pip install mimesis

Also you can install it manually:

(env) ➜  python3 setup.py install

Basic Usage

As we said above, this library is really easy to use:

>>> import mimesis
>>> person = mimesis.Personal(locale='en')

>>> person.full_name(gender='female')
'Antonetta Garrison'

>>> person.occupation()
'Backend Developer'

Locales

You can specify a locale when creating providers and they will return data that is appropriate for the language or country associated with that locale:

>>> from mimesis import Personal

>>> de = Personal('de')
>>> ic = Personal('is')

>>> de.full_name()
'Sabrina Gutermuth'

>>> ic.full_name()
'Rósa Þórlindsdóttir'

Mimesis currently includes support for 30 different locales. See details for more information.

Flag Code Name Native name
1 🇨🇿 cs Czech Česky
2 🇩🇰 da Danish Dansk
3 🇩🇪 de German Deutsch
4 🇦🇹 de-at Austrian German Deutsch
5 🇨🇭 de-ch Swiss German Deutsch
6 🇺🇸 en English English
7 🇦🇺 en-au Australian English English
8 🇨🇦 en-ca Canadian English English
9 🇬🇧 en-gb British English English
10 🇪🇸 es Spanish Español
11 🇲🇽 es-mx Mexican Spanish Español
12 🇲🇽 et Estonian Eesti
13 🇮🇷 fa Farsi فارسی
14 🇫🇮 fi Finnish Suomi
15 🇫🇷 fr French Français
16 🇭🇺 hu Hungarian Magyar
17 🇮🇸 is Icelandic Íslenska
18 🇮🇹 it Italian Italiano
19 🇯🇵 ja Japanese 日本語
20 🇰🇷 ko Korean 한국어
21 🇳🇱 nl Dutch Nederlands
22 🇧🇪 nl-be Belgium Dutch Nederlands
23 🇳🇴 no Norwegian Norsk
24 🇵🇱 pl Polish Polski
25 🇵🇹 pt Portuguese Português
26 🇧🇷 pt-br Brazilian Portuguese Português Brasileiro
27 🇷🇺 ru Russian Русский
28 🇸🇪 sv Swedish Svenska
29 🇹🇷 tr Turkish Türkçe
30 🇺🇦 uk Ukrainian Український
31 🇨🇳 zh Chinese 汉语

When you only need to generate data for a single locale, use the Generic() provider, and you can access all providers of Mimesis from one object.

>>> import mimesis
>>> g = mimesis.Generic('es')

>>> g.datetime.month()
'Agosto'

>>> g.food.fruit()
'Limón'

Data providers

Mimesis support over twenty different data providers available, which can produce data related to food, people, computer hardware, transportation, addresses, and more. See details for more information.

Provider Description
1 Address Address data (street name, street suffix etc.)
2 Business Business data (company, company_type, copyright etc.)
3 Code Codes (ISBN, EAN, IMEI etc.).
4 ClothingSizes Clothing sizes (international sizes, european etc.)
5 Datetime Datetime (day_of_week, month, year etc.)
6 Development Data for developers (version, programming language etc.)
7 File File data (extension etc.)
8 Food Information on food (vegetables, fruits, measurements etc.)
9 Games Games data (game, score, pegi_rating etc.)
10 Personal Personal data (name, surname, age, email etc.)
11 Text Text data (sentence, title etc.)
12 Transport Dummy data about transport (truck model, car etc.)
13 Science Scientific data (scientist, math_formula etc.)
14 Structured Structured data (html, css etc.)
15 Internet Internet data (facebook, twitter etc.)
16 Hardware The data about the hardware (resolution, cpu, graphics etc.)
17 Numbers Numerical data (floats, primes, digit etc.)
18 Path Provides methods and property for generate paths.
19 UnitSytem Provides names of unit systems in international format
20 Generic All at once
21 Cryptographic Cryptographic data

Advantages

Mimesis offers a number of advantages over other similar libraries, such as Faker:

  • Performance. Mimesis is significantly faster than other similar libraries.
  • Completeness. Mimesis strives to provide many detailed providers that offer a variety of data generators.
  • Simplicity. Mimesis does not require any modules other than the Python standard library.

See here for an example of how we compare performance with other libraries.

Integration with Web Application Frameworks

You can use Mimesis during development and testing of applications built on a variety of frameworks. Here is an example of integration with a Flask application:

class Patient(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    full_name = db.Column(db.String(100))
    blood_type = db.Column(db.String(64))

    def __init__(self, **kwargs):
        super(Patient, self).__init__(**kwargs)

    @staticmethod
    def populate(count=500, locale=None):
        import mimesis

        person =  mimesis.Personal(locale=locale)

        for _ in range(count):
            patient = Patient(
                full_name=person.full_name('female'),
                blood_type=person.blood_type(),
            )

            db.session.add(patient)
            try:
                db.session.commit()
            except IntegrityError:
                db.session.rollback()

Just run shell mode and do following:

>>> Patient().populate(count=1000, locale='en')

Generate data by schema

Mimesis support generating data by schema:

>>> from mimesis.schema import Schema
>>> schema = Schema('en')

>>> schema.load(schema={
...     "id": "cryptographic.uuid",
...     "name": "text.word",
...     "version": "development.version",
...     "owner": {
...         "email": "personal.email",
...         "token": "cryptographic.token",
...         "creator": "personal.full_name"
...     }
... }).create(iterations=2)

>>> # or you can load data from json file:
>>> schema.load(path='schema.json').create(iterations=2)

Result:

[
  {
    "id": "790cce21-5f75-2652-2ee2-f9d90a26c43d",
    "name": "container",
    "owner": {
      "email": "[email protected]",
      "token": "0bf924125640c46aad2a860f40ec4b7f33a516c497957abd70375c548ed56978",
      "creator": "Ileen Ellis"
    },
    "version": "4.11.6"
  },
  ...
]

Custom Providers

You also can add custom provider to Generic(), using add_provider() method:

>>> import mimesis
>>> generic = mimesis.Generic('en')

>>> class SomeProvider(object):
...     class Meta:
...         name = "some_provider"
...
...     def hello(self):
...         return "Hello!"

>>> class Another(object):
...     def bye(self):
...         return "Bye!"

>>> generic.add_provider(SomeProvider)
>>> generic.add_provider(Another)

>>> generic.some_provider.hi()
'Hello!'

>>> generic.another.bye()
'Bye!'

or multiple custom providers using method add_providers():

>>> generic.add_providers(SomeProvider, Another)

Builtins specific data providers

Some countries have data types specific to that country. For example social security numbers (SSN) in the United States of America (en), and cadastro de pessoas físicas (CPF) in Brazil (pt-br). If you would like to use these country-specific providers, then you must import them explicitly:

>>> from mimesis import Generic
>>> from mimesis.builtins import BrazilSpecProvider

>>> generic = Generic('pt-br')
>>> generic.add_provider(BrazilSpecProvider)
>>> generic.brazil_provider.cpf()
'696.441.186-00'

Decorators

If your locale belongs to the family of Cyrillic languages, but you need latinized locale-specific data, then you can use special decorator which help you romanize your data. At this moment it's works only for Russian and Ukrainian:

>>> from mimesis.decorators import romanized

>>> @romanized('ru')
... def russian_name():
...     return 'Вероника Денисова'

>>> russian_name()
'Veronika Denisova'

Disclaimer

The authors assume no responsibility for how you use this library data generated by it. This library is designed only for developers with good intentions. Do not use the data generated with Mimesis for illegal purposes.

Contributing

Your contributions are always welcome! Please take a look at the contribution guidelines first. Here you can look at list of our contributors.

License

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

mimesis's People

Contributors

lk-geimfari avatar wikkiewikkie avatar battleroid avatar valerievich avatar jwilk avatar sobolevn avatar jlwt90 avatar uvegla avatar yn-coder avatar drpoggi avatar mipaaa avatar paulwaltersdev avatar auyer avatar jasonwaiting-dev avatar martini97 avatar askras avatar aminalaee avatar crayxt avatar benjixx avatar bderusha avatar el avatar fcurella avatar fliegendewurst avatar costava avatar jeromechrist avatar mrcrilly avatar zelds avatar offermann avatar sambuddhabasu avatar tankorsmash avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.