Skip to main content

OmbroCSV

pip install ombrocsv

A fast random CSV generator with a powerful yet simple template system that can be used either as a standalone Command line tool or easily integrated into any codebase.

Schema

The schema is basically the "template" of the CSV you are generating, it's a list of dictionaries (each dict represents a column). Here's how it should look:

[
    {
            "type": {see types for valid types}
            "header": {header name (optional)}
    },
    {
            "type": {see types for valid types}
            "header": {header name (optional)}
    },
    ...
]

the order in which the columns appear in the schema will be the order in which they will appear in the generated CSV.

Types

Here are the supported types with a brief description:

  • "bit" - random integer value between 1 and 0.
  • "phone_prefix" random 4-digit integer value.
  • "phone_number" random 10-digit number.
  • "phone_complete" random 14-digit number.
  • "string" - completely random string.
  • "name" - random string that loosely resembles a name.
  • "email" - random email
  • "number" - random integer number
  • "id" - incremental id that starts from 0
  • "date" - random date

Note: Any non recognized type will be treated as a string

Custom Types

you can easily override the default types by passing a different RandUtils in the constructor of CsvGenerator, just make sure that your custom RandUtils inherits from the base one and that every new type you add inherits from RandomBase.

Both RandUtils and RandomBase can be found in random_utils.py

To use your custom types then simply write the name it has been registered with in your custom RandUtils class in the "type" field when passing the schema.

Example

adding CustomType to code:

Class CustomType(RandomBase):
    ...


Class CustomRandUtils(RandUtils):

    def __init__():
        super().__init__()
        self.custom_type = CustomType()

Using CustomType in the Schema:

[
    {
            "type": "custom_type"
    },
    ...
]

Usage

This section details how to use the Package in both it's intended use cases.

As a Command Line Tool

Create a config file and use this package as a convenient way to generate CSV files on the fly.

Generate file and output to terminal

ombrocsv [config file] [number of lines to generate]

Generate file and output to file

ombrocsv [config file] [number of lines to generate] [output file]

Config file

{
    "schema": [
        {
            "type": {see types for valid types}
            "header": {header name (optional)}
        },
        ...
    ],
    "separator": {separator character (optional, default = ;)},
    "delimiter": {delimiter character (optional, default = ")},
    "headers": {true/false (optional, default = true)},
    "delimit all": {true/false (optional, default = false)}
}
Example
{
  "schema": [{
      "type": "email",
      "header": "Email"
    }, {
      "type": "name",
      "header": "Name"
    }, {
      "type": "name",
      "header": "Surname"
    }, {
      "type": "date",
      "header": "DateOfBirth"
    }, {
      "type": "CustomerID",
      "header": "string"
    }
  ],
  "separator": "|",
  "delimiter": "'"
}

As a Package

Just import CsvGenerator, initialize it with the required parameters and generate your CSV files.

Example

schema = [
    {
        "type": "email",
        "header": "Email"
    },
    {
        "type": "name",
        "header": "Name"
    },
    {
        "type": "name",
        "header": "Surname"
    },
    {
        "type": "date",
        "header": "DateOfBirth"
    },
    {
        "type": "CustomerID",
        "header": "string"
    }
]
generator = CsvGenerator(";", "\"", True, schema)
generator.generate(10)
generator.write(sys.stdout.buffer)

Release files for ombrocsv 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ombrocsv 1.0.0
File Size Uploaded
ombrocsv-1.0.0.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ombrocsv 1.0.0
File Interpreter ABI Platform
ombrocsv-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.1 kB

Release files / ombrocsv-1.0.0.tar.gz

Download URL ombrocsv-1.0.0.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
900505f9de8c4efbfa6d1d1ae0141d4d8e675679102e8c9db41975e35e548cc8
BLAKE2b-256 checksum
How to use checksums
6da5a1343394a48814daedb4691458e1f6677755e57498d2e2025a370c5ec5f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5

Release files / ombrocsv-1.0.0-py3-none-any.whl

Download URL ombrocsv-1.0.0-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65ddb0b2bbd42d55336c24e081fba4715530d25167480db819a39ac50173f5ff
BLAKE2b-256 checksum
How to use checksums
7f6168b6418a0f38eee9a133814d84a02e91d3b24525416dc3651354b9f14141
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page