Одна строка — любой формат данных
Project description
py-morpher
Одна строчка — любой формат данных
from morph import morph
df = morph(data, to="pandas") # → pandas.DataFrame users = morph(data, to=User) # → List[User] (Pydantic) dicts = morph(users, to=dict) # → list[dict] / dict
Больше никаких ручных циклов, model_dump(), DataFrame(data), if-ов и «а вдруг список, а вдруг словарь». Одна функция — всё.
Установка
pip install py-morpher
10 секунд магии
from morph import morph from pydantic import BaseModel
Обычные данные (из API, JSON, БД…)
data = [ {"name": "Аня", "age": 17, "city": "Москва"}, {"name": "Дима", "age": 19, "city": "Питер"}, ]
1. В таблицу
df = morph(data, to="pandas") print(df) name age city 0 Аня 17 Москва 1 Дима 19 Питер
2. В умные объекты (с валидацией)
class User(BaseModel): name: str age: int city: str
users = morph(data, to=User) print(users[0].name) # Аня
3. Обратно в словари (для JSON/API)
clean_dicts = morph(users, to=dict) → [{'name': 'Аня', 'age': 17, 'city': 'Москва'}, ...]
4. Кривые данные? Сама поймает
bad = {"name": "Вася", "age": "age": "не число"} try: morph(bad, to=User) except Exception as e: print("Ошибка поймана →", e)
Поддерживаемые преобразования (пока)
Откуда → Куда,Работает?,Команда list[dict] → DataFrame,Yes,"to=""pandas"" или to=""df""" dict → DataFrame,Yes,"to=""pandas""" list[dict] → List[Model],Yes,`to=MyModel Model / List[Model] → dict,Yes,"to=dict или to=""json""" DataFrame → list[dict],Yes,to=dict любой примитив → dict,Yes,"to=dict (обернёт в {""data"": value})"
Почему это круто
Ноль ручного маппинга Автоматическая валидация через Pydantic Минимум кода — максимум читаемости Идеально для FastAPI, скриптов аналитики, парсеров, ботов
Автор: busyaaa_1 GitHub: https://github.com/busyaaa-1/py-morph/ PyPI: https://pypi.org/project/py-morpher/
Заливай, пользуйся, кайфуй. Твои данные теперь слушаются с одного слова.
⭐ Если понравилось — звёздочка на GitHub будет самой приятной благодарностью
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_morpher-1.0.1.tar.gz.
File metadata
- Download URL: py_morpher-1.0.1.tar.gz
- Upload date:
- Size: 2.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ee62cbc45abdcb0ff2f5d30803f05e3a54f14255fbca7aa0d056311dbb78943
|
|
| MD5 |
56f1978fd4457ce2a10bc454991f39a6
|
|
| BLAKE2b-256 |
7ad988727d21370ad2e33d97da48bab1588d455fe0a24097a0b5979f7b4c3910
|
File details
Details for the file py_morpher-1.0.1-py3-none-any.whl.
File metadata
- Download URL: py_morpher-1.0.1-py3-none-any.whl
- Upload date:
- Size: 3.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f85627ed7261d691e6d1c3234b9ecbd91edbc009eeea6e74b79ba4454c8af8b2
|
|
| MD5 |
f96302b08ff77ddad4068e781a35e724
|
|
| BLAKE2b-256 |
7d54d0d0bccff7449865caef12b7ad54f03209a53ef755b5952c027a993b22a3
|