Как вам формат TOON (Token-Oriented Object Notation) вместо JSON?
Массивы объектов объявляются один раз в заголовке
Для Python уже есть готовые библиотеки, например
С другой стороны это просто CSV с дополнением, вложенности не очень удобно делать. Что думаете?
@zen_of_python, также в Max
Массивы объектов объявляются один раз в заголовке
users[2]{id,name,role}:, а дальше идут только данные через запятую без лишних скобок и ключей. Это сокращает объём данных на 30–60%.Для Python уже есть готовые библиотеки, например
python-toon и toons. Для промтов в ИИ экономия токенов. Для людей на глаз вроде тоже проще читается. С другой стороны это просто CSV с дополнением, вложенности не очень удобно делать. Что думаете?
@zen_of_python, также в Max
👍10❤3👎3
Вышел Starlette 1.0.0rc1, первый релиз-кандидат после 8 лет разработки
Напомню, Starlette — легковесный ASGI-фреймворк для Python. Поддерживает WebSocket, HTTP/2, фоновые задачи, middleware и маршрутизацию. На нём построен FastAPI, Starlette отвечает за всю сетевую часть, а FastAPI добавляет сверху валидацию через Pydantic и автогенерацию OpenAPI-схемы.
Том Кристи создал Starlette в июне 2018, а сейчас Марсело Трилесинский (Kludex) выпустил первый RC версии 1.0. Почти 10 млн скачиваний в день, а с недавних пор ещё и зависимость Python MCP SDK.
Что в релизе. Удаление deprecated-фич, помеченных для удаления в 1.0.0, плюс финальные баг-фиксы. Никаких крупных новых API, акцент на стабильности.
Реакция сообщества. «Starlette работала настолько стабильно, что казалось, будто 1.0 уже давно вышла». Несколько человек отметили, что узнали о Starlette как о зависимости, только когда начали копаться в MCP-серверах.
Установка:
@zen_of_python, также в Max
Напомню, Starlette — легковесный ASGI-фреймворк для Python. Поддерживает WebSocket, HTTP/2, фоновые задачи, middleware и маршрутизацию. На нём построен FastAPI, Starlette отвечает за всю сетевую часть, а FastAPI добавляет сверху валидацию через Pydantic и автогенерацию OpenAPI-схемы.
Том Кристи создал Starlette в июне 2018, а сейчас Марсело Трилесинский (Kludex) выпустил первый RC версии 1.0. Почти 10 млн скачиваний в день, а с недавних пор ещё и зависимость Python MCP SDK.
Что в релизе. Удаление deprecated-фич, помеченных для удаления в 1.0.0, плюс финальные баг-фиксы. Никаких крупных новых API, акцент на стабильности.
Реакция сообщества. «Starlette работала настолько стабильно, что казалось, будто 1.0 уже давно вышла». Несколько человек отметили, что узнали о Starlette как о зависимости, только когда начали копаться в MCP-серверах.
Установка:
pip install starlette==1.0.0rc1@zen_of_python, также в Max
🔥8🎉5
PEP 747 принят. В
Раньше функции вроде
Теперь можно так:
В Python приедет с версии 3.15. Уже сейчас доступно через
@zen_of_python
Telegram | Max
typing добавится TypeForm[T] — способ аннотировать аргументы, которые принимают не значения, а сами типы: int | str, list[int], TypedDict и другие.Раньше функции вроде
trycast() или is_match() из библиотек beartype, pydantic, typeguard приходилось аннотировать через object, слишком широко, без проверки типов.Теперь можно так:
def trycast[T](typx: TypeForm[T], value: object) -> T | None: ...
def is_match[T](value: object, typx: TypeForm[T]) -> TypeGuard[T]: ...
# Или просто переменная:
int_form: TypeForm = int | None
В Python приедет с версии 3.15. Уже сейчас доступно через
typing_extensions. Экспериментальная поддержка есть в Pyright@zen_of_python
Telegram | Max
👍10❤1
Внезапное порно в Conda
История такая: один разработчик хотел посмотреть YouTube, открыл меню «Пуск» в винде, начал вбивать You и увидел подсказу YouPorn. Очень удивился, потому что он не смотрит порно (конечно, а как вы подумали).
Начал расследование. Оказалось, что файл с таким именем лежит в
Protego — Python-библиотека для парсинга файлов robots.txt. В её тестовых данных есть пример файла robots.txt с сайта YouPorn т.е. обычный тест на реальных данных из интернета. Никакого вредоносного кода, никакой атаки на supply chain, просто Windows Search проиндексировал содержимое тестовых файлов внутри пакетов Conda.
Это хороший повод напомнить: Windows Search индексирует всё подряд, включая содержимое директорий с пакетами. При разработке на винде лучше добавить такие диры в исключения. Или не разрабатывать на винде.
@zen_of_python
История такая: один разработчик хотел посмотреть YouTube, открыл меню «Пуск» в винде, начал вбивать You и увидел подсказу YouPorn. Очень удивился, потому что он не смотрит порно (конечно, а как вы подумали).
Начал расследование. Оказалось, что файл с таким именем лежит в
Anaconda3\pkgs\protego\info\test\tests\test_data
Protego — Python-библиотека для парсинга файлов robots.txt. В её тестовых данных есть пример файла robots.txt с сайта YouPorn т.е. обычный тест на реальных данных из интернета. Никакого вредоносного кода, никакой атаки на supply chain, просто Windows Search проиндексировал содержимое тестовых файлов внутри пакетов Conda.
Это хороший повод напомнить: Windows Search индексирует всё подряд, включая содержимое директорий с пакетами. При разработке на винде лучше добавить такие диры в исключения. Или не разрабатывать на винде.
@zen_of_python
🌚12😁10✍2❤2
Опубликован черновик PEP 827 (Type Manipulation). Он предлагает добавить в Python возможности из TypeScript, чтобы не дублировать код при описании моделей.
Допустим, у вас есть класс
Сейчас приходится вручную писать новый класс и дублировать поля.
С PEP 827 можно будет сгенерировать его одной строкой:
—
—
— Если тип
Вместо копипасты под каждый эндпоинт (Create, Update, Read) вы описываете одну модель и генерируете производные. И всё это работает на уровне статического анализа. Черновик нацелен на Python 3.15.
@zen_of_python (теперь и в Max)
Допустим, у вас есть класс
User для базы данных, где есть id, email, username и created_at. Вам нужен класс UserUpdate для API, где id и created_at менять нельзя, а остальные поля необязательны, можно обновить только email.Сейчас приходится вручную писать новый класс и дублировать поля.
С PEP 827 можно будет сгенерировать его одной строкой:
UserUpdate = Partial[Omit[User, "id" | "created_at"]]
—
Omit убирает лишние поля из базового класса—
Partial делает оставшиеся необязательными— Если тип
email изменится в главной модели, он автоматически обновится и в UserUpdateВместо копипасты под каждый эндпоинт (Create, Update, Read) вы описываете одну модель и генерируете производные. И всё это работает на уровне статического анализа. Черновик нацелен на Python 3.15.
@zen_of_python (теперь и в Max)
🔥10👎9
Кто вы в IT? Если не нашли свой вариант — напишите в комментах
Anonymous Poll
12%
Junior
31%
Middle
21%
Senior
8%
Тимлид в разработке
2%
Руководитель не в разработке (деврел, HR, маркетинг)
9%
В IT, но не разработчик (дизайн, аналитика, продакт, техпис)
3%
Нет профессионального интереса в IT
14%
Студент / ещё не работаю в IT
Чем занимаетесь? Можно выбрать несколько вариантов
Anonymous Poll
54%
Веб (Frontend / Backend / Fullstack)
5%
Мобилки (Android, iOS, Flutter, RN)
4%
Геймдев
20%
Аналитика / Data Science
19%
AI / ML
22%
DevOps / Инфраструктура / Облака
8%
Embedded / IoT / Desktop
8%
Кибербезопасность
14%
Тестирование / QA
Forwarded from Типичный программист
Победителями премии Тпрогер 🐀 становятся...
Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы?
В номинации «Продукт года» золотая мышь достается компании:
🐀 NetVision за платформу интеллектуального мониторинга СИМ .
В номинации «Облачный продукт года» побеждает компания:
🐀 Гравитон с паком виртуализации «Гелиус»
Звание «IT-ивент года» вручается компании:
🐀 Островок! за О!Хакатон
И в категории «Дизайн года» первое место занимает компания:
🐀 AcademiaDev за интерактивную инсталляцию .
Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте 🏆участникам, которые хоть и не заняли призового места, но точно остались в сердечке.
И 🔥, если хотите аналогичных активностей и готовы выбирать еще!
Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы?
В номинации «Продукт года» золотая мышь достается компании:
В номинации «Облачный продукт года» побеждает компания:
Звание «IT-ивент года» вручается компании:
И в категории «Дизайн года» первое место занимает компания:
Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте 🏆участникам, которые хоть и не заняли призового места, но точно остались в сердечке.
И 🔥, если хотите аналогичных активностей и готовы выбирать еще!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Если вы используете httpx в своих проектах, обратите внимание на изменения в репозитории. На днях мейнтейнер библиотеки полностью закрыл доступ к issues и discussions на гитхабе.
Причина блокировки оказалась не технической. Автор объяснил свое решение тем, что больше не хочет поддерживать онлайн-среду с «абсурдно искаженным гендерным представительством».
Чем это грозит на практике:
— библиотека не получала новых релизов уже больше года, новых скорее всего уже тоже не будет;
— разработчики потеряли возможность сообщать о багах и обсуждать код.
Поскольку httpx часто применяется для асинхронных запросов, на реддите уже активно обсуждают будущее проекта. Многие пользователи не понимают, как поддерживать свои продукты дальше без обратной связи от автора.
Пока непонятно, появится ли полноценный форк или сообществу придется переходить на альтернативы вроде aiohttp. Советую иметь в виду при выборе библиотеки в своих проектах.
@zen_of_python (теперь и в Max)
Причина блокировки оказалась не технической. Автор объяснил свое решение тем, что больше не хочет поддерживать онлайн-среду с «абсурдно искаженным гендерным представительством».
Чем это грозит на практике:
— библиотека не получала новых релизов уже больше года, новых скорее всего уже тоже не будет;
— разработчики потеряли возможность сообщать о багах и обсуждать код.
Поскольку httpx часто применяется для асинхронных запросов, на реддите уже активно обсуждают будущее проекта. Многие пользователи не понимают, как поддерживать свои продукты дальше без обратной связи от автора.
Пока непонятно, появится ли полноценный форк или сообществу придется переходить на альтернативы вроде aiohttp. Советую иметь в виду при выборе библиотеки в своих проектах.
@zen_of_python (теперь и в Max)
😱7🤣4❤2
Откуда вы? Если нет вашего варианта — напишите в комментах
Anonymous Poll
25%
Москва
10%
Петербург
11%
Юг России (Ростов, Краснодар, Кавказ)
8%
Поволжье (Нижний Новгород, Казань)
8%
Урал (Екатеринбург)
10%
Сибирь и Дальний Восток
14%
Беларусь / Казахстан / Узбекистан / Украина
5%
Европа / США / Канада
10%
Другое
Публичный API pandas теперь на 100% покрыт аннотациями типов. За год команды Quansight Labs и Pyrefly перебрали кодовую базу и подняли покрытие с 47% до максимума, ориентируясь на проверки статического анализатора.
Что это меняет на практике:
— ваши IDE вроде VSCode и PyCharm начнут выдавать адекватный автокомплит и точные подсказки по методам;
— статические анализаторы смогут ловить баги с неправильными аргументами ещё до запуска пайплайна.
От себя могу добавить только одно: наконец-то.
@zen_of_python
Что это меняет на практике:
— ваши IDE вроде VSCode и PyCharm начнут выдавать адекватный автокомплит и точные подсказки по методам;
— статические анализаторы смогут ловить баги с неправильными аргументами ещё до запуска пайплайна.
От себя могу добавить только одно: наконец-то.
@zen_of_python
👏12❤3🆒2❤🔥1
Вышел релиз DuckDB 1.5.0. Если вы ещё не пользовались этим инструментом, представьте себе SQLite, но только для аналитики и работы с данными. Это колоночная база данных, которая работает локально внутри вашего процесса без отдельного сервера и умеет очень быстро переваривать огромные датасеты.
Что интересного завезли в новом обновлении:
— на уровне движка добавили типы
— консольную утилиту
В связке с новой функцией
На выходе вы мгновенно получите отформатированную таблицу в консоли. Идеальный инструмент, когда нужно быстро проанализировать датасет без поднятия тяжёлой инфраструктуры.
@zen_of_python
Что интересного завезли в новом обновлении:
— на уровне движка добавили типы
VARIANT для полуструктурированных данных и GEOMETRY для пространственных вычислений;
— консольную утилиту
duckdb-cli опубликовали в PyPI, поэтому теперь ее не нужно качать руками, а можно моментально поднимать через pip или uv;
В связке с новой функцией
read_duckdb это позволяет делать классные вещи прямо в терминале. Например, вы можете одной командой прочитать таблицу из удал`нной базы по ссылке, вообще не скачивая сам файл целиком на диск:uv run -w duckdb-cli duckdb -c "from read_duckdb('https://blobs.duckdb.org/data/animals.db', table_name='ducks')"На выходе вы мгновенно получите отформатированную таблицу в консоли. Идеальный инструмент, когда нужно быстро проанализировать датасет без поднятия тяжёлой инфраструктуры.
@zen_of_python
❤2👍2🔥1
Как ML помогает тестировать то, что нельзя предсказать вручную?
В новом материале — кейс о том, как спроектировать систему динамической генерации тестовых сценариев для транспортного проекта. За основу взято имитационное моделирование с элементами ML.
В статье подробное описание архитектуры решения:
— пайплайн из Great Expectations, Evidently AI, DVC и Airflow;
— три слоя данных: продовые срезы, обезличенные профили и «мутации» аномалий от ML;
— а еще швейцарский сыр.
Как он там оказался, читайте в статье.
@zen_of_python (теперь в VK и Max)
В новом материале — кейс о том, как спроектировать систему динамической генерации тестовых сценариев для транспортного проекта. За основу взято имитационное моделирование с элементами ML.
В статье подробное описание архитектуры решения:
— пайплайн из Great Expectations, Evidently AI, DVC и Airflow;
— три слоя данных: продовые срезы, обезличенные профили и «мутации» аномалий от ML;
— а еще швейцарский сыр.
Как он там оказался, читайте в статье.
@zen_of_python (теперь в VK и Max)
❤1
Разработчик провёл масштабное исследование всех способов ускорить Python. Взял классические математические тесты (n-body, spectral-norm) и пайплайн обработки JSON, а затем прогнал их вообще через всё: от разных версий CPython и PyPy до Numba, Cython, Mojo и связки Rust/PyO3.
Самые интересные результаты бенчмарков:
— GraalPy стал главным сюрпризом. На задаче spectral-norm он разогнал выполнение в 66 раз без единого изменения в исходном коде, обогнав даже скомпилированный Cython;
— в самом Cython нашлась неприятная подстава с типами. Оказалось, что возведение в дробную степень через стандартный оператор
— компилятор Cython никак не предупреждает о таких просадках при сборке. Код успешно компилируется, но теряет огромную долю потенциального ускорения.
В итоге для реального продакшена самым стабильным вариантом остаётся классический подход. Проще всего держать основную бизнес-логику на обычном интерпретаторе, а точечные узкие места переписывать на Rust или выносить в C-расширения. Код всех проверок и итоговые графики выложены в открытый доступ на гитхабе.
@zen_of_python (теперь в VK и Max)
Самые интересные результаты бенчмарков:
— GraalPy стал главным сюрпризом. На задаче spectral-norm он разогнал выполнение в 66 раз без единого изменения в исходном коде, обогнав даже скомпилированный Cython;
— в самом Cython нашлась неприятная подстава с типами. Оказалось, что возведение в дробную степень через стандартный оператор
** работает в 40 раз медленнее, чем прямой вызов сишной функции libc.math.sqrt() с типизированными даблами;
— компилятор Cython никак не предупреждает о таких просадках при сборке. Код успешно компилируется, но теряет огромную долю потенциального ускорения.
В итоге для реального продакшена самым стабильным вариантом остаётся классический подход. Проще всего держать основную бизнес-логику на обычном интерпретаторе, а точечные узкие места переписывать на Rust или выносить в C-расширения. Код всех проверок и итоговые графики выложены в открытый доступ на гитхабе.
@zen_of_python (теперь в VK и Max)
🔥4