icecream — это минималистичная библиотека для отладки, которая выводит переменные и выражения вместе с их именами.
Полезна при быстрой проверке значений без написания дополнительных print() и форматирования.
from icecream import ic
def divide(a, b):
ic(a, b)
return a / b
result = divide(10, 2)
ic(result)
ic| a: 10, b: 2
ic| result: 5.0
➕ Преимущества:
pip install icecream
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤🔥4
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
➕ Преимущества:
pip install sorcery
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤🔥2
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}
➕ Преимущества:
filter
, map
, group_by
, sum
, reduce
, flatten
pip install PyFunctional
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4
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()
➕ Преимущества:
stdout/stderr
— шрифты не слетаютpip install yaspin
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍12
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']
Box.to_dict()
)pip install python-box
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥11👍7🤔2
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
➕ Преимущества:
pip install addict
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
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'}
➕ Преимущества:
dict
, list
, tuple
, lambda
)pip install glom
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4