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

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

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

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

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

Boltons — это набор чистых и простых утилит, расширяющих стандартную библиотеку Python. Включает всё: от структур данных и форматирования URL до удобных итераторов и функций для работы с временем.

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

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

from boltons.dictutils import OMD

# OrderedMultiDict — словарь, сохраняющий порядок и поддерживающий дубликаты ключей
data = OMD()
data.add('status', 'ok')
data.add('status', 'warning')

print(data.getlist('status')) # ['ok', 'warning']


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

🟢 Безопасная альтернатива стандартной библиотеке
🟢 Удобные словари, списки, iterutils, timeutils, strutils
🟢 Отлично документирована и активно поддерживается

✔️ Установка

pip install boltons


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

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

Funcy — это функциональная библиотека для Python, которая расширяет возможности работы с итерациями, коллекциями, функциями и декораторами. Делает код компактнее и выразительнее.

Подходит разработчикам, которые любят функциональный стиль и хотят писать лаконичный, читаемый код.

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

from funcy import memoize, select, walk

# Мемоизация функции — кэширует результат
@memoize
def slow_add(a, b):
print("Calculating...")
return a + b

print(slow_add(2, 3)) # Calculating... 5
print(slow_add(2, 3)) # 5 (из кэша)

# Фильтрация словаря по условию
data = {"a": 1, "b": 2, "c": 3}
even = select(lambda k_v: k_v[1] % 2 == 0, data)
print(even) # {'b': 2}

# Преобразование значений в словаре
new_data = walk(lambda k, v: (k.upper(), v * 10), data)
print(new_data) # {'A': 10, 'B': 20, 'C': 30}


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

🟢 Умные декораторы: memoize, cache, retry
🟢 Улучшенные функции map/filter для словарей и списков
🟢 Поддержка каррирования, частичного применения и композиции

✔️ Установка

pip install funcy


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

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

Unidecode — это легковесная библиотека, которая транслитерирует Unicode-строки в ASCII. Очень полезна, когда нужно привести текст к "читаемой" ASCII-форме — например, для генерации URL, файловых имён или логирования.

Подходит разработчикам, работающим с многоязычными данными, когда важно избежать проблем с кодировками или символами вне ASCII.

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

from unidecode import unidecode

# Простой пример: кириллица
text = "Привет, мир!"
print(unidecode(text)) # Privet, mir!

# Японский текст
japanese = "こんにちは"
print(unidecode(japanese)) # konnichiha

# Транслитерация смешанного текста
mixed = "Café déjà vu — это déjà-vu"
print(unidecode(mixed)) # Cafe deja vu - eto deja-vu


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

🟢 Простая замена не-ASCII символов
🟢 Отлично подходит для генерации слагов и безопасных идентификаторов
🟢 Работает "из коробки", без дополнительных зависимостей

✔️ Установка

pip install unidecode


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

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

pyrsistent — это функциональная, неизменяемая (immutable) структура данных для Python. Она даёт списки, словари и множества, которые нельзя изменить после создания. Полезна в системах с высокой надёжностью, например, при написании бизнес-логики или обработке данных без побочных эффектов.

Подходит разработчикам, которым важны предсказуемость, чистота кода и потокобезопасность.

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

from pyrsistent import pmap, pvector

# Неизменяемый словарь
user = pmap({"name": "Alice", "age": 30})
updated_user = user.set("age", 31)

print(user) # pmap({'name': 'Alice', 'age': 30})
print(updated_user) # pmap({'name': 'Alice', 'age': 31})

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

print(items) # pvector([1, 2, 3])
print(new_items) # pvector([1, 2, 3, 4])


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

🟢 Иммутабельность по умолчанию — безопасно для многопоточности
🟢 Поддержка структур: pmap, pvector, pset, plist и др.
🟢 Прекрасно сочетается с функциональным стилем и библиотеками типа toolz или attr

✔️ Установка

pip install pyrsistent


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

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

addict — это удобная библиотека для работы со словарями в Python, позволяющая обращаться к ключам как к атрибутам. Полезна для написания чистого и читаемого кода при работе с конфигурациями, JSON или данными из API.

Подходит разработчикам, которым надоело писать dict['key'] и хочется более лаконичного синтаксиса.

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

from addict import Dict

# Создаём "умный" словарь
config = Dict()
config.database.host = "localhost"
config.database.port = 5432

print(config)
# {'database': {'host': 'localhost', 'port': 5432}}

# Получаем данные как атрибуты
print(config.database.host) # localhost


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

🟢 Автоматически создаёт вложенные ключи
🟢 Упрощает работу с JSON и конфигами
🟢 Отлично подходит для гибкой структуры данных

✔️ Установка

pip install addict


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

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

Box — это удобная библиотека для работы со словарями в стиле dot-access (доступ к ключам как к атрибутам). Позволяет обращаться к данным через точку, при этом оставаясь совместимой с обычными dict.

Подходит разработчикам, которые хотят сочетать привычный синтаксис словаря и удобство обращения через атрибуты.

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

from box import Box

# Создаем Box-словарь
config = Box({
"database": {
"host": "localhost",
"port": 5432
}
})

print(config.database.host) # localhost
print(config["database"]["port"]) # 5432

# Можно добавлять новые значения как атрибуты
config.api.token = "secret_token"

print(config.api.token) # secret_token


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

🟢 Поддержка вложенных структур с dot-access
🟢 Полностью совместим с обычными dict
🟢 Можно легко преобразовать обратно в dict

✔️ Установка

pip install python-box


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

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

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

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

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

from bidict import bidict

# Создаём двунаправленный словарь
b = bidict({"a": 1, "b": 2})

# Доступ по ключу
print(b["a"]) # 1

# Обратный доступ — по значению
print(b.inv[1]) # 'a'

# Добавление новых пар
b["c"] = 3
print(b.inv[3]) # 'c'


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

🟢 Быстрый доступ в обе стороны
🟢 Исключает дублирование значений (в отличие от обычных dict)
🟢 Подходит для создания уникальных соответствий (например, id ↔️ name)

✔️ Установка

pip install bidict


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

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

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

Подходит разработчикам, создающим удобные интерфейсы командной строки или оформляющим вывод фоновых операций.

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

from halo import Halo
import time

# Инициализируем спиннер
spinner = Halo(text='Обрабатываем данные...', spinner='dots')

spinner.start()
time.sleep(3) # Имитация длительной операции
spinner.succeed('Готово! ')


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

🟢 Удобный и наглядный способ показать прогресс
🟢 Множество стилей спиннеров (dots, line, bounce...)
🟢 Поддержка автоматического управления статусами (succeed, fail)

✔️ Установка

pip install halo


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

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

clint — это лёгкая библиотека для создания красивых CLI-приложений. Она предлагает удобные инструменты для работы с цветным выводом, прогресс-барами и простым вводом пользователя.

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

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

from clint.textui import colored, puts, prompt, progress

# Цветной вывод
puts(colored.green("Успешно выполнено!"))
puts(colored.red("Произошла ошибка."))

# Прогресс-бар
for i in progress.bar(range(100)):
pass # имитация работы

# Запрос ввода
name = prompt.query("Введите ваше имя")
puts(f"Привет, {name}!")


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

🟢 Простая работа с цветами в терминале
🟢 Удобные прогресс-бары и запросы ввода
🟢 Минимальные зависимости, лёгкая интеграция в проекты

✔️ Установка

pip install clint


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

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

anytree — это удобная библиотека для создания, обхода и визуализации древовидных структур данных. Позволяет просто описывать и манипулировать иерархиями, а также красиво их выводить.

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

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

from anytree import Node, RenderTree

# Создание дерева
root = Node("Корень")
child1 = Node("Дочерний 1", parent=root)
child2 = Node("Дочерний 2", parent=root)
subchild1 = Node("Поддочерний 1", parent=child1)

# Отображение дерева
for pre, fill, node in RenderTree(root):
print(f"{pre}{node.name}")

Корень
├── Дочерний 1
│ └── Поддочерний 1
└── Дочерний 2


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

🟢 Простое описание иерархии с помощью связей parent/children
🟢 Красивый ASCII-вывод дерева "из коробки"
🟢 Удобная работа с обходом и фильтрацией узлов

✔️ Установка

pip install anytree


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

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

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} как в bash
🟢 Компилируемые шаблоны с высокой производительностью
🟢 Идеально подходит для CLI-утилит и систем сборки

✔️ Установка

pip install globre


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

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

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()


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

🟢 Эстетичный вывод командной помощи и ошибок
🟢 Поддержка тем и форматирования с Rich
🟢 Интуитивная интеграция с Click

✔️ Установка

pip install rich-click


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

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

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


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

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

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


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

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

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 с синтаксическими ошибками
🟢 Удобно при обработке конфигов, логов и нестандартизированных API
🟢 Заменяет ручную чистку строк перед json.loads()

✔️ Установка

pip install dirtyjson


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

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

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


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

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