Skip to main content

Python library and CLI tool for converting data to different Python data classes

Project description

data2model

kdpv

Tests PyPI version

Python library and CLI tool for generating different Python data classes from data.

Supported data formats:

  • CSV

Supported data classes:

Requirements

  • Python 3.8+

Installation

pip install data2model

Usage

As library

import asyncio
import pathlib

from data_to_model import ModelGenerator


files = [
    {"input": pathlib.Path("example.csv"), "output": pathlib.Path("example.py")},
]


async def model_generator(input_file: pathlib.Path, output_file: pathlib.Path):
    mg = ModelGenerator(input_file)
    model = await mg.get_model()
    await model.save(output_file)


async def main():
    tasks = [model_generator(i["input"], i["output"]) for i in files]
    await asyncio.gather(*tasks)


if __name__ == "__main__":
    asyncio.run(main())

output

As CLI

from single file

$ cat data.csv
col1,col2
1,2
,2.0

$ data2model file -if data.csv -of data.py
$ cat data.py
# This file was generated by data_to_model.
from dataclasses import dataclass
from typing import Any, Dict, Optional, Union


@dataclass
class Data:
    col1: Optional[int]
    col2: Union[float, int]

    @classmethod
    def from_dict(cls, data: Dict[str, Any]) -> "Data":
        col1 = data["col1"]
        col2 = data["col2"]
        return cls(col1=col1, col2=col2)

    def to_dict(self) -> Dict[str, Any]:
        return {"col1": self.col1, "col2": self.col2}

from directory

$ data2model folder -if data -of models

$ ls data
data1.csv  data2.csv

$ ls models
data1.py  data2.py

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

data2model-0.2.1b0.tar.gz (10.0 kB view hashes)

Uploaded Source

Built Distribution

data2model-0.2.1b0-py3-none-any.whl (15.0 kB view hashes)

Uploaded Python 3

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