zen_of_python | Unsorted

Telegram-канал zen_of_python - Zen of Python

20144

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Subscribe to a channel

Zen of Python

​​pytest-testmon | Крохотная автоматизация тестов

Счастлив тот питонист, чей работодатель имеет ресурс на тестирование своего кода. Эта библиотека позволяет автоматически покрывать тестами только затронутые изменениями участки кода, снимая с вас эту нагрузку.

Проект на pypi.org
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

pipask | pip, который не пропустит зловред

Дожили: через pypi.org можно слить свои креды / логопассы и дать возможность майнить крипту мошенникам. Пока админ плачет в сторонке вас еще миновала участь установить нечто злое, попробуйте вместо привычных менеджеров зависимостей pipask: он использует метаданные, чтобы оценить вероятность угрозы и подтягивает базу osv.dev (про уязвимости).

Ждем, когда PSF сшерлочат эту фичу.

Репозиторий проекта
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

Почему все реже встречается __init__

В питоническом комьюнити некоторые призывают отказаться от пользовательских методов __init__ в контексте dataclasses.

До Python 3.7 разработчикам приходилось вручную определять этот метод для инициализации атрибутов экземпляра класса. Например, чтобы создать объект 2DCoordinate(x=1, y=2), необходимо было явно прописать метод init с параметрами x и y. Альтернативы — фабричные функции и абстрактные классы, были менее удобны и приводили к усложнению кода.

С появлением «структур данных» необходимость в ручном определении __init__ для простых структур данных отпала:


from dataclasses import dataclass

@dataclass
class Person:
name: str
age: int

person = Person(name="Alice", age=30)
print(person)


Это не единственное решение: Создание объектов через фабричные методы позволяет (@classmethod) отделить логику инициализации от конструкции объекта.

Вот еще пример проблемы, вызванной пользовательским методом инициализации:


class FooBarWidget(FooWidget):
def __init__(self):
self.publisher = zmq.Context.instance().socket(zmq.PUSH)
self._init()

def _init(self):
def worker_thread_start():
FooWidget.__init__(self)
self.run()

worker_thread = Thread(target=worker_thread_start, daemon=True)
worker_thread.start()


Атрибуты, инициализируемые в FooWidget.__init__, могут быть недоступны в основном потоке до завершения инициализации в дочернем потоке, что вызывает ошибки при обращении к ним.

#основы
@zen_of_python

Читать полностью…

Zen of Python

Апгрейд Win-установочника Python

Разработчики языка оптимизируют процесс установки Python на Windows с помощью т.н. PyManager. Вот его ключевые обновления:

Единый инструмент установки: Ранее существовало несколько способов установки Python на Windows: традиционный установщик .exe, пакет в Microsoft Store и NuGet-пакеты. PyManager объединяет их в один инструмент, упрощая процесс установки и управления версиями Python.

Управление несколькими версиями: PyManager позволяет устанавливать и управлять несколькими версиями Python одновременно, включая возможность установки конкретных версий и архитектур (например, py install 3.11.4 --arch=arm64). Это особенно полезно для тестировщиков.

PEP-773
#факт
@zen_of_python

Читать полностью…

Zen of Python

​​GlyphX | Старший брат Matplotlib

Альтернатива общепринятому инструменту визуализации, glyphx предлагает:

— SVG-рендеринг;
— интерактивность по умолчанию (как у plotly);
— палитры с темными темами и для людей с особенностями зрения.

Таргетировано на научные работы, где важна глубокая кастомизация и редкие типы диаграмм.

#инструмент
@zen_of_python

Читать полностью…

Zen of Python

​​Солидный апдейт pip

Среди новшеств версии 25.1:
Группы зависимостей: Теперь можно устанавливать «пачками», определёнными в pyproject.toml. Это позволяет устанавливать, например, только зависимости для тестирования или разработки:

pip install --group test

Возобновляемые загрузки: прерванные из-за нестабильного интернета загрузки все же выполнятся;

Индикатор прогресса установки;

— Ускорение pip show, pip freeze на 15–30%;

— Улучшенные сообщения об ошибках: Сообщения об ошибках при удалении пакетов стали более информативными.

Release Note
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

На случай, если вы все еще бухаете морально не готовы вернуться к работе, на GitHub бесплатно дают кодить с целым букетом LLM:
— ChatGPT
— DeepSeek
— Mistral
— MIcrosoft Phi и проч.

Выставил такого ИИ-работника вместо себя в начале недели — и никто не поймет подмены.

#инструмент
@zen_of_python

Читать полностью…

Zen of Python

​​Самый питонический фон для созвона, для тех, кто только что в чем-то преуспел.

#кек
@zen_of_python

Читать полностью…

Zen of Python

Майские праздники в этом году как генератор в Python — вроде начались, но сейчас только yield, return ещё не было.

#кек
@zen_of_python

Читать полностью…

Zen of Python

AI уже собеседует людей. Вопрос — отсобеседует ли он тебя?

Совместная разработка T1 и Geeсko — бесплатный AI-тренажёр, который захочет попробовать любой IT-специалист. Это не просто интервью, а настоящий тренажёр, где ты проходишь AI-собеседование прямо с экрана: ИИ задаёт вопросы, оценивает ответы и даёт обратную связь. Без HR и без «мы вам перезвоним».

Что внутри:
— 5 точных вопросов по hard-скиллам
— голосовой формат диалога
— подробный разбор каждого ответа
— рекомендации, как усилить свои позиции

Тренажёр создан для IT-специалистов, которые хотят не просто найти работу, а понять себя в профессии и расти дальше.

Хватит гадать — пройди AI-интервью и узнай, где твои сильные и слабые стороны.

Это #партнёрский пост

Читать полностью…

Zen of Python

robyn | Ваш API будет самым быстрым

Если правильно организовать эксперимент, то и на вершину рейтинга производительности взобраться несложно. Фреймворк предлагает беспрецедентную производительность вашего будущего API засчет рантайма на Rust.

Среди фичей все самое «вкусное»:

Поддерживает как (а)синхронные функции;
Самодокументирует ваш API;
Позволяет создавать приложения с двусторонней связью (WebSocket);
Интегрируется напрямую с кодом на Rust;
Автоматически перезагружает сервер при изменении файлов (Hot Reload);

Цена: бесплатно
Репозиторий проекта
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

Поисковая строка с ИИ на Django-сайте

Небанальная англоязычная статья-лонгрид о прикрутке Rust-библиотеки Mellisearch для неточного поиска на вашем питоническом сайте. Помимо скорости обещают еще и допуск опечаток, поддержку русского языка и другие киллер-фичи.

#инструмент
@zen_of_python

Читать полностью…

Zen of Python

pydoll | Веб-автоматизация без веб-драйверов

Питоническое решение извечного вопроса скрейпинга, избавляющее разработчика от боли подбора нужной версии ChromeDriver. Обещано также бесшовное прохождение «турникета» Cloudflare и reCAPTCHA v3*.

Цена: бесплатно
Репозиторий проекта

Читать полностью…

Zen of Python

pyfonts | Любой шрифт Google Fonts в Matplotlib

Если вы тоже выступаете за «дизайнеризацию» ноутбуков и в целом хотите унифицировать графики и текст вокруг них, этот тул позволит подключить любое из 1800+ начертаний за пару строк кода.

Цена: бесплатно
Репозиторий проекта
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

#кек
@zen_of_python

Читать полностью…

Zen of Python

​​orbital | Обработка датасета прямо из БД

Если вам довелось готовить собственные датасеты перед загрузкой в модель и запускать пайплайны scikit-learn, то повторять такое на каждом банче из БД на SQL вы точно не захотите. Этот инструмент как раз превращает типовые операции StandardScaler, OneHotImputer, SimpleImputer и многие другие.

Проект на GitHub
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

​​Качество кода в эпоху LLM

Один из сеньоров сказал на одной конференции:

«Если разработчик не использует LLM для автоматизации рутины, то он просто тратит ресурсы своей компании»

Вот на таком прокрустовом ложе мы с вами оказались: c LLM база мгновенно забывается, без нее — пишешь / отлаживаешь медленнее.

ИИ-ассистенты:
— генерируют код по промту;
— предлагают автодополнение на основе контекста;
— подсказывают, как улучшить код.

Но они реактивные — не анализируют весь проект автоматически. ИИ не гарантирует соответствие стандартам проекта, превращая код в кашу.

Если вы уже не готовы отказаться от копайлотов вроде ChatGPT или Cursor, с качеством кода помогут несправедливо забытые:
— линтеры (pylint, flake8);
— тайпчекеры (mypy);
— security-сканеры (bandit);
— «покрыватели тестами» (coverage, pytest-cov);
— профилировщики (cProfile).

Вышеописанные инструменты:
— формализуют согласно стандарту PEP8;
— находят ошибки, неиспользуемые импорты, — «мертвый код», несоответствия типов (mypy);
— работают без контекста задачи — поэтому «беспристрастны»;

#инструмент #основы
@zen_of_python

Читать полностью…

Zen of Python

Бывает, просыпаешься утром и понимаешь — хочется перемен. Сменить город, страну, климат. Поработать с видом на океан или встретить закат в кофейне где-нибудь в центре Европы. Только вот отпуска на всё не хватает.

А может, и не нужен отпуск? Есть компании, где работать можно откуда угодно — хоть с берега, хоть с балкона, хоть из уютного офиса, если так больше нравится.

Точка — как раз из таких. Здесь главное — результат, а не география. Ты сам выбираешь, где тебе комфортно: дома, в классном офисе или в другом часовом поясе.

В финтех-компании Точка работает 1300 IT-специалистов — разработчиков, продактов, дата-сайентистов и дизайнеров. Они создают IT-продукты, которым доверяют 700 000 предпринимателей. Здесь ценят инициативу, самостоятельность и продуманность решений.

Хочешь жить по своим правилам и при этом делать классные вещи вместе с командой?

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

Это #партнёрский пост

Читать полностью…

Zen of Python

Тестирование на Python для продвинутых: кейсы, инструменты, ошибки

22 мая в 20:00 — вебинар для тех, кто хочет вывести тестирование на новый уровень.

На вебинаре вы узнаете:
— как тестировать async-код, базы данных и работу с файлами
— частые ошибки: избыточные моки, хрупкие тесты и антипаттерны
— инструменты pro-уровня: pytest, tox, coverage и др.
— как ускорить прогон без потери качества
— реальные кейсы и подходы из продакшена

Подходит для опытных Python-разработчиков, лидов, архитекторов и всех, кто пишет тесты, но хочет делать это лучше, быстрее и стабильнее. Вебинар проходит в преддверии старта курса «Python Developer. Professional». Участникам — скидка на обучение!

Участие бесплатное

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Zen of Python

👍🏻, если не хочешь ставить ❤️
#основы
@zen_of_python

Читать полностью…

Zen of Python

​​Держите питонический амулет. Он защитит вас завтра от груженых понедельников, и коллег с «домайскими» отложенными задачами.

#кек
@zen_of_python

Читать полностью…

Zen of Python

Жизненные задачки подъехали

🦄, если жиза
#кек #основы
@zen_of_python

Читать полностью…

Zen of Python

#кек
@zen_of_python

Читать полностью…

Zen of Python

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

Читать полностью…

Zen of Python

enum: где обладает преимуществом

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

Рассмотрим функцию, которая получает температуру в заданном городе:


def get_temperature(city, unit):
...


Значение параметра unit может быть либо "celsius", либо "fahrenheit". Однако использование строковых литералов может привести к ошибкам из-за опечаток или несогласованности в написании. Чтобы избежать этого, можно использовать перечисление:


from enum import Enum

class TempUnit(Enum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"


Теперь функция может быть вызвана так:


get_temperature("Lisbon", TempUnit.CELSIUS)


Это обеспечивает автодополнение в IDE, предотвращает опечатки и делает код более самодокументируемым.

Когда конкретные значения не имеют значения, можно использовать auto для автоматического присвоения значений:


from enum import Enum, auto

class Weekday(Enum):
MONDAY = auto()
TUESDAY = auto()
WEDNESDAY = auto()


В этом случае значения будут автоматически присвоены в порядке определения.

Модуль enum также предоставляет специализированные классы перечислений:

IntEnum: Подкласс int, позволяющий использовать перечисления в арифметических операциях;
Flag / IntFlag: Позволяют комбинировать значения с помощью побитовых операций, что полезно для представления множественных состояний.

В нем также представлены дополнительные инструменты для работы с перечислениями:

EnumCheck: Позволяет проверять уникальность значений в перечислении;
FlagBoundary: Управляет поведением при работе с недопустимыми значениями в перечислениях Flag;
EnumDict: Подкласс dict, используемый при создании метаклассов перечислений.

#основы
@zen_of_python

Читать полностью…

Zen of Python

T-строки: что это и чем отличаются от f-строк?

T-строки (template strings), предложенные в PEP 750, — новый механизм безопасной интерполяции строк. В отличие от f-собрата, t-строка не создает обычный string, а возвращает объекты шаблонов, которые можно безопасно обрабатывать, не боясь вредоносных SQL-инъекций.

t-строки автоматически экранируют вставляемые значения, предотвращая инъекции команд или SQL. Они возвращают специальные объекты, которые можно передавать в функции, поддерживающие шаблоны, обеспечивая дополнительную безопасность.

PEP 787 дал возможность использовать такое в модулях subprocess и shlex, включая новую функцию sh() для безопасной сборки командной строки.

from shlex import sh
from subprocess import run

user_input = "some file.txt"
run(sh(t"cat {user_input}"))
Хотя t-строки обеспечивают безопасность, они требуют поддержки со стороны функций и библиотек. Например, попытка передать t-строку в функцию, ожидающую обычную строку, вызовет ошибку. Кроме того, интеграция t-строк в subprocess отложена до Python 3.15 из-за сложностей с кроссплатформенной реализацией.

#основы
@zen_of_python

Читать полностью…

Zen of Python

Хочешь научиться собирать данные с сайтов как профи?

14 мая в 18:30 МСК — бесплатный вебинар по веб-скрейпингу на Python!

Что тебя ждёт:
На открытом уроке ты узнаешь, как:
— работать с библиотеками requests и BeautifulSoup;
— автоматизировать сбор данных с динамических сайтов с помощью Selenium;
— обходить CAPTCHA и блокировки;
— сохранять данные в нужном тебе формате.

Кому будет полезно:
Начинающим Python-разработчикам, аналитикам данных, маркетологам и всем, кто хочет научиться доставать нужную информацию из интернета.

Вебинар проходит в преддверии старта курса «Python Developer. Professional».
Участникам — скидка на обучение!

Регистрируйся прямо сейчас — не упусти шанс прокачаться в востребованном навыке

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Zen of Python

pdfrename | Массовое именование PDF-файлов

Если вы генерируете файлы.pdf скопом и нуждаетесь в их автоименовании, библиотека:
— распознает документ;
— подаст его ChatGPT (OpenAI API);
— сформирует осмысленный заголовок.

Цена: бесплатно, но за токены придется платить
Репозиторий проекта
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

Давно хотелось сделать такую RPG: Средневековый герой верхом на огромном волшебном питоне выполняет миссии и спасает людей от изнуряющей работы, потому что единственный из всех знает программирование...

Еще бы заодно воспроизвести всю цепочку открытий от электричества до современного hardware мог, а то ноутбук быстро сядет 🤓

#кек
@zen_of_python

Читать полностью…

Zen of Python

1к 🙏 и у вас буду выходные без инцидентов

@ithumor

Читать полностью…
Subscribe to a channel