Последние посты

Находки в опенсорсе
15 сент., 10:45изменён
PEPы в Python окончательно вышли из-под контроляДавайте посмотрим, что происходит с ПЕПами в CPython. Там много новых спорных штук. Начнем с более базовых, перейдем к дичи в конце. Какие-то ПЕПы приняты, но большинство в обсуждении.Докстринги для TypeAliasTypePEP-846: https://github.com/python/peps/pull/5116Базовая база: пишем докстринги после ключевого слова type - у нас появляется __doc__ атрибут.type Timeout = float | None """Maximum wait in seconds. """Привычный синтаксис из-за sphinx аннотаций для атрибутов. Кстати, поддержка правила для поиска докстрингов вне правильных мест уже в wps!Паттерн-матчинг конкретных значенийPEP-845: https://github.com/python/peps/pull/5107
Находки в опенсорсе
10 сент., 07:14
Большая бесплатная конференция в Нижнем Новгороде 17 октябряРегистрация: https://itgorky.ru/bolshaya-vstrecha При поддержке @it52infoМы продолжаем нашу традицию делать большую осеннюю конференцию в Нижнем. Вот тут можно почитать / посмотреть как было в прошлом году: https://t.me/opensource_findings/934Что будет? - Много разных секций: Python / DevRel / Frontend / Mobille - Слет всего нашего сообщества @pytho_nn: приедет весь наш опенсорс чат, будет кучу людей из Москвы, Казани, других городов - Много дружеского и профессионального общения - Настолки! - Встреча подписчиков. Приедет много людей из телевизора, всех их мы заманим в бар после конференции, с ними можно будет поговорить, выпить пива, сфотаться, подружиться :) - Бар, кальяны и тусовка до утра (самое главное, очевидно)В текущем году я решил позвать в качестве докладчиков ваших любимых ютюберов и опенсорсеров.Доклады
Находки в опенсорсе
1 сент., 09:09изменён

Находки в опенсорсе
24 авг., 09:13изменён
JIT могут удалить из CPython!PEP-836: https://peps.python.org/pep-0836JIT в CPython имеет очень много проблем, давайте их обсудим.Если вы все пропустили, то вот вам краткий таймлайн всей истории: - В мае 2021 года создается команда Faster CPython, под руководством Гвидо в MS, которая должна работать над улучшением скорости CPython - Где-то в 2022м году к команде присоединяется Brandt Butcher, автор первой версии JIT - В октябре 2023 года, Brandt презентовал свою идею добавления JIT в CPython - В январе 2024 года, PR был влит в 3.13, создана первая версия Copy-and-Patch JIT - В апреле 2024 года релиз менеджеры и SC с таких новостей немного прифигели и попросили сделать PEP хотя бы пост-фактум: https://peps.python.org/pep-0744 - В октябре 2024 года выходит 3.13 с JITом, который можно включить опционально - В мае 2025 года MS увольняет всех участников команды Faster CPython - В октябр


Находки в опенсорсе
18 авг., 09:01изменён
Как AWS у опенсорсера пакеты отжималНерегулярная рубрика "посмотрите, что творится!". Данная история была в оригинале рассказана Кареном в нашем чате (там регулярно происходит интересное), публикую в своем канале с его разрешения.Новый SDK для AWS от Карена (автора zapros, автора httpx-aiohttp, топ-3 контрибьютора httpx): https://github.com/kap-sh/capoКак-то я решил написать нормальный SDK для AWS. Их текущий SDK — boto3 — это суперлегаси с кучей костылей: без нормальной типизации, без поддержки асинхронности, почему-то с PascalCase и ещё кучей странных решений.У меня уже был хороший опыт работы с SDK: до этого я работал над SDK для OpenAI и Anthropic на Python и TypeScript, так что успел накопить некоторое понимание того, как делать SDK хорошо.С AWS всё немного сложнее: у них около 450 сервисов и примерно 17 миллионов строк сгенерированного кода. Конечно, я не собиралсяTelegramНаходки в опенсорсеНерегулярная рубрика "посмотрите, что творится!". Как вы знаете, рынок найма http клиентов полностью сломан! Сегодня мы постараемся решить данную проблему. zapros - modern and extensible python http client Звезды ставить сюда: https://github.com/kap-sh/zapros…
Находки в опенсорсе
14 авг., 12:51изменён
Какие уникальные фичи есть в django-modern-rest?Иногда, когда я добавляю какие-то фичи в мой https://github.com/wemake-services/django-modern-rest ⭐, то я думаю про себя: почему таких фичей больше нет нигде?Давайте сегодня посмотрим на них. А вы мне расскажите свое мнение в комментах.Семантическая схемаДопустим, вы навесили на какой-то свой endpoint auth:class UserController(Controller[MsgspecSerializer]): @modify(auth=[JWTAsyncAuth()]) async def get(self) -> User: ...В OpenAPI автоматически появятся все коды ошибок, которые могут случиться в auth (401). Ничего не надо допом писать. И так происходит со всеми частями фреймворка: добавил throttling=[SyncThrottle(1, Rate.minute)]? Теперь у тебя в ответах автоматом 429. Если нужно, можно отключить любые семантические статусы.Не должно ли такое быть дефолтом везде?Умные типы ошибокGitHubGitHub - wemake-services/django-modern-rest: Modern REST framework for Django with types and async support!Modern REST framework for Django with types and async support! - wemake-services/django-modern-rest
Находки в опенсорсе
4 авг., 11:14изменён
Я попробовал uv, обплевался и вернулся на poetryЕсли вы последние полгода не читали чат, то вы не знаете, как сильно у меня горело после перехода на uv. Сейчас расскажу! Данный пост специально написан, чтобы и у вас тоже сгорело. Если к концу вы подойдете без боли в ... душе, то все было зря.Как все было?Обычно, я первый прыгаю пробовать все новые и модные штуки. Так было с Pipenv, когда он только появился. Что там творилось! Так было с poetry, которым я начал пользоваться через год, в 2018м. Но вот с uv так не было, потому что я не знал, зачем бы мне хотелось переехать. Быстрее?Но ладно, мы решили попробовать его на 3х проектах. Быстро же! Ух 🌚 - https://github.com/typeddjango/django-stubs (терпим) - https://github.com/wemake-services/django-modern-rest (сложно съехать) - https://github.com/wemake-services/wemake-django-template (откатили)Почему?Ох, даже не знаю с чегоTelegramНаходки в опенсорсе: чатКанал: @opensource_findings Правила: https://gist.github.com/sobolevn/d9a598a23e6bb89e51ada71033e9103f
Находки в опенсорсе
3 авг., 05:17изменён
Вайбкодим security компоненты в django-modern-rest (или нет) https://www.youtube.com/watch?v=laJQcNAqxc0 В django-modern-rest появилась большая задача: полностью мигрировать в себя dj-rest-auth. Ссылочка (мы ищем контрибьюторов, особенно специалистов вGitHubReplace token doctest examples with a real test app by Lancetnik · Pull Request #1196 · wemake-services/django-modern-restI have made things! Reworked after review. The first commit was the narrow fix; this now follows the suggested approach. The bug --doctest-modules and --doctest-glob=*.rst execute the >&...
Находки в опенсорсе
1 авг., 09:02изменён
Вайбкодим security компоненты в django-modern-rest (или нет)https://www.youtube.com/watch?v=laJQcNAqxc0В django-modern-rest появилась большая задача: полностью мигрировать в себя dj-rest-auth. Ссылочка (мы ищем контрибьюторов, особенно специалистов в безопасности OAuth / MFA / Passkeys!): https://github.com/wemake-services/django-modern-rest/issues/1193На что @fastnewsdev (как главный пропагандист ИИИ = "инженерный искусственный интеллект" ) сказал, что он мне такое заваншотит клодом еще до того, как я успею выпить бутылку пива. Ну вот и посмотрим, пиво я пью быстро 🌚Завтра стрим в 19:00 на канале вялых питонов: - Никита будет вайбкодить Django код (он не знает джангу) - Никита будет ревьюить и пытаться дотащить код хоть до какого-то вменяемого состоянияПриходите смотреть, на что реально способен ИИ. Сбивайте нас с толку своими остроумными комментариями, задавайтеYouTubeВайбкодим security компоненты в django-modern-rest (или нет)Донаты: https://www.donationalerts.com/r/sluggishpythons Как-то два Никиты поспорили, что один Никита может написать самый грустный код для аутентификации, используя только Claude Code. На что второй Никита сказал: я такое готов терпеть только с пивом. …
Находки в опенсорсе
31 июл., 07:48изменён
id() в питоне не выдает уникальные значенияНаверняка, многие из вас, когда изучали питон читали, что id(obj) дает уникальный идентификатор объекта. Его даже назвали, блин, id 🌚️️Но, все не совсем так. Сегодня будем срывать покровы с одной из самых простых и сложных механик в питоне.Что вообще такое id?Сначала, давайте посмотрим на то, как id() устроен:static PyObject builtin_id_impl(PyModuleDef self, PyObject v) { PyObject id = PyLong_FromVoidPtr(v);if (id && PySys_Audit("builtins.id", "O", id) < 0) { Py_DECREF(id); return NULL; }Python documentationAudit events tableThis table contains all events raised by sys.audit() or PySys_Audit() calls throughout the CPython runtime and the standard library. These calls were added in 3.8 or later (see PEP 578). See sys.ad...
Находки в опенсорсе
13 июл., 09:04изменён
Внутри питона есть ЕЩЕ виртуальные машиныМы все знаем, что сам питон - одна большая стековая виртуальная машина, которая выполняет опкоды. Их мы можем посмотреть через dis:>>> import dis >>> dis.dis('x + y') 0 RESUME 01 LOAD_NAME 0 (x) LOAD_NAME 1 (y) BINARY_OP 0 (+) RETURN_VALUEМожем получить список всех опкодов, можем вызвать их оптимизации и посмотреть на результат с оптимизациями.Но! Внутри CPython есть и другие виртуальные машины. Сегодня поговорим про ту, которой все мы всегда пользовались, но не знали, что она - виртуальная машина.pickleДа, не удивляйтесь. Встроенный протокол сериализации в питоне работает благодаря отдельной стековой виртуальной машине. Давайте посмотрим.Python documentationpickletools — Tools for pickle developersSource code: Lib/pickletools.py This module contains various constants relating to the intimate details of the pickle module, some lengthy comments about the implementation, and a few useful functi...
Находки в опенсорсе
10 июл., 09:15изменён
Подкаст про управление разработкой в новой реальностиВК | ТГМеня пригласили поучаствовать в подкасте, чтобы обсудить разработку с ИИ и управление разработкой с ИИ.Участники: - Кирилл Меньшов, старший вице-президент и руководитель блока «Технологии» Сбера - Дмитрий Иванов, руководитель SourceCraft в Яндексе - Я, опенсорс разработчикПоговорили про важные вопросы: - Сможем ли программировать на русском? Или его тоже потребуется формально верифицировать? - Как обеспечить должный уровень ИБ, когда софт пишут агенты? - Как оставить себе "план б", если код все-таки придется смотреть? - Как расти в новом мире как инженер? - Откуда брать новых senior разработчиков? И нужны ли они? - Как починить найм? И почему резюме скорее всего скоро будет не особо нужноКак вы знаете, я занимаю довольно нейтрально-реалистичную позицию в ИИ вопросах: есть такие-то плюсы и минусы, такие-то риски,VK ВидеоТехкомьюнити: спецификации вместо кода, токенмаксинг и агенты, которые проходят собес за тебя. Шестой выпуск со Сбером, ЯндексомРезюме Шрека попало в топ HeadHunter. Не шутка — реальный кейс, о котором упоминают в шестом выпуске «Техкомьюнити». Пока одни разработчики скармливают резюме промпт-инъекциям, чтобы обмануть ИИ-рекрутера, другие жгут токены на абсолютно любую задачу. Разбираемся…
Находки в опенсорсе
6 июл., 11:50изменён
Наконец-то полезные фичи в питонеМногие знают, что я почти не добавляю новые фичи в CPython, я стараюсь выпилить существующие и править баге в тех, что у меня не получается убирать. Новые если и добавляю, то без масштабных обсуждений.Некоторые новые фичи встречают у меня сильный оптимизм: как новый встроенный sampling profiler. Вот тут видео про него кстати с прошедшего PyCon. Некоторые фичи встречают у меня понимание: как например typing.disjoint_base. Простая штука, решает понятную проблему. Некоторые фичи встречают у меня лютое подгорание: как например lazy imports. Вот доклад с пайкона и про них, кстати.Я думаю, что мое понимание хорошей фичи очень сильно расходится с таким пониманием у других питонистов, мое понимание "хорошего питона" можно найти в моем wemake-python-styleguide.Зная такую вводную, я решил сделать "большую" новую фичу. На один символ в грамматике.ИммутабелYouTubeTachyon: Python 3.15's sampling profiler is faster...- Pablo Galindo Salgado, Laszlo Kiss KollarFull talk title: "Tachyon: Python 3.15's sampling profiler is faster than your code" In the core dev team we set out to build the best sampling profiler for any interpreted language and place it in the standard library. Python 3.15 ships the result: Tachyon…
Находки в опенсорсе
29 июн., 09:08изменён
Пользуясь случаем: у нас 10 июля митап в Нижнем Новгороде. https://pytho-nn.timepad.ru/event/4050146/В программе 4 крутейших юбилейных доклада от гостей города и (даже!) нижегородца:- Артем Пашков, Нижний Новгород, Сообщество "Опенсорсеры", Как сообщество Опенсорсеры помогает open source проектам и разработчикам?Отвечу на главный вопрос: нужно ли лично вам занимать опенсорсом? И как начать?Расскажу про проблемы, знакомые многим: недостаток внимания к своему проекту, где искать контрибьюторов, куда самому законтрибьютить, а также как получить полезный фидбек.- Илья Солин, Уфа, ТБанк, https://t.me/http_418_i_am_a_teapot, Алгебраические эффекты: понять, полюбить и никогда не тащить в продРазберём концепцию теоретически (почему это классно), попробуем реализовать её на Python и поймём, стоило ли оно того.- Георгий Бородин, Москва, Как я перестал бояться и полюбил бойлерплейтБpytho-nn.timepad.ruPythoNN 10: митап питонистов в Нижнем Новгороде, июль 2026 / События на TimePad.ru
Находки в опенсорсе
29 июн., 08:51изменён
Если вы понимаете данный баг, то вы знаете питон лучше 95% людейА если нет, то вы многое узнаете про то, как работает память и почему мутабельностью стоит пользоваться с осторожностью. Недавно я увидел один из лучших багов в CPython за долгое время. А я видел много багов 🌚️️Вот код, который делает две критичные безумные вещи (попробуйте их найти прежде, чем читать дальше):class Evil: def __eq__(self, other): return otherleaked = vars(list) == Evil() name = "example" leaked[name] = lambda self: "probe" print(getattr(list, name)([])) del leaked[name] print(hasattr(list, name))Разбор багаGitHubcpython/Python/bltinmodule.c at f6e904e1a666cb1e5664750b1c3d8f89cba3a769 · python/cpythonThe Python programming language. Contribute to python/cpython development by creating an account on GitHub.
Находки в опенсорсе
25 июн., 13:14
Генерируем Rust код из Python и становимся крабамиПроект "острый краб": https://github.com/kushaldas/spicycrabВы же знаете, что вы узнаете про все важные штуки в питоне первыми? На ближайшем Language Summit в июле Кушал Дас - core-разработчик CPython - представит свой новый проект. Но зачем ждать июля, когда код открыт? Давайте смотреть и пробовать!В чем главная идея?- Пишем на типизированном Python - Получаем на выходе Rust код, который работает в десятки или сотни раз быстрее - Можем использовать в Python крейты Rust и Python пакеты, что? 🙀(проект еще не просто в альфе, а в пре-альфе, но мы тут просто любим странное, ставь 🕊, если просто заходишь сюда почитать про непонятное и удивительное)Начнем с простого: print('Hello world') Запустим: crabpy transpile ex.py и получим:fn main() { println!("Hello world"); }GitHubGitHub - kushaldas/spicycrabContribute to kushaldas/spicycrab development by creating an account on GitHub.
Находки в опенсорсе
16 июн., 14:14
Почему msgspec такой быстрый?Несколько дней назад я решил разобраться в устройстве msgspec. Получилось како бычно: я напал на него со своими PRами, мне через день выдали права на merge и release. Но самое главное: теперь я могу рассказать вам про внутреннее устройство самого быстрого сериализатора для json в питоне.Как быстро распарсить json?Традиционные парсеры json делают так: - Парсим весь json документ - Используем промежуточный слой для хранения json как примитивных Python объектов: dict, list, int, str, None, тд - Превращаем Python объекты в финальный вариант: датаклассы, модели, более сложные типы, тдmsgspec использует несколько важных хитростей, чтобы парсить json наиболее быстрым способом. Пример:>>> import msgspec >>> class User(msgspec.Struct): ... username: str ... email: str ... >>> decoder = msgspec.json.Decoder(User)GitHubPull requests · msgspec/msgspecA fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML - Pull requests · msgspec/msgspec
Находки в опенсорсе
8 июн., 15:41
Зеркало PyPIНа нескольких проектах последние несколько дней сталкиваемся с проблемами с доступом к PyPI: как локально, так и в CI. Печально.All attempts to connect to pypi.org failed.Probable Causes: - the server is not responding to requests at the moment - the hostname cannot be resolved by your DNS - your network is not connected to the internetЕсли у вас есть такая же проблема, можете воспользоваться PyPI зеркалом от GitVerse: https://gitverse.ru/docs/artifactory/registry-mirrors/pypi-mirror?utm_source=tg&utm_medium=fix&utm_campaign=bloggers&utm_content=post&utm_term=nikitasobolev&utm_erid=2VfnxxwjcVpВсе пакеты и все версии, которые есть на PyPI - оттуда тоже доступны. Перевел консалтинговые проекты - заработало.Как настроить?pip, документация:# Установка одного пакета:python-poetry.orgRepositories | Documentation | Poetry - Python dependency management and packaging made easyRepositories Poetry supports the use of PyPI and private repositories for discovery of packages as well as for publishing your projects. By default, Poetry is configured to use the PyPI repository, for package installation and publishing. So, when you add…
Находки в опенсорсе
5 июн., 12:10
Анонс стрима: "работаем над lazy import'ами в CPython и плачем под аниме" (на превью - я на стриме) Мы с @nkhitrov_blog, @fastnewsdev и Денисом Аникиным (в 2026 и без тг канала!) решили замутить стрим по питону и ... новый канал на ютюбе под названием "ВялыеGitHubImprove lazy imports syntax errors · Issue #150459 · python/cpythonFeature or enhancement Currently there are several cases that can be improved when there are syntax errors in the code. The most important one in my opinion is from os lazy import path. This is the...
Находки в опенсорсе
3 июн., 16:09
Анонс стрима: "работаем над lazy import'ами в CPython и плачем под аниме" (на превью - я на стриме) Мы с @nkhitrov_blog, @fastnewsdev и Денисом Аникиным (в 2026 и без тг канала!) решили замутить стрим по питону и ... новый канал на ютюбе под названием "ВялыеYouTubeРаботаем над lazy import'ами в CPython и плачем под анимеО чем будет первый стрим? - Обсудим мотивацию и устройство PEP-810, потестим разные странные случае, Никита побомбит - Я запилю каких-нибудь пару тасочек в CPython - Если я буду плохо рассказывать, что там происходят - пацаны будут меня душить своими любимыми…
