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

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

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

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

РКН: 5999153523
Download Telegram
⚙️ Библиотека Python: icecream

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


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

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤‍🔥4
⚙️ Библиотека 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