uz
Feedback
Хитрый Питон

Хитрый Питон

Kanalga Telegram’da o‘tish

Я много читаю и делюсь в этом канале заинтересовавшими меня материалами, в основном про Python. @korneevm

Ko'proq ko'rsatish
2 505
Obunachilar
-224 soatlar
+27 kunlar
+130 kunlar
Postlar arxiv
Вышел PyTorch 2.0. Признаюсь честно, я его трогал совсем немного и это было довольно давно. Поэтому почитав список изменений я понял, что не понимаю, что крутого в релизе :-). Тем не менее, поздравляю всех кто ее использует с большим мажорным апдейтом. https://pytorch.org/blog/pytorch-2.0-release/

17 марта в 14:00 встретимся в прямом эфире Moscow Python Podcast с Алексеем Андрияшем, тимлидом, YADRO. Вместе с гостем обсудим: • разработку тулов для разработчиков; • использование CI/CD; • как доносить проблемы до девопсов; • почему Jenkins все еще жив. В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.

Новость не про python, но мне кажется интересной поэтому страдайте: Вчера вечером OpenAI анонсировали GPT4 - следующую версию сетки, которая используется например в ChatGPT. Основные моменты: - GPT4 будет доступна на chat.openai.com только коммерческим подписчикам с ограничением по объему использования. OpenAi пока не определились с размером ограничений - Доступ к api тоже за деньги и нужно записываться в очередь, бесплатный доступ "когда-нибудь" - Сетка, как и GPT3, не знает ничего позже 2021 года и не умеет учиться на том, что ей пишут - Обещают, что будет сильно меньше, чем GPT3 галлюцинировать и придумывать факты - Добавили возможность давать управляющие команды используя роль system — это позволит менять поведение сети перед тем, как начать диалог. С моей точки зрения самая интересная фича, работа с промптами выходит на новый уровень Вообще в статье очень интересные примеры работы с сеткой, рекомендую хотя бы полистать. Ссылка на статью https://openai.com/research/gpt-4

На reddit-е кто-то задал вопрос "Стоит ли использовать FastApi, учитывая что у проекта 400+ открытых issues на гитхабе?" и па-не-слась :) На самом деле тред интересный, там много внятных обсуждений, кроме того в клиенты пришел tiangolo (автор fastapi) и мне было интересно почитать его позицию. Если делать выжимку то получается следующее: - tiangolo в курсе проблем с делегированием и пробует их решить, говорит что в этом году тикеты начали ревьюится быстрее - он жалуется на то, что он неоднократно встречал баги в pr-ах которые ревьюил не он - тем не менее, проект завязан на одного человека и это риск который надо учитывать Ссылка на тред https://www.reddit.com/r/Python/comments/11pfgjo/is_something_wrong_with_fastapi/

Наткнулся на редите на пост об игре Software Engineering Simulator. Идея проста - пишем код на питоне, чтобы управлять различными механизмами и проходить уровни. Графика, прямо скажем, не некстген, но выглядит любопытно, пока у подобные игрушки/тренажеры я только с мультяшной графикой видел. Добавил себе в вишлист - посмотрю на релизе и возможно куплю ребенку, надуюсь его больше чем Codecombat заинтересует https://store.steampowered.com/app/2216770/JOY_OF_PROGRAMMING__Software_Engineering_Simulator/

Короткая статья с примером того, как с помощью nox и pyenv гонять тесты на разных версиях питона. Полезно, если вы пишете, к примеру, библиотеку. Последнее время часто вижу, что люди переходят с tox на nox, в основном потому что его удобнее конфигурировать. https://sethmlarson.dev/nox-pyenv-all-python-versions

Привет, приближается первая пятница месяца, а значит 3 марта в 14:00 по Москве мы снова соберемся онлайн, чтобы обсудить новости python за февраль. В этом выпуске: • 32 года Python; • три больших атаки на pypi за месяц, и что с этим собираются делать?; • три главных тренда 2023 в Python; • вышел отчет по Python в блокчейне, оказывается python там тоже используют; • вышел mypy 1.0; и другие новости. В ходе трансляции Moscow Python Podcast будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке https://www.youtube.com/watch?v=36APuXAnSoo

Хороший пост про проблему, про которую довольно легко забыть. Если делать просто asyncio.create_task() не сохраняя ссылку на результат в переменную, то сборщик мусора может прибить задачу до того, как она будет исполнена и получится очень сложно отлавливаемый баг. В документации это поведение отражено только с 3.9, хотя сама функция появилась в 3.7. Сейчас даже в примере хорошо показали "как правильно", тем не менее думаю многие и не помнят про такое поведение (я вот не помнил). Вот тут расписано подробнее https://textual.textualize.io/blog/2023/02/11/the-heisenbug-lurking-in-your-async-code/

Вышел большой отчет про то, как python используется в блокчейн-разработке. И выглядит так, что таки используется. Из интересного, оказывается есть целая конференция PyChain и доклады выложены на ютубе - может быть интересно тем, кто интересуется темой. В остальном, отчет просто перечисляет популярные библиотеки/тулы/sdk на питоне, связанные с блокчейном. Предсказывают, что в этом году разработка начнет больше уходить от доминирования Etherium/bitcoin и python-а в блокчейн-разработке станет больше Я от этой тематики далек, но посмотреть было интересно. Ссылка на отчет https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023

Phylum обнаружили, что в pypi залита большая пачка (1 138 штук!) пакетов с малварью внутри. Выглядит так, что атака направлена на windows-машины, но это не тайпсквотинг (когда название пакета с малварью похоже на название популярного пакета). Сами пакеты с pypi выпилили очень оперативно. Вот тут можно почитать подробности - https://blog.phylum.io/phylum-discovers-another-attack-on-pypi Это уже третий раз в этом месяце, когда на pypi выкладывают пакеты "с подвохом", поэтому на всякий случай напомню правила: 1. Прежде чем ставить пакет, зайдите на его страницу на pypi и убедитесь, что вы ставите именно тот пакет, который планируете. Сравните название с названием в официальном репозитории/документации — это поможет не попасть на "тайпсквоттинг"-пакеты 2. Пиньте зависимости — это может уберечь в ситуации, если злоумышленник каким-то образом сможет пропихнуть опасный код в релиз используемого вами пакета 3. Лично я предпочитаю пинить хеши пакетов, в этом случае если кто-то сумеет подменить пакет, то образ в ci просто не соберётся и я об этом узнаю Ссылки на предыдущие атаки на pypi: раз и два

Завтра, 23 февраля в 14:00 будет очередной прямой эфир Moscow Python Podcast. Будем обсуждать Copilot - какая от него польза и вред, лайфхаки по использованию и какие есть аналоги. В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть https://www.youtube.com/live/lKnMBGqguRo?feature=share

32 года назад, 20 февраля 1991 года Гвидо запостил в мейллист alt.sources исходники питона 0.9.1 - это считается первым релизом языка: This is Python, an extensible interpreted programming language that combines remarkable power with very clear syntax. Если интересно, можно посмотреть ветку сообщений с исходниками тут (да, исходники просто текстом в 21 письме) - https://www.tuhs.org/Usenet/alt.sources/1991-February/001749.html

10 февраля в 14:00 МСК на очередном эфире будем обсуждать: Что нового в Python 3.12 с Никитой Соболевым, CTO wemake.services. Обсудим:  • обновленную реализацию виртуальной машины; • новые typing PEPs; • Unstable C-API tier; • начало большой чистки stdlib; • C-API Watchers. В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.

Вышел MyPy 1.0.0, из интересных изменений: - На 40% быстрее, я очень рад, потому что на более-менее большой кодовой базе он раньше тормозил как не в себя - Добавили сообщения о undefined variables, использовании переменной до ее объявления. Кажется, тот же flake8 нормально это отлавливает, но все равно выглядит небесполезно - Добавили поддержку типа Self (есть в 3.11, для более ранних версий надо использовать typing_extensions) - Реализовали поддержку ParamSpec, но я если честно еще ни разу ParamSpec не использовал в реальном коде, но если интересно, это PEP 612 И еще из интересного, они на конец перешли на semver и теперь будет проще по номерам версий понимать, будут ли подводные камни при обновлении 🙂 Подробнее вот тут https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html

Еще одна интересная статья из серии "как все устроено под капотом". В общем случае отдавать файлы с помощью питоновских фреймоврков идея не очень хорошая - это будет не очень производительно, гораздо лучше файлы раздавать с какого-нибудь S3-хранилища, использовать CDN или хотя-бы Nginx (или аналог). Тем не менее, иногда это нужно и оправданно. И дальше идет интересное, оказывается FastAPI (а точнее Starlette на которой он основан) читает файл чанками(кусочками) и отдает браузеру. И чтение файла по кусочку в цикле - очевидно не самая эффективная операция. А вот aiohttp поступает умнее - он использует loop.sendfile, который в свою очередь использует os.sendfile() который использует доступную на Linux и MacOS функцию ядра sendfile(), которая позволяет отправить файл в сокет максимально эффективно. И судя по тестам вариант с sendfile в 7 раз быстрее. В общем, если вы генерируете и отдаете в браузер файлы питоном и делаете это часто - посмотрите, как это реализовано в используемом вами фреймворке, возможно вы сможете сэкономить ресурсы. Оригинальная статья https://medium.com/@alsadi/secret-sauce-is-zero-copy-single-context-switching-b749bd614dca

Кстати, в эту пятницу в 14 будет новый стрим python-подкаста. В этот раз мы пробуем новый формат, вместе с Ильей Лебедевым обсудим, что интересного произошло в python-экосистеме за месяц. В темах: - что интересного происходит в разработке веб-фреймворков - обсудим выход SQLAlchemy 2.0 - свежие PEP и особенно возможность собирать python без GIL (и другие новые pep-ы) и другие новости, связанные с python. Приходите на стрим на ютуб и задавайте вопросы в комментариях! https://www.youtube.com/live/wZ8PMWtRCe4?feature=share

YAML в последние годы набрал огромную популярность, но наверное самая большая проблема с ним в том, что он выглядит просто, но на самом деле формат очень замороченный. Спецификация состоит из 10-и глав https://yaml.org/spec/1.2.2/. Честно признаюсь - я не осилил прочитать ее полностью, думаю, как и большинство людей, активно использующих yaml. И вот тут мы подходим к теме сегодняшней статьи. Из-за того, что формат сложный, но с ним пытаются работать как с простым, есть много неочевидных способов поломать yaml`-документ. Например, ключи словаря в `yaml могут быть любого типа, не только строками. Если это совместить с тем, что yaml считает, что on — это True, а off — это False, то вот этот пример из Quickstart-а Github Actions:
on: [push]
будет прочитан как:
True: ['push']
Интересно, в Github Actions свой, пропатченый парсер или они on и True в ключах считают одним и тем же? В общем вот хорошая статья, в которой разбирается этот и многие другие неочевидные ловушки формата. Очень рекомендую всем, кто сталкивается с необходимостью писать/править YAML https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell

Вышел релиз SQLAlchemy 2.0, получается довольно интересно: - Полная поддержка типов: ORM-модели теперь можно делать полностью типизированные, результаты запросов тоже типизированы - Теперь ORM-модели можно объявлять как MappedAsDataclass и в этом случае на выходе получатся полноценные датаклассы - Для массовых добавлений/изменений вместо bulk_* методов теперь можно использовать insert-ы и update-ы, которые стали достаточно умными, чтобы делать это одним запросом и поддерживать .returning() - C-расширения переписали на Cython и обещают повышение их производительности - Поддержка нового psycopg3 (aka "просто psycopg") Резюмируя - очень здорово, что в довольно "олдскульный" SQLAlchemy затащили поддержку всяких современных фич языка. Будет интересно попробовать это все. Статья про изменения в 2.0 https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html QuickStart, в котором показан новый подход к объявлению моделей https://docs.sqlalchemy.org/en/20/orm/quickstart.html

Послезавтра, 27 января в 14:00 по Москве проведем прямую трансляцию очередного Moscow Python Podcast. В гости придет Иван Самсонов, продакт-менеджер в прикладных исследованиях ИИ во ВКонтакте. Обсудим: • философию работы в команде; • можно ли научить бизнес ставить ML задачи; • тренды прикладного ИИ; • исследования и продуктовую разработку в ML; • этичность применения технологий; • настала ли эра ИИ. В ходе трансляции будем отвечать на вопросы и комментарии с Ютуба в прямом эфире. Присоединяйтесь https://youtu.be/K8gDQykx25Q

Если вы еще не смотрели проект msgspec (https://jcristharif.com/msgspec/index.html) - очень рекомендую взглянуть. Это очень сериализатор для json/msgpack, у него удобный синтаксис, похожий на pydantic и по тестам скорости сериализации/десериализации он обгоняет orjson. В общем, быстрая и удобная штука. А теперь перейдем к новости - автор анонсировал поддержку yaml/toml. Правда, для парсинга для этих форматов будет использоваться существующие библиотеки и прибавки производительности можно не ждать. Тем не менее, возможность декларативно описывать, читать/писать и валидировать самые распространенные разные форматы выглядит очень вкусно - https://www.reddit.com/r/Python/comments/10gzbgo/parsing_and_validating_pyprojecttoml_files_with/