Находки в опенсорсе
Привет!Меня зовут Никита Соболев. Я занимаюсь опенсорс разработкой полный рабочий день.Тут я рассказываю про#python,#c, опенсорс и тд.Поддержать:https://boosty.to/sobolevnРКН:https://vk.cc/cOzn36Связь:@sobolev_nikita
Recent Posts
cibuildwheel: делаем колеса в промышленных масштабахСсылка:https://github.com/pypa/cibuildwheelПривет! Вы наверняка когда-нибудь задумывались, откуда берутся все те замечательные wheel пакеты под разные системы и архитектуры для наших любимых зависимостей с бинарными частями. Например: mypy, black, тд.Вот и я - нет!Но, когда мне для релизаdjango-modern-rest@0.5.0потребовалоськомпилировать части фр...
Нас всех заменят!Сегодня я открыл для себя вайбкодинг. Да, модели действительно пишут код лучше людей.За несколько часов я смог сделать больше, чем за месяц до.Конечно, потребовались некоторые изменения рабочего процесса.Из самого важного:• Описывать контекст по частям• Делать строгиеAGENT.md• Использовать последние SOTA модели• Пользоваться скилами готовыми под нужные технологииЕще я заметил, что...
tracecov: считаем покрытие АПИ через спецификацию OpenAPIВышла новая версия0.4.0https://github.com/wemake-services/django-modern-restИ там мы выпустили поддержкуtracecov. Инструмент новый, такого в других фреймворках я не видел.В чем суть? Там мы считаем не "покрытие кода", а намного более важную метрику: "покрытие тестами нашего АПИ". Ну то есть буквально:• Какие операции были вызваны?• С какими ...
И сразу бонусом хочу напомнить, что такое обычное выражениеRESULT = yield from EXPRв CPython._i = iter(EXPR)try:_y = next(_i)except StopIteration as _e:_r = _e.valueelse:while 1:try:_s = yield _yexcept GeneratorExit as _e:try:_m = _i.closeexcept AttributeError:passelse:_m()raise _eexcept BaseException as _e:_x = sys.exc_info()try:_m = _i.throwexcept AttributeError:raise _eelse:try:_y = _m(*_x)exce...
PEP 828: async yield from и состояние асинхронных генераторов в питонеPEP:https://peps.python.org/pep-0828Обсуждение:https://discuss.python.org/t/pep-828-supporting-yield-from-in-asynchronous-generators/106459Код:https://github.com/python/cpython/pull/145716В питон хотят добавитьasync yield from. И у меня есть много разных мыслей.Во-первых, оно реально иногда удобно. Во-вторых, реально консистентн...
Находки в опенсорсеpinned «django-modern-rest@0.1.0 – первый публичный релиз! Исходники: https://github.com/wemake-services/django-modern-rest Подробнейшая документация: https://django-modern-rest.readthedocs.io Пример настоящего приложения: https://github.com/wemake-services/wemake…»
Начало:https://t.me/opensource_findings/950Что будет дальше?– Доработка доки. Я хочу, чтобы люди заново открывали для себя Джангу (лучший фреймворк для веба на питоне, имхо). Изучали лучшие практики, думали про архитектуру. Сейчас дока в хорошем состоянии, но нет предела совершенству– Мы еще даже не пробовали значительно ускорить проект. В рамках идей: переписывания кусков на Rust, Cython, компиля...
django-modern-rest@0.1.0 – первый публичный релиз!Исходники:https://github.com/wemake-services/django-modern-restПодробнейшая документация:https://django-modern-rest.readthedocs.ioПример настоящего приложения:https://github.com/wemake-services/wemake-django-templateПервый анонсбыл уже какое-то время назад.Так что давайте повторять, что у нас тут происходит.Во-первых, у нас рекорд: еще нет ни одног...
PEP-827: Самое интересное, что случалось с типами в питоне!Текст:https://peps.python.org/pep-0827/Обсуждение:https://discuss.python.org/t/pep-827-type-manipulation/106353Если вы когда-то писали на TypeScript (одобряем) или на каких-то других языках с продвинутой системой типов, вам всегда должно было быть больно от того, что происходит в Python.Да, тут можно выразить некоторые простые вещи. Но, ка...
PEP-747: TypeForm, или "аннотируем аннотации"PEP:https://peps.python.org/747Реализация:https://github.com/python/cpython/pull/145034Что и зачем?Представьте, что вам нужно описать, что какая-то функция может принять в качестве входного аргумента любую аннотацию. Например для валидации как в пидантике. Как бы вы такое сделали?type[T]?from typing import Anydef validate[T](typ: type[T], value: Any) ->...
PEP-814: frozendictВ Python 3.15 появится полноценный иммутабельный словарь.PEP:https://peps.python.org/pep-0814Обсуждение:https://discuss.python.org/t/pep-814-add-frozendict-built-in-type/104854Оригинальный PR:https://github.com/python/cpython/pull/144757Исходники(да, они сdictлежат в одном файле на 8к строк)Зачем?Главный вопрос: зачем питону вдруг через 35 лет понадобился иммутабельный словарь? ...
Обстановка в опенсорсе прямо сейчас:https://github.com/wemake-services/wemake-python-styleguide/issues/3596А пока - все вместе ждем релизаdjango_modern_rest, уже скоро.
PEP-800: typing.disjoint_baseПЕП:https://peps.python.org/pep-0800Обсуждение:https://discuss.python.org/t/99910Реализация вtyping_extensions:https://github.com/python/typing_extensions/blob/a7610ef567132cac2b5319fa193c830b655364c6/src/typing_extensions.py#L358Когда я критикую систему типов в питоне, говоря, что её не продумывали заранее, тоdisjoint_base- отличный пример моих слов.В питоне можно нас...
PEP-799: Семплирующий профилировщик встроенный в Python 3.15+Краткий обзор:https://docs.python.org/3.15/whatsnew/3.15.html#whatsnew315-sampling-profilerДокументация:https://docs.python.org/3.15/library/profiling.sampling.htmlКратко:- В 3.15cProfile(написан на C) был перемещен вprofiling.tracing- В 3.15profile(написан на Python) стал deprecated, его уберут в 3.17- Добавили новыйprofiling.sampling(к...
git-lfs: храним большие файлы в репозитории правильноhttps://www.youtube.com/watch?v=82wj6y2rmR4Вы сталкивались с проблемой, что рабочий проект клонируется 10 минут?А когда начинаешь разбираться: почему так? То оказывается, что внутри десятки непережатых картинок для фронта, которые еще и менялись регулярно (а значит, оставили след в истории git навсегда).Данная проблема влияет не только на локаль...
Аллокаторы в СPython: PyArena Один из самых простых аллокаторов в питоне. Исходники. По сути данный аллокатор является небольшой оберткой поверх PyMem_Malloc, но с интересной особенностью. Если PyMem_Malloc имеет PyMem_Free для освобождения памяти каждого…
Breaking newsВ CPython предлагают добавить Rust:https://discuss.python.org/t/pre-pep-rust-for-cpython/104906Пример кода:https://github.com/emmatyping/cpython/pull/13/files#[unsafe(no_mangle)]pub unsafe extern "C" fn b64encode(_module: *mut PyObject,args: *mut *mut PyObject,nargs: Py_ssize_t,) -> *mut PyObject {if nargs != 1 {unsafe {PyErr_SetString(PyExc_TypeError,c"b64encode() takes exactly one a...
minimal vscode: убираем вкладки https://www.youtube.com/watch?v=reT_wnDSaX4 Вкладки любят делать вид, что они очень полезны. Однако, такое впечатление обманчиво. Навигация по ним будет съедать у вас кучу времени. Взамен – есть способы лучше. Что будет в…
Зачем нужен новый REST API для Django?Последний месяц я крайне увлечен созданиемhttps://github.com/wemake-services/django-modern-rest(Кстати, у нас уже >200 звезд и 26 контрибьюторов при 0 релизов)Ключевой вопрос – зачем? Что будет нового?Во-первых, я крайне сильно люблю Django. Основная причина – под него есть буквально любые библиотеки. Все то, что в FastAPI нужно героически писать руками – в дж...
PEP-734: Subinterpreters in stdlib - PEP: https://peps.python.org/pep-0734 - Обсуждение: https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147 - Документация: https://docs.python.org/3.14/library/concurrent.interpreters.html Что…