Python Community
12.9K subscribers
1.24K photos
33 videos
15 files
729 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
🐍 Python-библиотеки для Linux-администраторов

Набор must-have инструментов, которые помогут автоматизировать системные задачи, управлять файлами, процессами и сетью:

🔸 os — работа с файловой системой, путями, переменными окружения
https://docs.python.org/3/library/os.html

🔸 subprocess — запуск внешних команд и управление ими
https://docs.python.org/3/library/subprocess.html

🔸 psutil — мониторинг процессов, ресурсов, дисков, сети
https://pypi.org/project/psutil/

🔸 platform — информация об ОС, архитектуре, версии Python
https://docs.python.org/3/library/platform.html

🔸 socket — сетевые соединения и сокеты
https://docs.python.org/3/library/socket.html

🔸 pwd — доступ к информации о пользователях Unix
https://docs.python.org/3/library/pwd.html

🔸 pathlib — удобная работа с путями в ООП-стиле
https://docs.python.org/3/library/pathlib.html

🔸 shutil — копирование, удаление, архивация файлов и директорий
https://docs.python.org/3/library/shutil.html

🔸 tarfile — создание и извлечение `.tar`-архивов
https://docs.python.org/3/library/tarfile.html

📦 Эти модули — основа для написания удобных и мощных CLI-утилит, скриптов и системных инструментов.



@Python_Community_ru
🐍 Ошибка с изменяемыми значениями по умолчанию»**

🎯 Цель: Найти и объяснить баг, который не вызывает исключений, но ломает логику приложения

📍 Ситуация:

У тебя есть функция, которая логирует события с метаданными. По умолчанию метаданные можно не передавать:


def log_event(event, metadata={}):
metadata["event"] = event
print(metadata)


На первый взгляд — всё работает. Но при многократных вызовах функции происходит что-то странное:


log_event("start")
log_event("stop")
log_event("error", {"code": 500})
log_event("retry")


👀 Вывод:

{'event': 'start'}
{'event': 'stop'}
{'code': 500, 'event': 'error'}
{'code': 500, 'event': 'retry'}


🔍 Что пошло не так? Почему code: 500 появляется там, где его быть не должно?

🧩 Задача:

1. Найди и объясни источник бага
2. Почему Python не выбрасывает ошибку?
3. Как проверить, что дефолтный аргумент сохраняет состояние между вызовами?
4. Как это исправить безопасно и "по питоновски"?
5. Где ещё может проявиться аналогичный эффект?


🛠 Разбор и решение:

🔸 Причина:
Изменяемое значение (`dict`) используется как значение по умолчанию.
В Python значения по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.

То есть metadata={} создаётся один раз и сохраняется между вызовами, если параметр не передан.

🔸 Проверка:

def f(d={}):
print(id(d))
d["x"] = 1
print(d)

f()
f()

Вы увидишь одинаковые id(d) — значит, используется тот же объект.

🔸 Решение (правильный способ):

def log_event(event, metadata=None):
if metadata is None:
metadata = {}
metadata["event"] = event
print(metadata)


Теперь при каждом вызове создаётся новый словарь, и code: 500 не "протекает" в следующие вызовы.

🔸 Где ещё встречается:
- Списки: items=[]
- Множества: visited=set()
- Объекты пользовательских классов

📌 Вывод:
Изменяемые значения по умолчанию — одна из самых частых ошибок в Python. Она не вызывает исключений, но может незаметно повредить данные. Всегда используй None + инициализацию внутри функции для изменяемых типов.



@Python_Community_ru
🕵️‍♂️ ExeRay — статический анализатор PE-файлов на Python

ExeRay — это удобный инструмент для реверс-инженеров, исследователей безопасности и malware-аналитиков.
Он проводит статический анализ исполняемых файлов .exe (PE-файлов) и визуализирует их структуру в удобной форме.

🧩 Что умеет ExeRay:

Анализировать PE-файл и извлекать:
- Заголовки, секции, импорты/экспорты
- Таблицы ресурсов
- Используемые API и библиотеки
- Suspicious patterns и аномалии

Генерировать отчёт в HTML
Работает полностью офлайн
Поддержка анализа несколькими методами (pefile + custom парсеры)

📦 Пример использования:


python main.py -f malware.exe


После чего ты получаешь красивый и подробный отчёт по всем ключевым параметрам PE-файла.


💻 Технологии:

- Python 3
- pefile, matplotlib, pyvis для графов зависимостей
- Простая CLI и понятный код — легко расширить под свои задачи

🧠 Кому подойдёт:

- Reverse Engineers
- Malware Analysts
- Red/Blue Teams
- Python-разработчикам, интересующимся PE-структурой и безопасностью

🔥 Если ты работаешь с .exe, и хочешь быстро понять, что внутри — ExeRay сэкономит часы ручного анализа.

📁 Репозиторий (https://github.com/MohamedMostafa010/ExeRay):



@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Physics Simulations

Набор симуляций физических явлений, написанных на Python с использованием Pygame. Эти симуляции создавались в образовательных целях и охватывают различные концепции, включая:

- Законы Ньютона
- Гравитацию
- Силы и трение
- Простую гармоническую модуляцию
- И многое другое

Для запуска симуляций необходимо установить зависимости:


pip install -r requirements.txt


Затем можно запустить нужный скрипт напрямую, например:


python gravity_sim.py


Каждый файл представляет отдельную симуляцию, сопровождаемую визуализацией с помощью Pygame.

📌 Github (https://github.com/gemsjohn/physics-sims)



@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Полезный хак для Python разработчиков.


import dis

def explain_bytecode(fn):
print(f"Анализ байткода функции: {fn.__name__}\n")
dis.dis(fn)

Пример:
def tricky(x):
return x * 2 + 1 if x > 0 else x - 1

explain_bytecode(tricky)

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

• отладки «странного» поведения функций
• анализа производительности на уровне Python VM
• изучения, как Python интерпретирует тернарные выражения, замыкания, генераторы и т. д.

Модуль dis встроен в стандартную библиотеку и часто игнорируется — но это мощный инструмент для продвинутых разработчиков и авторов интерпретаторов.



@Python_Community_ru
🔥1
🤖 AI, который сам пишет код — умный агент на базе LangGraph

Проект находится в активной разработке и уже умеет автоматизировать весь цикл: от планирования проекта до генерации кода. Всё построено на надёжных multi-agent workflow'ах с использованием LangGraph.


🚀 Что делает агент:

🧠 Понимает задачу и строит план
AI-архитектор анализирует требования и создаёт пошаговый план разработки.

💻 Генерирует и редактирует код
Dev-агент аккуратно применяет изменения в кодовой базе, редактируя конкретные файлы.

🔁 Разделяет роли — надёжнее работает
Отдельные агенты для планирования и реализации — меньше ошибок и больше контроля.

🧬 Понимает структуру проекта
Использует tree-sitter и семантический поиск, чтобы ориентироваться в коде как человек.

📦 Работает по шагам
Разбивает задачи на мелкие изменения — удобно для review и безопасно для CI.

💡 Если интересуешься автоматизацией разработки, AI-помощниками и мультиагентными системами — стоит попробовать уже сейчас.

Github (https://github.com/langtalks/swe-agent)




#AI #AutoCoding #LangGraph #DevTools #MultiAgent #CodeAutomation

@Python_Community_ru
💎 Quadratic — электронные таблицы нового поколения с кодом и ИИ. Проект предоставляет гибридную среду, где формулы, Python и SQL работают бок о бок, позволяя анализировать миллионы строк прямо в браузере без потерь производительности.

Особенность инструмента — технологичный стек (Rust, WebAssembly, WebGL). Интерфейс с поддержкой 60 FPS и масштабированием как в Figma делает работу с большими данными неожиданно плавной.

🤖 GitHub (https://github.com/quadratichq/quadratic)



@Python_Community_ru
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🎥 Self Forcing: генерация видео в реальном времени с RTX 4090

Новая техника Self Forcing позволяет обучать видеодиффузионные модели "думать как на инференсе" ещё во время обучения.

🧠 Что делает:
▪️ Имитирует autoregressive-инференс с KV-кэшированием прямо во время обучения
▪️ Устраняет расхождение train/test distributions
▪️ Достигает качества SOTA-моделей, но с реальным временем генерации
▪️ Работает даже на одной RTX 4090

⚙️ Требования:
• GPU с 24 GB+ памяти (4090 / A100 / H100 протестированы)
• Linux
• 64 GB RAM
• Другие конфигурации могут работать, но не проверялись

📌 Выход: стриминговое видео — кадр за кадром, без задержек, на одном потребительском GPU.

💡 Self Forcing — шаг к видеогенерации без лага и мегакластеров.

📦 Основан нп Wan 2.1

💻 Требования: минимум 24 ГБ VRAM и 64 ГБ RAM
🧪 Код открыт, всё работает (пока) только под Linux

Github (https://github.com/assetnote/newtowner)



@Python_Community_ru
🖥 Two Claps Open — инструмент, который открывает Chrome или активирует голосового помощника, когда пользователь хлопает в ладоши два раза 👏

💬 Как это работает:
• Слушает микрофон через pyaudio
• Реагирует на два быстрых хлопка подряд
• Открывает браузер или помощника

Возможности зависят только от фантазии:
• Включай музыку или YouTube по хлопку
• Открывай рабочий дашборд при запуске ПК
• Управляй умным домом — включай свет или открывай дверь хлопком


Чтобы понять, как "выглядит" хлопок в аудиосигнале, разработчик записал его и провёл преобразование Фурье. Оказалось, что основная энергия хлопка сосредоточена в диапазоне 1.4–1.8 кГц. Дальше был настроен полосовой фильтр, чтобы выделять только этот диапазон и отсекать шум.

После фильтрации система отслеживает пики в сигнале. Если зафиксировано три хлопка подряд с минимальным интервалом, автоматически запускается Chrome (или любая команда на ваш выбор).

Реализуется в реальном времени — просто и удобно для управления без рук!

Github (https://github.com/Yutarop/two_claps_open)



@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ MicroVMS — новая платформа для запуска кода от AI-агентов с максимальной безопасностью и скоростью.

В отличие от Docker и других тяжелых решений, MicroVMS использует легковесные песочницы для быстрой изоляции, мгновенного старта и простого управления.

● Поддержка разных сред: Python, Node.js и другие
● Идеально для AI-агентов — разработка и запуск без лишних сложностей
● Удобная система управления проектами — настройка песочниц в пару кликов

Если вы хотите запускать код AI-агентов быстро, безопасно и удобно — обратите внимание на MicroVMS.

pip install microsandbox

🔗 Github (https://github.com/microsandbox/microsandbox)




@Python_Community_ru
🖥 py-pglite — PostgreSQL без установки, тестируй как с SQLite!

py-pglite — обёртка PGlite для Python, позволяющая запускать настоящую базу PostgreSQL прямо при тестах. Без Docker, без настройки — просто импортируй и работай.

📌 Почему это круто:
- 🧪 Ноль конфигурации: никакого Postgres и Docker, только Python
- Молниеносный старт: 2–3 с против 30–60 с на традиционные подходы :contentReference[oaicite:2]{index=2}
- 🔐 Изолированные базы: новая база для каждого теста — чисто и безопасно
- 🏗️ Реальный Postgres: работает с JSONB, массивами, оконными функциями
- 🔌 Совместимость: SQLAlchemy, Django, psycopg, asyncpg — любая связка :contentReference[oaicite:3]{index=3}

💡 Примеры установки:

pip install py-pglite
pip install py-pglite[sqlalchemy] # SQLAlchemy/SQLModel
pip install py-pglite[django] # Django + pytest-django
pip install py-pglite[asyncpg] # Асинхронный клиент
pip install py-pglite[all] # Всё сразу


🔧 Пример (SQLAlchemy)

python
def test_sqlalchemy_just_works(pglite_session):
user = User(name="Alice")
pglite_session.add(user)
pglite_session.commit()
assert user.id is not None


py‑pglite — идеальный инструмент для unit- и интеграционных тестов, где нужен настоящий Postgres, но без всей админской рутины.

Полноценный PostgreSQL — без его тяжеловесности.

Github (https://github.com/wey-gu/py-pglite)



#python #sql #PostgreSQL #opensource

@Python_Community_ru
🚀 TurboDRF — ускоритель Django REST Framework без боли

TurboDRF — лёгкий способ ускорить ваш Django API без перехода на FastAPI или переписывания логики.

🔥 Что даёт TurboDRF:
Быстрый рендер сериализаторов
🧠 Автоматический prefetch_related и select_related
🧊 Кэширование сериализованных ответов
🧩 Совместим с обычными DRF-сериализаторами

📦 Установка:

pip install turbodrf


🛠️ Пример:

from turbodrf.mixins import TurboModelSerializer

class MySerializer(TurboModelSerializer):
class Meta:
model = MyModel
fields = "__all__"


Идеален для больших Django-проектов, где важна скорость ответа.

🔗 GitHub: https://github.com/alexandercollins/turbodrf



@Python_Community_ru
🐍 PyLeak — найди утечку памяти в своём Python-коде

PyLeak — простой и мощный инструмент для отладки утечек памяти в Python-приложениях.

🔍 Возможности:
• Показывает объекты, которые не удаляет сборщик мусора
• Строит граф зависимостей между объектами
• Выявляет циклические ссылки и "висящие" объекты
• Поддерживает визуализацию через Graphviz

📦 Установка:

pip install pyleak


🧰 Идеален для отладки сервисов, где память утекает незаметно.

🔗 GitHub (https://github.com/deepankarm/pyleak)



@Python_Community_ru
🖥 Совет по Python:


from pathlib import Path

# Создаем объект Path для заданного пути к файлу
path = Path("C:/Users/test.md")

# Получаем имя файла вместе с расширением
print(path.name) # 'test.md'

# Получаем только имя файла без расширения
print(path.stem) # 'test'

# Получаем расширение файла (с точкой)
print(path.suffix) # '.md'

# Получаем родительскую директорию (папку)
print(path.parent) # 'C:/Users'

С помощью модуля pathlib вы можете получать различные части пути — имя файла, расширение, родительскую директорию. Это упрощает работу с файловыми путями и их анализ.

Объяснение:

- path.name — возвращает полное имя файла (например, test.md).

- path.stem — возвращает имя файла без расширения (например, test).

- path.suffix — возвращает расширение файла (например, .md).

- path.parent — возвращает путь к родительской директории (например, C:/Users).

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



@Python_Community_ru