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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file data2model-0.2.1b0.tar.gz.

File metadata

  • Download URL: data2model-0.2.1b0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.15.19-1-MANJARO

File hashes

Hashes for data2model-0.2.1b0.tar.gz
Algorithm Hash digest
SHA256 8002cd8706d47767db8c46d4fef4bb0f775d30019047fdac2614a6b1f5e10eb6
MD5 00a544919f2018c6e5e9bf9f7bfd7d93
BLAKE2b-256 f023603ddd4ff7db70f6fbe7675fcc03e37d9a0c4b1f7516f76f79476de59ff0

See more details on using hashes here.

File details

Details for the file data2model-0.2.1b0-py3-none-any.whl.

File metadata

  • Download URL: data2model-0.2.1b0-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.15.19-1-MANJARO

File hashes

Hashes for data2model-0.2.1b0-py3-none-any.whl
Algorithm Hash digest
SHA256 8a27e04547df0b67980173c02bfae81f57f5e599aaa5f7759a5ea41c457b7901
MD5 cb5a66fbd667cc31cf4f973332c51b91
BLAKE2b-256 fe7234124bb4dcf3980033f6921233d42ec30f287dcad6a7b51a946787c0963f

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