Python library and CLI tool for converting data to different Python data classes
Project description
data2model
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())
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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8002cd8706d47767db8c46d4fef4bb0f775d30019047fdac2614a6b1f5e10eb6 |
|
MD5 | 00a544919f2018c6e5e9bf9f7bfd7d93 |
|
BLAKE2b-256 | f023603ddd4ff7db70f6fbe7675fcc03e37d9a0c4b1f7516f76f79476de59ff0 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a27e04547df0b67980173c02bfae81f57f5e599aaa5f7759a5ea41c457b7901 |
|
MD5 | cb5a66fbd667cc31cf4f973332c51b91 |
|
BLAKE2b-256 | fe7234124bb4dcf3980033f6921233d42ec30f287dcad6a7b51a946787c0963f |