My brain hurts
Python продолжает красоваться на первом месте в индексе TIOBE. Это самый популярный язык в мире, поэтому мы в очередной раз собрали много интересных материалов. Наливайте кофе и приятного чтения!
Автоматизируем рутину Kubernetes
Теперь даже в самой маленькой компании можно встретить Kubernetes. Это удобно, ведь достаточно указать системе желаемое состояние, а она самостоятельно попробует его достичь. Но есть и вариант ручного управления. В Kubernetes для этого предусмотрена утилита kubectl, которая взаимодействует с кластером по API.
Если хочется автоматизировать работу с этой утилитой, то привычных скриптовых языков, будет недостаточно. Здесь нужен полноценный язык программирования и Python прекрасно подойдет. Для этого есть официальная Python-библиотека для Kubernetes. В ней есть всё необходимое, чтобы управлять кластером и отслеживать состояние через API.
Главное в таком способе, что он позволяет выполнять команды, для которых, например, не предусмотрено API. Так можно выполнить deployment rollout, обычно производимый вручную с помощью kubectl rollout restart. Ещё можно автоматизировать рутинные операции по масштабированию кластера через API, отслеживать утилизацию системных ресурсов и многое другое. Попробовать стоит!
Симбиоз Python и GSheets
Каждая крутая корпорация в том или ином виде старается объединить свои продукты в единую экосистему. Это создает общую точку входа для всех сервисов. Пользователю это удобно. А вот разработчикам не весело, ведь приходится думать о совместимости инструментов и экосистемы.
Google Docs — офисный пакет, обладающий гибкостью и удобством работы. Незаменимая штука для тех, кому важна совместная работа над документами. Взглянем на Google Sheets, давным-давно имеющий собственный API. Для взаимодействия с ним было создано множество пакетов, таких как gspread, pygsheets, etc. Одна проблема — эти пакеты жёстко зависят от облачной инфраструктуры Google Cloud Platform и предназначены исключительно для работы внутри неё.
А вот xlwings позволяет разрабатывать интерактивные приложения прямо внутри Google Sheets. Магия тут в том, что xlwings — это просто веб-приложение, задействующее Google Sheets, как внешний интерфейс. Это резко все упрощает, можно не ковыряться с HTML, CSS и JavaScript.
Код с душком
Своему появлению на свет этот забавный термин обязан Кенту Беку (Kent Beck), создателю методологии экстремального программирования. Означает он потенциально проблемные участки кода. Словно «Пиратский кодекс» из превосходной саги с Джонни Деппом — «это просто свод указаний, а не жёстких законов». Речь не о чётких критериях определения плохого кода, а скорее о том, где стоит приложить максимум усилий при рефакторинге.
Новое — это хорошо забытое старое, так что советуем перечитать статью 5 Python Code Smells You Should Be Wary Of. Автор не просто сделал акцент на часто встречающихся случаях, но и дал дельные советы по приведению кода в порядок. Всего он выделил 5 ситуаций, когда стоит задуматься о «запахе» кода:
- изменение предопределённых значений функции во время вызова;
- предпочтение выбирать диапазон, вместо перечисления;
- чрезмерное использование циклов (в том числе вложенных);
- злоупотребление списками;
- нездоровое влечение к глобальным переменным и булевым значениям.
Так что, если вы поймали себя на мысли, что часто создаете такие ситуации — пришло время меняться. Давайте писать хороший код и не переживать о появлении «запаха».
Первый взгляд на PyScript
Наш любимый Real Python подготовил обзор недавно появившего фреймворка PyScript. Впервые мы услышали о нём на PyCon US 2022. PyScript предназначен для создания интерактивных веб-сайтов на чистом Python или в связке с JavaScript. Фактически это SPA на TypeScript плюс Svelte c оформлением на Tailwind CSS и упаковщиком rollup.js. «Франкенштейн» пока находится в статусе альфа-версии, но активно развивается и дорабатывается.
Основная задача PyScript — снизить порог входа во фронтенд-разработку и позволить применять знания, полученные в результате изучения Python. Чтобы всё это корректно работало в браузере, за основу был взят Pyodide (порт CPython под веб) и скомпилирован в WebAssembly. Круто, что при разработке не потребуется даже запуска веб-сервера.
Но есть и ложка дёгтя — первый запуск потребует скачивания среды выполнения Pyodide из интернета (около 20 Мбайт). Зато после помещения в кэш можно смело работать автономно. Конечно, есть и возможность предварительной загрузки среды исполнения с помощью встроенного в Python локального HTTP-сервера, но пока что это не панацея. Часть всё равно будет загружаться из CDN. Спишем это на особенности альфа-версии.
Из особенностей, которые стоит учитывать — форматирование кода. Если для JavaScript или CSS пробелы могут быть спокойно удалены, без вреда для интерпретации, то с Python не всё так просто. Средства автоматического форматирования кода легко могут испортить ваш Python-код, вырезав нужные пробелы. Это вызовет исключение и ошибки Pyodide.
Объявление строкового литерала тоже может забросить вас в «Лютный переулок». Браузер интерпретирует такое объявление как HTMLUnknownElement и вырежет его, оставив внутри только текст. Workaround — заменять символы на объекты HTML. Ну а об остальных особенностях вы узнаете из оригинальной статьи.
Дополнительная бета Python 3.11.0b3
Изменения редко проходят бесследно. При разработке Python 3.11.0 поломали совместимость с pytest. Дело в том, что для лучшего проведения диагностики, pytest перезаписывает узлы AST, которые затем компилируются. В этом основная проблема — узлы AST, созданные pytest, оказываются несовместимыми по причине изменений в компиляторе. Даже если созданный узел не вызывает сбой, он потенциально имеет поврежденную структуру.
Для исправления этой проблемы была выпущена дополнительная бета-версия 3.11.0b3. Таким образом вместо четырёх запланированных бета-версий, их выйдет пять. Ситуация с pytest была исправлена в 3.11.0b3. В предыдущей 3.11.0b2 тоже есть возможность работать с pytest, но исключительно на ваш страх и риск. Для этого добавьте «--assert=plain» в вызов pytest. Выход следующей тестовой версии будет по плану 16.06.2022.
Интересно посмотреть
Мы уже упомянули замечательное мероприятие PyCon US 2022. Питонисты Evrone особенно отметили доклад про GraphQL. Наслаждайтесь!
Обмен опытом — важная часть нашей работы. Две недели назад мы провели Python-митап. Спикеры из компаний Утконос Онлайн, duckstax и Yandex представили три отличных доклада. Традиционно они были записаны в высоком качестве 4K и с хорошим студийным звуком:
Как мы ускоряли код – Python + numba
Как вызвать C++ из Python и не стать медленнее
RecSys Cookbook: строим рекомендательную систему на Python без глубоких знаний математики
Обучение
Курс Python в Evrone Academy
60 учебных модулей
Если вы думаете о смене работы или хотите стать частью нашей команды, но у вас недостаточно коммерческого опыта, то теперь можно учиться прямо в Evrone. А после — попасть к нам на оплачиваемую стажировку.
Основа обучения в Evrone Academy — наши высокие требования к разработчикам и опыт в проектах. Мы записали лекции, подготовили текстовые версии, добавили практические задания — это позволит вам подтянуть знания до middle-уровня. На стажировке мы дополним теорию практикой, а после — добро пожаловать на «боевой» проект.
Сейчас академия доступна в режиме early access — можно пройти базовые части по Python или Ruby. Но мы уже готовим новые материалы и практические задания, подписывайтесь на нас в соцсетях, чтобы не пропустить обновления!
Митапы
Python meetup
19:00
Рады сообщить, что у нас запланирован Python Meetup, который пройдёт 7 сентября. Детальная информация о мероприятии будет опубликована позже, следите за нашими новостями.
Вакансии
Evrone
Мы открыты для новых Python-разработчиков. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах и выступления на конференциях, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.