PyLinux - Всё о Linux, Python и IT
10.4K subscribers
1.4K photos
39 videos
2 files
1.27K links
У нас ты найдешь 👇

- библиотеки и скрипты python
- инструменты linux
- полезный софт
- важнейшие новости из мира IT

Связь с админом: @ghostifix

Купить рекламу: https://telega.in/c/pylinux0

Архив: @pylinux0_archive
Download Telegram
⚙️ Библиотека Python: sorcery

sorcery — это удобная отладочная библиотека, которая позволяет печатать переменные с их именами с помощью магического print(expr) — без необходимости вручную писать имена.

Полезна, когда нужно быстро выводить значения переменных для отладки, но лень писать f"{var=}" или использовать ic().

⚙️ Пример использования

from sorcery import spell

@spell
def test():
name = "Alice"
age = 30
print(name, age) # Автоматически напечатает: name='Alice', age=30

test()

name='Alice', age=30


Преимущества:


🟢 Не требует вручную писать имена переменных
🟢 Работает как print() — просто и быстро
🟢 Можно использовать как декоратор или контекстный менеджер

✔️ Установка

pip install sorcery


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
⚙️ Библиотека Python: cloup

cloup — это расширение для Click, добавляющее поддержку группировки опций, взаимных зависимостей и контекстных ограничений.

Полезно, если ты создаёшь сложные CLI-инструменты с множеством параметров и хочешь сделать интерфейс логичным и защищённым от ошибок пользователя.

⚙️ Пример использования

import cloup
from cloup import option_group

@cloup.command()
@option_group(
"Авторизация",
cloup.option("--user", help="Имя пользователя"),
cloup.option("--token", help="API токен")
)
@option_group(
"Настройки вывода",
cloup.option("--verbose", is_flag=True),
cloup.option("--json", is_flag=True)
)
def cli(user, token, verbose, json):
print(f"👤 User: {user}, Token: {token}")
print(f"🔧 Verbose: {verbose}, JSON: {json}")

if __name__ == "__main__":
cli()


Преимущества:


🟢 Группировка опций по смыслу прямо в --help
🟢 Валидация зависимых и исключающих опций
🟢 Поддержка ограничений и логических условий

✔️ Установка

pip install cloup


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥2
⚙️ Библиотека Python: PyFunctional

PyFunctional — это мощная библиотека для декларативной обработки коллекций в стиле функционального программирования. Позволяет применять map, filter, reduce и другие операции к потокам данных с лаконичным синтаксисом.

Идеально подходит, если ты хочешь работать с данными в цепочках и писать код, близкий к Scala или LINQ.

⚙️ Пример использования

from functional import seq

# Работа с коллекцией: фильтрация, преобразование, агрегация
data = seq([1, 2, 3, 4, 5]) \
.filter(lambda x: x % 2 == 0) \
.map(lambda x: x * 10) \
.reduce(lambda x, y: x + y)

print(data) # 60

# Обработка строк и списков словарей
names = seq(["Alice", "Bob", "Charlie"]).map(str.upper).to_list()
print(names) # ['ALICE', 'BOB', 'CHARLIE']

users = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 20},
{"name": "Charlie", "age": 25}
]

youngest = seq(users).min_by(lambda u: u["age"])
print(youngest) # {'name': 'Bob', 'age': 20}


Преимущества:


🟢 Цепочки обработки данных без промежуточных переменных
🟢 Поддержка генераторов, списков, JSON и CSV
🟢 Функции как в Scala: filter, map, group_by, sum, reduce, flatten

✔️ Установка

pip install PyFunctional


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4
👩‍💻 Библиотека Python: yaspin

yaspin — это легковесная и мощная библиотека для отображения текстовых спиннеров в терминале во время длительных операций.

Отлично подходит для CLI-приложений — улучшает UX, показывает, что скрипт активно работает, и при этом не усложняет код.

⚙️ Пример использования
import time
from yaspin import yaspin

# Начало спиннера с текстом и цветом
with yaspin(text="Загрузка...", color="cyan") as spinner:
time.sleep(2) # длительная операция
spinner.ok(" ") # смена иконки при успешном завершении


Или как декоратор:
from yaspin import yaspin

@yaspin(text="Обработка данных...")
def process():
time.sleep(3)
return "done"

process()


Преимущества:


🟢 Более 70 анимаций (включая “shark”, “earth”) для визуального оформления
🟢 Полный контроль над стилем, цветом и положением спиннера
🟢 Яркий индикатор активности без зависимости от GUI
🟢 Безопасен при перенаправлении stdout/stderr — шрифты не слетают

✔️ Установка

pip install yaspin


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍12
👩‍💻 Библиотека Python: python-box

python-box — это удобная библиотека, которая превращает обычные словари в объекты с доступом по точке (dot notation). Позволяет обращаться к полям как к атрибутам, что упрощает чтение и работу с конфигами или API-ответами.

Идеально подходит для тех, кто устал писать dict["key"] и хочет более лаконичный стиль кода.

⚙️ Пример использования
from box import Box

data = {
"user": {
"name": "Alice",
"age": 30
},
"settings": {
"theme": "dark"
}
}

# Преобразуем в Box
box_data = Box(data)

# Доступ по точке
print(box_data.user.name) # Alice
print(box_data.settings.theme) # dark

# Изменения также работают
box_data.user.age = 31
print(box_data.user.age) # 31


Преимущества:


🟢 Удобный доступ к данным: obj.key вместо obj['key']
🟢 Поддержка вложенных структур — рекурсивно превращает dict в Box
🟢 Совместим с обычными словарями (можно обратно Box.to_dict())

✔️ Установка

pip install python-box


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥11👍7🤔2
👩‍💻 Библиотека Python: addict

addict — это минималистичная библиотека, превращающая обычные словари в объекты с доступом к ключам через точку (dot notation), создавая при этом вложенные поля на лету.

Идеальна, если ты хочешь создавать или модифицировать конфигурации, структуры данных или JSON-like объекты в удобной форме без лишней возни.

⚙️ Пример использования
from addict import Dict

config = Dict()

# Автоматически создаёт вложенные структуры
config.user.name = "Alice"
config.user.age = 30
config.theme.dark_mode = True

print(config) # {'user': {'name': 'Alice', 'age': 30}, 'theme': {'dark_mode': True}}

# Обратная совместимость
print(config['user']['name']) # Alice


Преимущества:


🟢 Автоматически создаёт вложенные ключи при доступе
🟢 Работает как обычный словарь — можно использовать [] и методы dict
🟢 Отлично подходит для генерации конфигов и динамичных структур

✔️ Установка

pip install addict


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
👩‍💻 Библиотека Python: glom

glom — это мощный инструмент для безопасного доступа, трансформации и извлечения данных из сложных вложенных структур (dict, list, JSON и др.).

Идеальна, если ты работаешь с вложенными данными из API, конфигов или сериализованных структур и хочешь избежать множества try/except и проверок ключей.

⚙️ Пример использования
from glom import glom

data = {
"user": {
"profile": {
"name": "Alice",
"contacts": {
"email": "alice@example.com"
}
}
}
}

# Извлекаем вложенное значение
name = glom(data, 'user.profile.name')
print(name) # Alice

# Значение по умолчанию, если путь не существует
phone = glom(data, 'user.profile.contacts.phone', default='N/A')
print(phone) # N/A

# Преобразование структуры
spec = {
"username": "user.profile.name",
"email": "user.profile.contacts.email"
}
user_info = glom(data, spec)
print(user_info) # {'username': 'Alice', 'email': 'alice@example.com'}


Преимущества:


🟢 Удобная работа с deeply nested структурами
🟢 Гибкие шаблоны и спецификации извлечения (dict, list, tuple, lambda)
🟢 Возможность задавать значения по умолчанию и валидировать структуру
🟢 Подходит для ETL, API data extraction и конфигураций

✔️ Установка

pip install glom


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4
👩‍💻 Библиотека Python: exrex

exrex — это генератор строк, соответствующих заданному регулярному выражению. В отличие от стандартной библиотеки re, он не проверяет соответствие строки паттерну, а генерирует строки, которые этому паттерну соответствуют.

⚙️ Пример использования
import exrex

# Сгенерировать одну случайную строку по шаблону
print(exrex.getone(r'[A-Z]{3}\d{2}'))
# ➔ Например: 'QWE84'

# Все возможные строки (для ограниченных шаблонов)
for s in exrex.generate(r'ab[1-2]'):
print(s)
# ➔ ab1, ab2

# Количество всех возможных совпадений (если конечное множество)
count = sum(1 for _ in exrex.generate(r'[A-B][1-3]'))
print(count) # ➔ 6

# Выводит шаблон в обратную сторону (reverse regex)
print(exrex.getone(r'(foo|bar){2}\d{1,2}'))


Преимущества:


🟢 Генерация строк по regex — удобно для автотестов и дебага
🟢 Поддержка большинства регулярных выражений Python
🟢 Умеет как случайную генерацию, так и полное перечисление
🟢 Может использоваться в CLI или импортироваться в скрипты

✔️ Установка

pip install exrex


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥2
👩‍💻 Библиотека Python: porcupine

porcupine — это минималистичная библиотека для создания простых интерактивных CLI-приложений с возможностью подсветки, автодополнения и асинхронного ввода.

Основана на prompt_toolkit, но упрощает его использование.

⚙️ Пример использования
from porcupine import interactive

@interactive
def shell():
while True:
cmd = input(">> ")
if cmd == "exit":
break
print(f"Вы ввели: {cmd}")

shell()


Преимущества:


🟢 Простой способ сделать интерактивный интерфейс
🟢 Работает в синхронном и асинхронном режиме
🟢 Упрощает создание REPL-утилит и внутренних CLI
🟢 Можно комбинировать с click, rich, prompt_toolkit

✔️ Установка

pip install porcupine


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤‍🔥2
👩‍💻 Библиотека Python: icontract

icontract — это надёжная библиотека для Design by Contract (контрактное программирование) в Python. Добавляет @require, @ensure, @invariant, что помогает явно описывать предусловия, постусловия и инварианты в коде.

Идеальна для повышения читаемости функции, обнаружения ошибок на ранних этапах и самодокументирования.

⚙️ Пример использования
import icontract

@icontract.require(lambda x: x >= 0)
@icontract.ensure(lambda result: result >= 0)
def sqrt(x: float) -> float:
return x ** 0.5

print(sqrt(16)) # ➔ 4.0
sqrt(-1) # ViolationError: x >= 0

@icontract.invariant(lambda self: self.balance >= 0)
class Account:
def __init__(self, balance: int) -> None:
self.balance = balance

@icontract.require(lambda self, amount: amount > 0)
@icontract.ensure(lambda self, OLD: self.balance == OLD.self.balance - amount)
def withdraw(self, amount: int) -> None:
self.balance -= amount


Преимущества:


🟢 Явный синтаксис предусловий, постусловий и инвариантов
🟢 Проверка контрактов во время выполнения
🟢 Интеграция с type hints и статической проверкой

✔️ Установка

pip install icontract


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥3
👩‍💻 Библиотека Python: pyrsistent

pyrsistent — это функциональная библиотека для работы с неизменяемыми (immutable) структурами данных: списками, словарями, множествами и др.

Идеально подходит для надёжных систем, где важно избежать нежелательных побочных эффектов и сохранить предыдущие состояния данных — например, в конфигурациях, многопоточности и тестах.

⚙️ Пример использования
from pyrsistent import pvector, pmap

# Неизменяемый список
v = pvector([1, 2, 3])
v2 = v.append(4)

print(v) # ➔ [1, 2, 3]
print(v2) # ➔ [1, 2, 3, 4]

# Неизменяемый словарь
m = pmap({"user": "alice", "active": True})
m2 = m.set("active", False)

print(m["user"]) # ➔ alice
print(m2["active"]) # ➔ False

# Все оригинальные данные остаются неизменными
print(m["active"]) # ➔ True


Преимущества:


🟢 Immutable-структуры: безопасны при изменениях и копировании
🟢 Удобно для undo/redo, откатов, детерминированных тестов
🟢 Поддержка вложенных структур и встроенная сериализация
🟢 Лёгкая интеграция в любой Python-проект (в отличие от dataclasses и copy.deepcopy)

✔️ Установка

pip install pyrsistent


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥6👍2
👩‍💻 Библиотека Python: drypython/returns

returns — это библиотека для написания чистого и безопасного функционального кода в Python. Она добавляет контейнеры вроде Result, Maybe, IO, и другие концепции из Haskell / Scala, помогая избавиться от None, try/except, и повышая предсказуемость кода.

Идеальна, если ты хочешь писать декларативно, безопасно и без side-effect'ов.

⚙️ Пример использования
from returns.result import Result, Success, Failure

def divide(x: int, y: int) -> Result[float, str]:
if y == 0:
return Failure("Деление на ноль")
return Success(x / y)

result = divide(10, 2).map(lambda x: x * 2)
print(result) # ➔ <Success: 10.0>

error = divide(10, 0).map(lambda x: x * 2)
print(error) # ➔ <Failure: 'Деление на ноль'>


Преимущества:


🟢 Result, Maybe, IO, RequiresContext — как в языках с strong typing
🟢 Отказоустойчивость без try/except
🟢 .map(), .bind() и .alt() для чистого, цепочного кода
🟢 Совместима с mypy и типизацией

✔️ Установка

pip install returns


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥2
👩‍💻 Библиотека Python: deal

deal — это декларативная библиотека контрактного программирования, которая позволяет добавлять к функциям проверяемые условия: предусловия, постусловия, инварианты, исключения и побочные эффекты.

Она не просто валидирует логику — она анализирует и тестирует ваш код, включая статическую проверку через mypy и deal lint.

⚙️ Пример использования
import deal

@deal.pre(lambda x: x >= 0)
@deal.post(lambda result: result >= 0)
def sqrt(x: float) -> float:
return x ** 0.5

print(sqrt(9)) # ✔️
print(sqrt(-4)) # deal.PreContractError

@deal.raises(ZeroDivisionError)
def div(a, b):
return a / b


Преимущества:


🟢 @pre, @post, @raises — чёткие и читаемые контракты
🟢 Статический анализ с deal lint — предупреждает ошибки ещё до запуска
🟢 Поддержка mypy, pytest, hypothesis
🟢 Обнаружение побочных эффектов: например, чтение/запись в глобальные переменные

✔️ Установка

pip install deal


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8👍5
👩‍💻 Библиотека Python: jaxtyping

jaxtyping — это библиотека для декларативного описания размерностей и типов массивов (numpy, torch, jax) прямо в type hints. Она усиливает проверку типов при работе с тензорами, помогая ловить ошибки ещё до выполнения кода.

Идеальна для научных вычислений, ML/AI, CV — когда важна строгая типизация массивов и предсказуемость размерностей.


⚙️ Пример использования
from jaxtyping import Float, Int64
import torch
from typing import Callable

# Функция принимает Float32 тензор размером (batch, 3)
def normalize(x: Float[torch.Tensor, "batch 3"]) -> Float[torch.Tensor, "batch 3"]:
return x / x.norm(dim=1, keepdim=True)

# Пример с проверкой
x = torch.randn(32, 3)
normalize(x) #


Преимущества:


🟢 Проверка shape и dtype прямо в аннотациях
🟢 Поддержка PyTorch, NumPy, JAX
🟢 Совместима с mypy и runtime type checking
🟢 Обнаруживает ошибки в размере входных данных при разработке моделей

✔️ Установка

pip install jaxtyping


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👩‍💻 Библиотека Python: pyinstrument

pyinstrument — это минималистичный, но мощный профилировщик производительности. Он показывает, что именно замедляет выполнение Python-программы, и в каком участке кода тратится больше всего времени — в виде читаемого дерева вызовов.

Идеален для быстрого анализа "узких мест" в скриптах, API, CLI и любом CPU-bound коде.


⚙️ Пример использования
from pyinstrument import Profiler

profiler = Profiler()
profiler.start()

# код, который нужно проанализировать
total = 0
for i in range(1000000):
total += i ** 0.5

profiler.stop()
profiler.print()


Timer started at: 15:20:42
Total time: 0.42s

Program:
0.420s [self] your_script.py:7
└─ 0.420s your_script.py:10 total += i ** 0.5


Преимущества:


🟢 Визуальное дерево вызовов прямо в терминале
🟢 Работает без модификации кода — можно обернуть main()
🟢 Поддерживает HTML-отчёты для браузера
🟢 Удобен для интеграции с CI и pytest

✔️ Установка

pip install pyinstrument


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
👩‍💻 Библиотека Python: scalene

scalene — это высокоточный профилировщик Python, который измеряет использование CPU, памяти и даже GPU по строкам кода. В отличие от стандартных профилировщиков, он почти не замедляет выполнение и даёт точную картину “узких мест”.

Идеален для оптимизации тяжёлых вычислений, анализа утечек памяти и ускорения кода.


⚙️ Пример использования

# Запуск профилировщика прямо из терминала
# Анализ CPU и памяти для скрипта myscript.py
python -m scalene myscript.py

Line │ CPU % │ Memory MB │ Memory %
─────────────────────────────────────────────────────────────
10 │ 75.0% │ 120.5 │ 65.2% total += i ** 0.5
15 │ 20.0% │ 20.0 │ 10.8% data.append(x * 2)



Преимущества:


🟢 Анализ CPU, памяти и GPU по строкам кода
🟢 Почти не влияет на скорость выполнения программы
🟢 Работает с многопоточными и асинхронными задачами
🟢 Генерирует цветные HTML- и текстовые отчёты

✔️ Установка

pip install scalene


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
👩‍💻 Библиотека Python: plumbum

plumbum — это мощный инструмент для написания системных скриптов на Python. Она позволяет выполнять команды оболочки, управлять путями и удалёнными машинами через SSH — всё в стиле "shell-like" синтаксиса.

Отличная альтернатива bash-скриптам: удобно, кроссплатформенно, с полной силой Python.


⚙️ Пример использования

from plumbum import local

# Выполнение shell-команды
ls = local['ls']
print(ls('-l'))

# Комбинирование команд как в shell
print((local['ls']['-la'] | local['grep']['py'])())

# Работа с файлами
from plumbum.cmd import cp, rm
cp('a.txt', 'b.txt')
rm('-f', 'b.txt')

# Удалённое выполнение по SSH
from plumbum.machines import SshMachine
with SshMachine('remote.host.com', user='user') as remote:
print(remote['uname']('-a'))



Преимущества:


🟢 Shell-команды прямо в Python (включая пайпы и редиректы)
🟢 Единый API для локального и удалённого выполнения
🟢 Удобные утилиты: path, FG, run(), tmux, rsync, screen
🟢 Безопаснее и выразительнее, чем subprocess + os.system

✔️ Установка

pip install plumbum


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
👩‍💻 Библиотека Python: addict

addict — это лёгкая библиотека, которая превращает словари в объекты с доступом к полям через точку. Позволяет удобно работать с deeply nested структурами, создавать их "на лету" и избегать лишних проверок наличия ключей.

Идеальна для конфигураций, API-ответов, JSON/YAML-данных, когда хочется лаконичный и читаемый код.


⚙️ Пример использования

from addict import Dict

cfg = Dict()
cfg.server.host = "localhost"
cfg.server.port = 8080

print(cfg)
# ➔ {'server': {'host': 'localhost', 'port': 8080}}

print(cfg.server.host)
# ➔ localhost

# Автоматически создаёт вложенные структуры
cfg.database.user = "admin"
print(cfg.database)
# ➔ {'user': 'admin'}

# Можно легко конвертировать в dict
data = cfg.to_dict()



Преимущества:


🟢 Автоматическое создание вложенных ключей
🟢 Доступ к данным как к атрибутам (obj.key)
🟢 Простая сериализация в dict/JSON
🟢 Удобно для быстрой работы с API-данными и конфигами

✔️ Установка

pip install addict


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤‍🔥3🗿1
👩‍💻 Библиотека Python: bidict

bidict — это двунаправленный словарь для Python: быстрый поиск как по ключам, так и по значениям, с гарантией уникальности пар и удобным обратным отображением через .inv.

Идеальна для задач «A ↔️ B»: коды и имена, ID и алиасы, HTTP-статусы и описания.


⚙️ Пример использования

from bidict import bidict, frozenbidict

# Двунаправленное отображение
colors = bidict({'red': '#f00', 'green': '#0f0', 'blue': '#00f'})

print(colors['red']) # ➔ #f00
print(colors.inv['#0f0']) # ➔ green (обратный вид)

# Добавление пары остается консистентным в обе стороны
colors['yellow'] = '#ff0'
print(colors['yellow'], colors.inv['#ff0']) # ➔ #ff0 yellow

# Попытка дублировать значение — ошибка (сохранение биекции)
try:
colors['scarlet'] = '#f00'
except ValueError as e:
print(e) # ➔ Value already present: '#f00'

# Неизменяемая версия для безопасного шаринга
immutable = frozenbidict({'a': 1, 'b': 2})
# immutable['c'] = 3 # ➔ TypeError



Преимущества:


🟢 Быстрый двусторонний поиск ключ↔️значение
🟢 Гарантия уникальности и целостности соответствий
🟢 Удобные .inv и frozenbidict (обратный и неизменяемый виды)
🟢 Совместим со стандартным API dict и порядком вставки

✔️ Установка

pip install bidict


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
👩‍💻 Библиотека Python: dacite

dacite — это утилита для преобразования словарей (например, JSON) в экземпляры dataclass с поддержкой вложенных структур, конвертации типов, значений по умолчанию и хуков для кастомного парсинга.

Идеальна для безопасной загрузки конфигов и API-ответов прямо в строго типизированные модели dataclass.


⚙️ Пример использования

from dataclasses import dataclass
from typing import Optional, List
from datetime import datetime
from dacite import from_dict, Config

@dataclass
class Profile:
created_at: datetime
tags: List[str]

@dataclass
class User:
id: int
name: str
is_active: bool = True
profile: Optional[Profile] = None

raw = {
"id": "42",
"name": "Alice",
"profile": {
"created_at": "2025-08-01T10:00:00Z",
"tags": ["admin", "team"]
}
}

# Хук для преобразования ISO-строки в datetime
cfg = Config(type_hooks={
datetime: lambda s: datetime.fromisoformat(s.replace("Z", "+00:00"))
})

user = from_dict(User, raw, config=cfg)
print(user) # ➔ User(id=42, name='Alice', is_active=True, profile=Profile(...))
print(user.profile.created_at) # ➔ 2025-08-01 10:00:00+00:00



Преимущества:


🟢 Автоконвертация типов (str→int, str→datetime и т.п.) через type_hooks
🟢 Поддержка вложенных dataclass и Optional/Union полей
🟢 Значения по умолчанию и пропуск отсутствующих полей

✔️ Установка

pip install dacite


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2