globre — это небольшая, но мощная библиотека для гибкой фильтрации путей и строк с помощью расширенных glob-шаблонов, включая
**
, *
, ?
и группы ({a,b}
).Подходит для инструментов, которые обрабатывают файловые пути, конфигурации или фильтры — особенно когда стандартного
fnmatch
недостаточно.from globre import compile
# Скомпилируем шаблон
pattern = compile("src/**/tests/{test_*.py,test_*.txt}")
# Проверка соответствия путей
print(pattern.match("src/app/tests/test_utils.py")) # True
print(pattern.match("src/lib/tests/test_data.txt")) # True
print(pattern.match("src/lib/tests/test_data.json")) # False
➕ Преимущества:
**
и групп {a,b}
как в bashpip install globre
Please open Telegram to view this post
VIEW IN TELEGRAM
rich-click — это библиотека для создания красивых и удобных командных интерфейсов на основе Click с поддержкой форматированного вывода и стилизованных сообщений.
Подходит для разработчиков CLI-приложений, которым важна эстетика и удобство использования команд.
import click
from rich_click import rich_click
# Настройка rich-click
rich_click.STYLE_HELPTEXT = "bold cyan"
rich_click.STYLE_OPTION = "bold yellow"
@click.command()
@click.option("--name", help="Ваше имя", default="Пользователь")
def greet(name):
"""Простой приветственный скрипт."""
click.echo(f"👋 Привет, {name}!")
if __name__ == "__main__":
greet()
➕ Преимущества:
pip install rich-click
Please open Telegram to view this post
VIEW IN TELEGRAM
diskcache — это библиотека для кэширования данных на диске с поддержкой высокопроизводительных операций чтения и записи.
Она позволяет использовать диск как быстрый кэш при недостатке оперативной памяти или для долговременного хранения промежуточных данных.
from diskcache import Cache
# Создаём кэш в указанной директории
cache = Cache('/tmp/mycache')
# Сохранение данных в кэше
cache['username'] = 'Alice'
cache['score'] = 42
# Извлечение данных из кэша
print(cache['username']) # Alice
print(cache['score']) # 42
# Удаление данных
del cache['username']
# Закрытие кэша
cache.close()
➕ Преимущества:
pip install diskcache
Please open Telegram to view this post
VIEW IN TELEGRAM
pydash — это мощная утилита для работы с коллекциями, объектами и функциональным программированием в стиле JavaScript-библиотеки lodash.
Она упрощает манипуляцию данными благодаря богатому набору готовых функций.
import pydash
# Группировка данных по ключу
data = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}, {"name": "Charlie", "age": 30}]
grouped = pydash.group_by(data, "age")
print(grouped)
# {30: [{'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 30}], 25: [{'name': 'Bob', 'age': 25}]}
# Глубокое получение значений из вложенных структур
nested = {"user": {"profile": {"name": "Alice"}}}
name = pydash.get(nested, "user.profile.name")
print(name) # Alice
# Функциональные цепочки (Chaining)
result = (
pydash.chain([1, 2, 3, 4])
.map(lambda x: x * 2)
.filter(lambda x: x > 4)
.value()
)
print(result) # [6, 8]
➕ Преимущества:
pip install pydash
Please open Telegram to view this post
VIEW IN TELEGRAM
dirtyjson — это небольшая, но удобная библиотека для парсинга "грязного" JSON, который не соответствует стандарту (например, с одинарными кавычками, запятыми на конце или комментариями).
Полезна при работе с логами, конфигами и API, которые возвращают невалидный JSON.
import dirtyjson
# Некорректный JSON (одинарные кавычки, запятая на конце)
raw_data = """
{
'name': 'Alice',
'age': 30,
}
"""
# Преобразование в Python-словарь
parsed = dirtyjson.loads(raw_data)
print(parsed) # {'name': 'Alice', 'age': 30}
➕ Преимущества:
json.loads()
pip install dirtyjson
Please open Telegram to view this post
VIEW IN TELEGRAM
PySnooper — это простая отладочная библиотека, которая автоматически логирует выполнение функций построчно.
Полезна для отслеживания значений переменных без необходимости вручную расставлять print() или запускать полноценный отладчик.
import pysnooper
@pysnooper.snoop()
def calculate_total(prices):
total = 0
for price in prices:
total += price
return total
result = calculate_total([10, 20, 30])
print("Итог:", result)
•
Текущее значение переменных,•
Каждую выполняемую строку,•
Финальный результат функции.➕ Преимущества:
@snoop("log.txt")
)pip install pysnooper
Please open Telegram to view this post
VIEW IN TELEGRAM
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
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
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
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
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