Planet Python на русском Заметка

Planet Python на русском

Сайт Planet Python - это планетарный сайт, на котором собраны материалы, связанные с Python, из различных источников, включая блоги, новостные сайты и другие онлайн-издания. Сайт представляет собой универсальное место, где можно быть в курсе последних событий в мире программирования на Python. Контент сайта включает в себя учебники, новости, анонсы проектов и обсуждения различных тем, связанных с Python. Пользователи могут посещать сайт, чтобы быть в курсе событий, происходящих в сообществе Python, новых релизов, конференций и лучших практик использования языка программирования Python. Цель сайта - способствовать продвижению и распространению контента, связанного с Python, тем самым внося свой вклад в рост и развитие сообщества Python.

Трэд заметок

Гнев на работе, как правило, непродуктивен и создает негативную атмосферу для коллег. Обнаружение общего видения в компании и согласование с ним, или принятие его, если существует несогласие и изменения невозможны, имеет решающее значение. Распространенный вопрос в технологической индустрии заключается в том, как избежать гнева в условиях быстрых изменений, особенно касающихся ИИ. Автор предполагает, что чувства дезориентации и тревоги являются более уместными реакциями, чем гнев. Тревога признает неопределенность будущего, не возлагая вину. Гнев же требует цели и подразумевает внешнюю неправоту. Хотя ИИ может принести прирост производительности, есть опасения, что это принесет пользу компаниям, а не сотрудникам. Многие технологические лидеры выражают сомнения относительно ИИ, беспокоясь о затратах и конкуренции со стороны крупных ИИ-лабораторий. Вместо гнева автор предлагает принять неопределенность, которая может способствовать любопытству и вовлеченности в новые разработки. Искренний энтузиазм — еще одна альтернатива, ведущая к чувству расширения прав и возможностей и свободы. Автор отмечает, что преимущества ИИ часто проявляются в личных проектах, а не только в прибыли компаний. Этот сдвиг подчеркивает неопределенность, с которой сталкиваются лидеры, многие из которых демонстрируют уверенность, несмотря на личные сомнения. Автор испытывает эту двойственность волнения и неопределенности в отношении своей профессии и бизнеса. Хотя гнев может ощущаться более действенным, поскольку он предоставляет злодея, он часто отвлекает внимание во время разрушительных изменений, таких как ИИ. Хотя общественные, экологические и глобальные последствия этих изменений вызывают беспокойство, зацикливание на гневе по отношению к отдельным лицам непродуктивно. Вместо этого поощряется сохранять любопытство и энтузиазм в отношении экспериментов. Такой подход позволит принимать обоснованные решения о том, когда и где сопротивление действительно оправдано.
Автор активно занимается улучшением LernerPython, основываясь на отзывах пользователей со всего мира, что привело к ряду значительных обновлений. В рамках членства в LernerPython будет добавлен ежемесячный семинар по ИИ, чтобы осветить растущую важность ИИ для разработчиков. Первый семинар, запланированный на 24 августа, будет посвящен использованию Claude Code в качестве супероболочки. Кроме того, на LernerPython.com теперь доступен ИИ-тьютор Сократа, обученный на обширных материалах автора. Этот тьютор готов помогать пользователям с вопросами на их родном языке. Старые выпуски Bamboo Weekly станут общедоступными через два года, предоставляя сотни упражнений по анализу данных. Автор также создал новую документацию по методам Pandas, используемым в Bamboo Weekly, с практическими примерами и распространенными ошибками. Эти новые объяснения методов Pandas доступны даже для тех, кто не является подписчиком. Полный календарь предстоящих часов для консультаций и библиотека прошлых записанных сессий теперь доступны на странице мероприятий LernerPython.com. Эти изменения направлены на улучшение обучения и предоставление более доступных ресурсов для разработки на Python и ИИ.
Я написал крошечную реализацию языка: Calcium. Он предназначен для демонстрации того, как реализуются языки вроде Python. Он содержит токенизатор, парсер, AST, компилятор, байт-коды и исполнительный движок, все примерно в 300 строках кода. Я сделал это, потому что часто вижу вопрос: разве Python не интерпретируемый? Почему говорят, что он компилируемый? (Кстати, я также ответил на это в предыдущем посте в блоге: Интерпретируемый Python или компилируемый? Оба варианта.) Может быть трудно объяснить, что ваша программа на Python никогда не превращается в явную последовательность нативных инструкций процессора, что люди часто подразумевают под "компилируемым". Поэтому я написал Calcium, чтобы иметь его под рукой в следующий раз, когда этот вопрос возникнет. Я думаю, будет полезно иметь возможность показать код исполнительного движка, читающего байт-коды и выполняющего их. Это также может стать интересной отправной точкой для тех, кто хочет поэкспериментировать с реализацией языка. В нем почти ничего нет, поэтому есть много простых вещей (комментарии?), которые можно добавить.
Автор наверстывает упущенное в блоге после перерыва. Недавно его доклад был принят для участия в FOSS4G UK 2026, что побудило его написать о мастер-классе, который он провел на FOSS4G UK 2025. Мастер-класс был посвящен генерации векторных тайлов в реальном времени из базы данных PostGIS с использованием инструмента pg_tileserv. Участники научились подавать тайлы непосредственно из таблиц и функций PostGIS, выполняя практические упражнения. Целью мастер-класса было продемонстрировать возможности генерации векторных тайлов "на лету" для сложных геопространственных рабочих процессов.Отдельно автор также выступил с докладом под названием "Свет, спектрометр, действие!" на фестивале Electromagnetic Field. В этом докладе исследовалась наука спектрометрии, включая демонстрации в реальном времени со спектрометром. Были изучены свет из различных источников и его взаимодействие с различными материалами. В докладе также затрагивались применения спектрометрии в спутниковой съемке и потенциальные возможности ее использования в химии.Заглядывая в будущее, автор выступит на FOSS4G UK 2026 с докладом о предоставлении доступа к данным DEM Агентства по охране окружающей среды. Он преобразовал эти данные в облачные форматы, такие как STAC и COG, что облегчает доступ и анализ. Эта работа позволяет эффективно создавать мозаики DEM и пользовательские визуализации веб-карт. Автор также разрабатывает собственное программное обеспечение для управления спектрометром.
CdXz5zHNQW_3HN87m7Gll.png
Модуль подписи Django позволяет создавать безопасные ссылки для отписки без необходимости входа пользователя или сессий. Небезопасный подход, напрямую использующий идентификаторы пользователей в URL, уязвим для массовых отписок. Хранение случайных токенов в базе данных является распространенным, но более сложным решением. Модуль django.core.signing в Django предоставляет токены с защитой от подделки, не требуя хранения в базе данных, подписывая значение (например, первичный ключ пользователя) с помощью SECRET_KEY."Соль" имеет решающее значение для предотвращения коллизий токенов между различными функциями, гарантируя, что токен для одной цели (например, анонсов) не может быть использован для другой (например, уведомлений форума). Несмотря на подпись, токены не являются секретными; данные внутри них читаемы, но не могут быть изменены без аннулирования подписи. Поэтому не подписывайте конфиденциальную информацию, предназначенную для скрытия.Критически важно, чтобы действия по отписке происходили по POST-запросу, а не по GET-запросу, чтобы предотвратить случайную отписку пользователей почтовыми сканерами и префетчерами. Рекомендуемый поток — страница подтверждения по GET, за которой следует POST для завершения действия.Токены отписки часто не требуют срока действия, так как повторное нажатие на старую ссылку дает тот же безопасный результат. Однако для конфиденциальных действий, таких как ссылки для магического входа, аргумент max_age в signing.loads обеспечивает срок действия без хранения в базе данных. Для сценариев с одноразовыми токенами, таких как проверка электронной почты, требуется дополнительное управление состоянием (запись в базе данных использованных токенов), поскольку сама по себе подпись не может отслеживать использование.
CdXz5zHNQW_kaNMCAHtWT.webp
Развитие больших языковых моделей (LLM) значительно упростило процесс программирования, сделав выбор языка менее критичным для разработчиков. Возможность переписывать код на разных языках или генерировать код на незнакомых снижает трение для людей. Этот сдвиг позволяет выбирать язык, руководствуясь в большей степени маркетингом и предполагаемыми преимуществами, такими как производительность. Например, популярность Rust возросла отчасти из-за растущего желания получить более быстрое программное обеспечение и способности LLM эффективно оптимизировать код. Эксперты, такие как Митчелл Хашимото и другие, известные своим фокусом на производительности, также принимают код, написанный агентами. Инструменты, такие как autoresearch, позволяют разработчикам достигать оптимизации без необходимости обширных предварительных знаний.Помимо Rust, другие "сложные языки", такие как Zig, также набирают обороты в проектах, нацеленных на скорость и малый размер. Сервис Cloudflare Artifacts и агент Vercel fx, использующие Zig, являются примером этой тенденции, часто при содействии LLM. Кроме того, разработчики теперь занимаются традиционно сложными технологиями, такими как файлы DWARF, eBPF, пользовательские сетевые драйверы и даже старое вычислительное оборудование. Многие из этих областей ранее были недоступны или намеренно закрыты. Хотя это изменение может привести к некоторой "небрежности", оно также привлекает больше разработчиков, которые ценят скорость и эффективность, что потенциально может привести к новой эре высокопроизводительного программного обеспечения.
Участникам DjangoCon US предлагается 45-минутная сессия в формате открытого пространства, посвященная Фонду программного обеспечения Django (DSF). Мероприятие состоится в среду, 26 августа, с 13:00 до 13:45 в зале Wolf Point Ballroom. Директора правления DSF и другие представители DSF будут присутствовать для открытого обсуждения и ответов на вопросы. Ключевые темы будут включать усилия по сбору средств и цель в 500 000 долларов, а также ее финансирование, особенно для стипендиатов Django. Также будет обсуждаться текущий поиск первого исполнительного директора DSF, прием заявок на который завершится 14 сентября 2026 года. Будет предоставлена информация об индивидуальном членстве, способах его получения и преимуществах членства, таких как право голоса. Сессия также охватит рабочие группы и команды, разъяснив, что для участия в них членство не требуется. Будут представлены обновления по DEP 19, касающемуся технического управления, и DEP 20, касающемуся графика выпуска Django. Эта открытая сессия предназначена для всех участников, независимо от их текущего статуса членства в DSF, чтобы задать вопросы о деятельности Фонда и процессе принятия решений. Приветствуются вопросы о самом Фонде, а не о конкретных проблемах с кодом. Для тех, кто не сможет присутствовать, вопросы можно направить через страницу "Связаться с DSF" или через форум Django.
Недавний опрос показывает, что ИИ является неотъемлемой частью рабочего процесса большинства разработчиков: 90% используют его еженедельно или ежедневно. Хотя ИИ может быстро писать код, разработчики по-прежнему несут ответственность за понимание, оценку и одобрение его результатов. Это подчеркивает решающую роль IDE, а PyCharm выделяется как инструмент, расширяющий контроль разработчика. PyCharm позволяет пользователям выбирать предпочитаемых ИИ-агентов и модели, предлагая нативную поддержку ведущих вариантов и обширный реестр для других. Пользователи могут выбрать подписку на JetBrains AI или использовать собственные инструменты, включая локальные модели через Ollama или LM Studio. IDE также позволяет разработчикам обучать ИИ-агентов на конкретных соглашениях проекта и стандартах кодирования с помощью многократно используемых "навыков". PyCharm обеспечивает надежную, специфичную для версии поддержку Django, включая его последние функции, обеспечивая соответствие даже при устаревших данных обучения ИИ. Кроме того, IDE предлагает комплексные инструменты для проверки кода, такие как визуальные различия и интегрированная история Git, а также функцию локальной истории для отслеживания изменений независимо от системы контроля версий. Представление логической структуры Django в PyCharm визуализирует архитектуру приложения с точки зрения фреймворка, помогая понять ее. Наконец, окно инструментов "Конечные точки" и редактор/средство просмотра данных облегчают проверку API и взаимодействие с базами данных, позволяя разработчикам уверенно оценивать сгенерированный ИИ код и его влияние.
Мэтт Ли, эксперт по управлению дорогостоящими почасовыми простоями, подчеркивает, что ключевые решения по устранению чрезвычайных ситуаций принимаются задолго до их возникновения. Он выступает за проактивные меры, принимаемые в обычные рабочие дни для предотвращения будущих проблем. Обсуждение охватывает его двенадцать лучших практик AWS, таких как использование инфраструктуры как кода и ролей IAM. Он также рассматривает применимость этих практик для людей, управляющих небольшими экземплярами VPS. Затем разговор переходит к Cloud War Games, платформе, где моделируются преднамеренные сбои. Это позволяет командам получить практический опыт реагирования на инциденты без последствий в реальном мире. Эти симуляции предназначены для того, чтобы стать их первым реальным инцидентом в контролируемой среде. Конечная цель — обеспечить команды готовностью, необходимой для неожиданных сбоев системы. Эта подготовка помогает минимизировать влияние и репутационный ущерб от простоя.
Большие языковые модели (LLM) усугубляют существующий кризис в сообществе разработчиков открытого программного обеспечения, особенно в отношении объема проверок кода. Это давление выходит за рамки открытого исходного кода, затрагивая всю сферу вычислений. LLM коренным образом меняют процесс программирования, даже для тех, кто пытается их избегать. Пользователи используют LLM для автоматизации обширных проверок кода, что влечет за собой значительные вычислительные затраты.Эта автоматизация вызывает опасения по поводу потенциальных изменений в ценообразовании API, по сути, взимая плату за то, что ранее было более доступным. Автор, сторонник свободного программного обеспечения с открытым исходным кодом, наблюдает сдвиг в сторону аренды программного обеспечения, отражая прошлую эпоху, когда приобретение таких инструментов, как компиляторы, было значительными расходами. Теперь многие программные инструменты и доступ к LLM требуют ежемесячных платежей, что приводит к ситуации, когда разработчики должны платить, чтобы выполнить свою работу.Эта тенденция рассматривается как "ухудшение", когда компании обучают модели на украденных работах, а затем продают их обратно разработчикам. Более того, LLM представляются как угроза инженерным рабочим местам, способствуя ухудшению рынка труда с меньшим количеством возможностей и более низкой оплатой. Технологические компании воспринимаются как активно атакующие инженерную профессию, настаивая на использовании моделей, которые они контролируют.Даже без обязательного использования LLM, давление, чтобы не отставать от работы, сгенерированной LLM, огромно, что потенциально ставит под угрозу безопасность цепочки поставок. Автор утверждает, что ажиотаж вокруг LLM является частью более широкой социальной атаки на работников и окружающую среду. Решение этой проблемы требует коллективных политических и социальных действий, а не индивидуальной адаптации.
PyCharm 2026.2 представляет 263 исправления и улучшения, направленные на повышение качества анализа кода Python. Ключевые обновления включают улучшенное определение типов, сокращение ложных срабатываний и более надежные рефакторинги. Релиз предлагает улучшенную поддержку SQLAlchemy 2.0, решая множество ранее проблемных сценариев. Анализ кода выигрывает от исправлений в сужении потока управления и обработке недостижимого кода. Строки в аннотациях типов и распаковка итерируемых объектов теперь анализируются точнее. Увеличенные присваивания и типы возвращаемых значений конструкторов также анализируются более точно. Члены Enum теперь возвращают типы Literal для своих атрибутов value и name. Типы параметров теперь выводятся из декораторов, а автодополнение и автоимпорт стали умнее. PyCharm теперь отдает приоритет повторному использованию существующих импортов и поддерживает автоимпорт вложенных классов. Автодополнение для целей unittest.mock.patch теперь работает, а переопределение встроенных методов заполняет полные аннотированные сигнатуры. Подсказки типов встраиваются в строку, отображая выведенные аргументы типа, и расширена проверка спецификаций формата f-строк. Рефакторинг Rename теперь корректно обновляет ссылки на модули, а рефакторинг Field теперь называется Attribute. В целом, эти улучшения приводят к более точному и предсказуемому пониманию кода Python в PyCharm.
Python Software Foundation (PSF) управляет критически важной инфраструктурой, такой как PyPI, Python.org и CPython, поддерживая широкое использование Python в различных секторах. Большая часть инфраструктуры PSF работает на AWS, при этом значительные расходы покрываются программой AWS Open Source Credits Program. PyPI обрабатывает миллиарды запросов ежедневно, а кэширование на периферии Fastly снижает необходимость обращения к исходным серверам AWS. Однако некэшируемые взаимодействия, такие как загрузка пользователями, управляются такими сервисами, как EC2, RDS и S3. В этом году расходы на AWS заметно выросли на 69%, что отличается от восьми лет стабильных затрат. Этот рост объясняется увеличением использования со стороны большего числа пользователей, автоматизированных агентов, устанавливающих пакеты, и многочисленных запусков CI. PSF подчеркивает эффективное использование кредитов, выступая за исправления в популярных инструментах, таких как GitHub Actions, на уровне вышестоящих проектов. Крупным текущим проектом является миграция всего парка на Amazon EKS для лучшего автомасштабирования. В настоящее время работа над инфраструктурой в значительной степени зависит от небольшой команды, что подчеркивает острую потребность в большем количестве инженерного персонала. PSF ищет финансирование через организационные счета PyPI и соглашения об обслуживании для улучшения своих услуг и снижения рисков в цепочке поставок.
Вполне возможно создавать приложения PySide6, не полагаясь на файлы .ui или Qt Designer. Разработчики могут создавать все элементы графического интерфейса, включая окна, кнопки и метки, непосредственно в коде Python. Такой подход обеспечивает больший контроль и консолидирует всю логику интерфейса. Базовое приложение PySide6 требует экземпляр QApplication и виджет QWidget для отображения. Виджеты можно создавать и привязывать к окну, но без компоновок они занимают фиксированные позиции. Компоновки Qt, такие как QVBoxLayout, QHBoxLayout и QGridLayout, необходимы для автоматического размещения виджетов. Для управления сложностью рекомендуется создавать подклассы QWidget или QMainWindow. Сигналы и слоты обеспечивают интерактивность; например, сигнал "clicked" кнопки можно связать с функцией Python. QMainWindow предоставляет структуру для меню, панелей инструментов и строк состояния, а содержимое размещается в центральном виджете. Вложенные компоновки можно получить, добавляя одну компоновку в другую с помощью addLayout(). Демонстрация завершается полным приложением QMainWindow, демонстрирующим программное создание графического интерфейса с интерактивными элементами и строкой состояния.
Недавняя статья раскрыла, как извлекать следы рассуждений из моделей с закрытым весом, вызвав обсуждение в сети. Следы рассуждений обычно скрыты от пользователей, в отличие от моделей с открытым весом, где они видны. Эти следы — это, по сути, текст, который модели обучаются выводить на черновик перед своим окончательным ответом. Специальные токены разграничивают эти разделы рассуждений, а парсер направляет этот контент в отдельный поток. Для закрытых моделей этот промежуточный текст, вероятно, будет отредактирован или обобщен. Объем рассуждений, выполняемых моделью, определяется ее системным промптом, а не сэмплированием. Например, он может быть установлен на "низкий" или "Абсолютный максимум без разрешенных сокращений". Модели обучаются держать эту черновую работу отдельно от канала окончательного ответа. Обман модели, заставляющий ее поверить, что она находится в канале рассуждений, может привести к утечке этих следов. Старые модели, когда мышление было отключено, иногда записывали свои мысли в нулевое устройство. В некоторых случаях единственным особым поведением является способность модели воздерживаться от мышления. Этого можно добиться, отключив обычные механизмы мышления модели. Некоторые API для инференса могут предварительно заполнять токены для управления рассуждениями, что можно обойти с помощью пользовательских инструментов, особенно когда отключены нативные рассуждения. Автор в шутку столкнулся с контент-фильтрами, пытаясь использовать конкретную модель для проверки грамматики этого самого блога.
CdXz5zHNQW_KvYYV2hcVr.png
В этом выпуске PyCoder's Weekly освещаются различные темы Python, начиная со сложности разделения многострочного текста из-за Unicode. Курс Real Python знакомит с помощью ИИ в написании кода на Python с использованием OpenCode и Gemini. PR-AF отмечен как лучший рецензент кода с открытым исходным кодом, превосходящий коммерческие инструменты. Отмечается, что две строки кода Python вызывают сегментационную ошибку в интерпретаторе из-за ленивых аннотаций. Объявлены кандидаты на выборы в Packaging Council и Правление PSF на 2026 год. Django переходит на ежегодный цикл выпусков, и были выпущены новые версии Python 3.12.14, 3.11.16 и 3.10.21, а также Django Rest Framework 3.18.0. Статьи посвящены потоку авторизационного кода OAuth 2.0, когнитивной нагрузке pandas и интеграции OpenTelemetry с FastAPI. Новые проекты включают pytest-leak-finder, num2words, marimo-book, pyrig и cog. В течение августа запланировано несколько конференций и встреч по Python.
CdXz5zHNQW_XCM4q7iYG0.png
Выпущены обновления безопасности только для Python 3.12.14, 3.11.16 и 3.10.21. Эти релизы устраняют несколько критических уязвимостей, включая усиление защиты tarfile, обход уязвимостей обхода путей и различные CVE, связанные со стандартной библиотекой Python. Пользователям этих версий, особенно тем, кто работает с ненадежными tar-архивами, настоятельно рекомендуется обновиться.Недавний запрет Codeberg на проекты, в основном сгенерированные ИИ, изучается на предмет его последствий как потенциальной альтернативы GitHub. Эта политика поднимает вопросы о том, должны ли платформы для хостинга кода регулировать процесс создания программного обеспечения, а не фокусироваться на его поведении и влиянии. Сложность определения и обеспечения соблюдения "в основном сгенерированного" кода представляет собой серьезную проблему для этого подхода.Бретт Кэннон выделил недостающие компоненты для достижения воспроизводимых сборок на PyPI. В настоящее время не существует стандартизированного метода для записи точного исходного кода, из которого произошло распространение, или конкретных инструментов сборки, которые использовались. Реализация решений для этих пробелов потребует модификации метаданных sdist и, возможно, введения версии 2 sdist.Основное внимание в воспроизводимых сборках уделяется обеспечению целостности цепочки поставок программного обеспечения. Цель состоит в том, чтобы сделать воспроизведение бесшовным процессом для создателей, одновременно предоставляя бэкэндам сборки и установщикам необходимую информацию. Это может привести к тому, что PyPI будет отображать независимо воспроизведенные сборки, предлагая повышенное доверие для пользователей.Pydantic Logfire спонсирует выпуск, предлагая наблюдаемость для приложений ИИ. Он обеспечивает унифицированное отслеживание между агентами, LLM, API и базами данных, вплоть до уровня инфраструктуры. Logfire использует OpenTelemetry и позволяет запрашивать все данные с помощью SQL, совместимого с Postgres.Спонсор подчеркивает, что даже приложения ИИ по своей сути являются инженерными усилиями. Они предлагают бесплатный тариф и простой процесс онбординга для разработчиков, чтобы интегрировать Logfire в свои приложения.В других новостях uv перешел на предпочтительное использование постквантового обмена ключами для повышения безопасности в своей работе. Это обновление отражает растущую тенденцию к внедрению криптографических методов, устойчивых к будущим угрозам.Другие "дополнительные" пункты включают обновления серверов MCP, синхронизацию агентов через postgres, новые предложения для курсов Talk Python и выпуск аудиокниги "Lean TDD". Выпуск завершается короткой шуткой про собаку.
Интернет-стандарты часто не поддерживают символы, отличные от ASCII, что требует преобразования доменных имен. NamePrep, определенный в RFC 3491, был разработан для этой цели как часть IDNA 2003. Этот более старый стандарт IDNA с тех пор был заменен IDNA 2008, указанным в RFC 5890-5893. Python поддерживает обе версии: IDNA 2003 доступен через кодек idna, а IDNA 2008 — через внешний пакет idna. Модуль stringprep в стандартной библиотеке Python реализует StringPrep. Важным шагом в StringPrep является "приведение к нижнему регистру" (case folding), которое включает преобразование символов в нижний или верхний регистр для сравнения без учета регистра. Этот процесс использует таблицы преобразования B.2 и B.3 из RFC 3454, основанные на правилах Unicode 3.2.0. Была выявлена уязвимость в реализации Python, где стандартная функция str.lower(), использующая более новые версии Unicode, отклонялась от требуемых правил приведения к нижнему регистру Unicode 3.2.0. Это несоответствие приводило к различным кодировкам IDNA для определенных символов. Исправление заключалось в создании специальных исключений, чтобы поведение str.lower() в Python соответствовало Unicode 3.2.0 для расчетов StringPrep и IDNA. Это исправление обеспечивает соответствие IDNA 2003 его спецификации.
Кэл Ньюпорт предупреждает, что скорость написания кода, обусловленная ИИ, может подорвать навыки критического мышления, определяющие хорошее инженерное дело. Вместо активного понимания кода разработчики рискуют пассивным узнаванием, отрываясь от фундаментального понимания. В то время как некоторые выступают за полное возвращение к ручному написанию кода, автор ищет сбалансированный подход. Эта золотая середина включает намеренное внедрение трения, которое имеет решающее значение для обучения и развития навыков.Атрофия навыков происходит не от использования самого ИИ, а от делегирования процесса внутреннего моделирования. Автор различает атрофию навыков и потенциал ИИ генерировать тонко некорректный код. Чтобы сохранить владение и понимание, разработчики должны заново выводить сложные пути кода и убедиться, что они могут объяснить каждое изменение. Сужение задач ИИ до четко определенных проблем помогает вовлекать инженеров и предотвращает перегрузку при проверке кода.Методы Кори Шефера, такие как подробные запросы и тщательная проверка кода, предлагают практические способы сохранения этого трения. Однако человеческое внимание ограничено, что требует автоматизации оставшихся задач. Именно здесь "корректность по дизайну" становится жизненно важной, используя более строгие системные проверки, такие как строгая типизация и утверждения во время компиляции.Rust является примером этого, делая недействительные состояния непредставимыми, заставляя ИИ соответствовать требованиям. В Python аналогичную цель служат проверки типов и модели валидации. В конечном итоге, ответственное использование ИИ в разработке требует как сохранения контроля над критическими решениями для оттачивания суждений, так и внедрения строгих правил для обеспечения подотчетности ИИ. Разработка программного обеспечения остается процессом суждений и опыта, а ИИ автоматизирует утомительные аспекты. Ключевой вывод заключается в том, чтобы определить и отказаться делегировать ИИ наиболее важные решения, обеспечивая истинное владение и надежный код.
Вернувшись из отпуска, автор сталкивается с пугающим объемом личных обязанностей и профессиональных задач. Будучи опытным преподавателем Python, автор признает глубокое влияние ИИ на образование в области программирования и экономический ландшафт своей профессии. Это осознание побуждает к стремлению публично исследовать этот развивающийся мир в ближайшие месяцы. Автор намерен документировать свой процесс обучения и адаптации к изменениям в кодировании, обусловленным ИИ. Это исследование будет включать обсуждение того, как мы учимся, преподаем, пишем и оцениваем код в будущем, сформированном ИИ. Планируемая серия статей будет посвящена принципам SOLID программирования, подчеркивая их важность для надежного кода, сгенерированного ИИ. Другой раздел будет посвящен ИИ-агентам, изучая их природу и эффективное использование. Автор также планирует документировать свой личный путь изучения языка программирования Rust. Эти предстоящие статьи обещают сочетание контента по Python и смежных тем. Автор приглашает читателей присоединиться к нему в этом учебном приключении.
Автор подчеркивает отсутствие четкого метода для воспроизводимых сборок в упаковке Python. Воспроизводимые сборки имеют решающее значение для безопасности цепочки поставок, позволяя третьим сторонам проверять соответствие содержимого дистрибутива исходному коду. Этот процесс может обнаружить подделку во время сборки и выявить использование скомпрометированных инструментов. Даже чисто питоновские колеса уязвимы, если их бэкенды сборки скомпрометированы.Для достижения воспроизводимых сборок необходимы два ключевых элемента информации: местоположение исходного кода и программное обеспечение, используемое в процессе сборки. В настоящее время местоположение исходного кода явно не записывается в sdists или колесах, хотя установщики иногда записывают его. Предлагается механизм для включения информации о местоположении источника в метаданные дистрибутива.Для записи программного обеспечения сборки колеса могут использовать списки материалов программного обеспечения (SBOM), но sdists не имеют аналогичного структурированного формата, что требует потенциально новой версии sdist. Автор предполагает, что бэкенды сборки могут записывать свою среду выполнения, а сопровождающие pip могут помочь в логировании этой информации, не обременяя производителей дистрибутивов.Чтобы сделать воспроизводимость видимой и полезной, предлагается идея доверенных верификаторов, которые независимо воспроизводят дистрибутивы и сообщают об успехе в PyPI. Это позволит пользователям идентифицировать проверенные дистрибутивы и получить выгоду от более безопасной цепочки поставок. Эта функция должна быть представлена как необязательное преимущество, а не обязательное требование, чтобы не отпугивать пользователей.
Автор обнаружил ценную особенность в типизированных исключениях Swift, которая упрощает обработку ошибок. Изначально он находил типизированные исключения очень полезными для конкретных типов ошибок, но столкнулся с проблемой, когда сложные блоки кода заставляли Swift расширять тип ошибки до "any Error". Это означало, что его блок "catch" больше не типизировал ошибку точно, что приводило к проблемам компиляции. Его обходным путем было использование "catch let error as MyError", но это требовало недостижимого блока "catch-all", делая обработку ошибок неполной и вызывая разочарование. Ключевым открытием стала синтаксическая конструкция "do throws(MyError)". Явно объявляя ожидаемый тип ошибки в блоке "do", компилятор Swift сохраняет точную типизацию ошибок. Это элегантное решение предотвращает путаницу компилятора, гарантируя, что блок "catch" корректно обрабатывает указанный тип ошибки. Эта функция улучшает ясность и полноту обработки ошибок при работе с типизированными исключениями в Swift. Упущение автором этой детали в первоначальном предложении по улучшению было значительным промахом. Теперь все хорошо типизировано, как единороги и солнечный свет.
Первые выборы в Совет по упаковке Python (PPC) проходят, семнадцать номинантов борются за пять вакантных мест. Выборы заполнят все пять позиций в совете. Два кандидата, получившие наибольшее количество голосов, займут должности на двухлетний срок, обозначенный как Когорта А. Следующие три кандидата, получившие наибольшее количество голосов, займут должности на один год, обозначенный как Когорта Б. Будущие выборы будут чередоваться, определяя, какая когорта будет переизбираться, обеспечивая поэтапную ротацию. Прием номинаций завершился 11 августа, а кандидаты были объявлены 13 августа. Избиратели должны подтвердить свое намерение голосовать до 25 августа, 14:00 UTC. Все члены PSF, имеющие право голоса, должны подтвердить свое членство для участия. Голосование начнется 1 сентября и завершится 15 сентября. Имеющие право голоса, подтвердившие свое участие, получат по электронной почте бюллетень от OpaVote.
Восемнадцать кандидатов претендуют на четыре вакантных места в Совете Python Software Foundation. Чёк Тин Хо, Кристофер Нойгебауэр, Денни Перес и Георги Кер завершают свои текущие сроки. Избирателям рекомендуется ознакомиться с номинациями кандидатов и их сопроводительными заявлениями, чтобы понять их приоритеты и видение. Эти заявления имеют решающее значение для принятия обоснованных решений, поскольку члены совета влияют на бюджет, программы и направление развития PSF. Период выдвижения кандидатов завершился 11 августа, а кандидаты были объявлены 13 августа. Чтобы проголосовать, члены PSF, имеющие право голоса, должны подтвердить свое намерение до 25 августа. Голосование пройдет с 1 по 15 сентября. Прошлые избиратели могут быть автоматически добавлены в список избирателей, если их адрес электронной почты не изменился. Те, кто подтвердил свое намерение, получат бюллетень по электронной почте от OpaVote 1 сентября. Любые вопросы, касающиеся членства или выборов, можно направлять по адресу [email protected].
Выпущена версия 12.0.2 Wing Python IDE с несколькими новыми функциями и улучшениями. Релиз включает нативную версию Wing для ARM64 Windows, улучшенную удаленную разработку на Windows, а также повышенную производительность и отзывчивость. Новая версия также оптимизирует настройку Claude Code и уменьшает размер базы данных кэша анализа примерно на 20%. Wing 12 интегрирует AI-агент для написания кода Claude Code непосредственно в IDE, с новым инструментом Claude Code и инструментом Tasks для планирования и обзора работы AI-агента. IDE доступна в двух продуктовых уровнях, основанных на функциях: Wing Pro, полнофункциональная Python IDE, и Wing Classic, полная традиционная Python IDE. Wing 12 также включает множество других улучшений, таких как автоматическое обнаружение файлов тестов, улучшенный анализ исходного кода и более быстрое обнаружение внешне измененных файлов. Линейка продуктов была упрощена: различие между коммерческим и некоммерческим использованием заменено двумя продуктовыми уровнями, основанными на функциях. Существующие пользователи Wing Personal могут продолжать использовать Personal 11.x бессрочно, перейти на бесплатный Wing 101 или приобрести лицензию Wing Classic. В целом, Wing 12 предлагает ряд новых функций и улучшений для повышения опыта разработки, включая инструменты для написания кода на основе ИИ, а также улучшенную производительность и отзывчивость.
CdXz5zHNQW_mXxF48doZc.png
Модуль sys в Python описывается как "ящик с всякой всячиной", содержащий множество разнообразных элементов. В этой статье исследуется, как мог бы выглядеть модуль sys, если бы он был разработан с нуля сегодня. В настоящее время sys имеет более сотни атрибутов, многие из которых являются функциями, что приводит к перегруженному пространству имен. Для решения этой проблемы автор предлагает реорганизовать sys в девять подмодулей.Предлагаемые подмодули включают sys.cli для аргументов командной строки, sys.imports для функций, связанных с модулями, sys.io для стандартного ввода/вывода, sys.repl для настроек интерактивной строки, sys.interpreter для системных деталей и деталей установки, sys.memory для инструментов управления памятью, sys.exceptions для обработки исключений, sys.profile для профилирования и интроспекции, и sys.runtime для поведения интерпретатора. Некоторые атрибуты в этих предлагаемых подмодулях имеют сходство с существующими модулями стандартной библиотеки, намекая на возможность дальнейшей реорганизации.В статье признаются значительные трудности фактической реализации такой реорганизации. В первую очередь, переходный период и поддержание обратной совместимости для существующего кода, который полагается на текущее плоское пространство имен sys, представляют собой серьезные препятствия. Обсуждается техническое решение, включающее обработку атрибутов на уровне модуля, демонстрирующее, как старое плоское пространство имен могло бы быть сохранено для совместимости. Однако автор сомневается, что такая реорганизация когда-либо произойдет из-за огромного количества существующего кода и общего нежелания сообщества Python вносить такие фундаментальные изменения, если это не абсолютно необходимо. Основной вывод для разработчиков заключается в том, что подмодули могут быть полезным инструментом организации для больших модулей "утилит".
Правление Django Software Foundation проводит еженедельные открытые приемы каждую среду в 18:00 UTC, доступные всем членам сообщества Django без необходимости приглашения или повестки дня. Эти сессии, проводимые с октября 2024 года, предоставляют прямую линию связи с правлением и другими ключевыми фигурами. В настоящее время правление особенно заинтересовано в обсуждении поиска исполнительного директора Django. Они призывают потенциальных кандидатов посетить приемные часы, чтобы задать вопросы о должности и процессе подачи заявок. Фонд также увеличил свою цель по сбору средств на 2026 год до 500 000 долларов США для поддержки найма исполнительного директора, что требует примерно 16 000 долларов США ежемесячной регулярной поддержки. Они ищут корпоративные спонсорства и пожертвования для достижения этой цели. Помимо этих конкретных тем, на приемах обсуждаются деятельность рабочих групп, текущие проекты фонда и общая деятельность DSF. Члены сообщества также могут использовать это время для предоставления обратной связи перед заседаниями правления. Однако приемы не предназначены для общей поддержки Django или маркетинга продуктов. Для тех, кто не может присутствовать по средам, доступны другие каналы связи.
PyCharm 2026.2 представляет значительную интеграцию с ИИ, позволяя ИИ-агентам работать непосредственно в Jupyter-ноутбуках с использованием живого ядра. Эта персистентность переменных и моделей повышает надежность рабочих процессов машинного обучения. Релиз также решает проблемы управления пакетами, гарантируя, что ИИ-агенты устанавливают пакеты в правильные проектные среды. Теперь поддерживаются Marimo-ноутбуки через новый сторонний плагин, что обеспечивает реактивные ячейки и интерактивные элементы пользовательского интерфейса в IDE. Для повышения производительности и концентрации PyCharm отказывается от менее используемых плагинов, таких как Data Wrangler и Hugging Face. Окно инструментов Python Packages было переработано для лучшей визуализации зависимостей и более быстрого управления пакетами. Сообщения о проверке типов стали более ясными и действенными благодаря подробному разбору несоответствий. Создание виртуальных сред для устаревших версий Python больше не поддерживается. Улучшено определение Session.get() в SQLAlchemy 2.0 для лучшего распознавания экземпляров моделей. Эти обновления доступны в PyCharm 2026.2.1 и направлены на обеспечение более оптимизированного и мощного опыта разработки, особенно для проектов, ориентированных на ИИ.
CdXz5zHNQW_bGZrtpxsuT.png
ИИ-агенты часто испытывают трудности с Python-проектами, неправильно устанавливая зависимости или игнорируя виртуальные окружения. Это приводит к сбоям в настройках и потере времени разработчиков. Новый навык PyCharm "Координатор сред агента" (Agent Environment Coordinator) значительно повышает производительность ИИ-агентов в разработке на Python. Он позволяет агентам получать доступ к специфическому Python-окружению проекта и использовать его.В ходе тестов этот навык повысил средний процент успешного выполнения задач с 68% до 98% для шести ИИ-моделей и 28 Python-задач. Важно отметить, что эти агенты больше не загрязняют системное Python-окружение. Ранее ИИ-модели не распознавали специфические для проекта интерпретаторы, что приводило к глобальным установкам и сбоям скриптов. Координатор сред агента позволяет агентам запрашивать у PyCharm правильный Python-интерпретатор и управляющий им инструмент.Если окружение не существует, оно может быть настроено с использованием существующих механизмов PyCharm. Навык предоставляет контекст, не беря на себя управление, что позволяет агенту самостоятельно формировать команды. Это означает, что агенты работают с существующими настройками проекта "из коробки", устраняя необходимость в ручном обучении или исправлении. Эта функциональность доступна по подписке JetBrains AI. Методология включала 28 повседневных задач, связанных с Python-окружением, где ключевыми показателями были успех и чистота системы. Результаты ясно показывают, что ИИ-моделям не хватало необходимого контекста, а не возможностей.
Традиционные ИИ-агенты испытывают трудности с Jupyter Notebooks, часто повреждая файлы и теряя состояние модели по завершении работы. Новый навык Jupyter, интегрированный в PyCharm, решает эту проблему, позволяя ИИ-агентам работать в рамках активного ядра Jupyter. Это нововведение обеспечивает сохранение состояния между ячейками, предотвращая повреждение ноутбука. Оно также оптимизирует длительные задачи, заставляя агента ждать выполнения, а не постоянно опрашивать. Такой подход с активным ядром оказался примерно на 12% дешевле для Claude Opus 5 в двенадцати задачах машинного обучения. Экономия средств обусловлена улучшенным механизмом прогрева кэша, что приводит к увеличению доли чтений из кэша. Ранее ИИ-инструменты рассматривали ноутбуки как обычный текст, что приводило к повреждению и потере критически важной информации о времени выполнения при использовании подпроцессов. Новый навык Jupyter использует внутренний интеллект PyCharm для работы с ноутбуками, предоставляя агенту прямой контроль над ядром. Это позволяет агентам писать и выполнять код Python напрямую, сохраняя переменные и обученные модели. Навык также реализует более эффективный механизм ожидания и считывает только новый вывод, сокращая расход токенов. Хотя экономия средств очевидна, особенно для состоятельных задач, навык также предлагает улучшения рабочего процесса для других моделей. Пользователям напоминают явно инструктировать агентов сохранять свою работу. Сложные задачи машинного обучения по-прежнему могут требовать вмешательства человека, поскольку навык устраняет неэффективность инструментов, а не фундаментальную сложность машинного обучения. Эта функциональность доступна по подписке JetBrains AI.
Начиная с версии 2026.2, PyCharm начнет отключать и прекращать поддержку плагинов с низким уровнем использования. Это изменение является частью текущего обслуживания, направленного на поддержание скорости и отзывчивости PyCharm. Под действие этого изменения попадают такие плагины, как Data Wrangler, Hugging Face и Google Colab. Цель состоит в том, чтобы сосредоточить усилия по разработке на функциях, имеющих более широкое значение для разработчиков Python. Отключение не означает полное удаление плагинов. Их код будет перемещен в репозиторий устаревших плагинов. Пользователи по-прежнему смогут устанавливать совместимые версии из JetBrains Marketplace для PyCharm 2026.2. Однако команда PyCharm прекратит активное обслуживание и разработку новых функций для этих плагинов. Начиная с версии 2026.3, совместимые версии больше не будут публиковаться командой PyCharm. Сообщество сможет продолжать создавать и устанавливать эти плагины вручную из репозитория. Команда PyCharm благодарит пользователей за их прошлый вклад в эти плагины.
Размещение QTabWidget рядом с другими компоновками в PyQt действительно возможно без специальных обходных путей. Распространенная проблема, когда QTabWidget, кажется, доминирует в компоновке, связана с отсутствием содержимого или собственных внутренних компоновок на его вкладках. Когда вкладки пусты, QTabWidget может запрашивать непропорционально много места, что приводит к сжатию других виджетов. Для решения этой проблемы убедитесь, что каждая вкладка содержит компоновку и некоторое содержимое. Кроме того, установка разумной политики размера или коэффициента растяжения для QTabWidget помогает ему эффективно разделять пространство с соседними виджетами. Минимальный пример демонстрирует объединение QTabWidget с другими стековыми виджетами в QHBoxLayout. Коэффициенты растяжения могут применяться к компоновкам и отдельным виджетам в основной компоновке для управления распределением доступного пространства. Например, присвоение QTabWidget более высокого коэффициента растяжения дает ему больше относительного пространства. Полный пример иллюстрирует интеграцию нескольких разделов, включая различные типы компоновок и QTabWidget, которые сосуществуют гармонично. Этот подход гарантирует, что все компоненты видны и соответствующим образом разделяют размеры окна. В конечном итоге, ключ к успеху — обеспечить структуру и содержимое на страницах QTabWidget.
Real Python выпустил новую книгу "Modern Object-Oriented Python", посвященную классам и объектно-ориентированному дизайну. Модуль bisect выделен за реализацию бинарного поиска в Python с примерами его функций. PropelAuth спонсирует решение для безопасной интеграции ИИ-агентов в B2B-приложения. Обсуждения Django и асинхронного программирования выявили значительные обновления и изменения. Детализированы несколько предложений по улучшению Python (PEP), включая черновики для замороженного синтаксиса и расширяемой сериализации JSON, а также принятые PEP для yield from в асинхронных генераторах и замораживания API репозитория HTML Simple. Выпущены версии Python 3.14.7 и 3.13.15, а также Django 6.1. Опрос по типизации Python на 2026 год открыт для участия и направлен на определение будущего системы типов Python. Статьи охватывают использование Hydra для модульной конфигурации, потенциал asyncio.all_tasks() для бесшумного пропуска задач в сборках с свободными потоками и продвинутые рецепты Celery. Другие темы включают программную разработку LLM-подсказок с DSPy, setUpTestData в Django для ускорения тестов и размышления о SIMD в чистом Python. Представлен полезный инструмент, который определяет, в какой версии Python была добавлена функция. Дальнейшие статьи объясняют валидацию данных с помощью Pointblank и отправку электронных писем с помощью Python. Представлены проекты xy, autowt, vscode-marimo и commerce. Предоставлен список предстоящих событий Python и Django с августа 2026 года.
CdXz5zHNQW_14ZOYttUhz.png
Автор баллотируется в первый состав Совета по упаковке Python (PPC) при поддержке Microsoft, хотя и руководствуется собственными мотивами. Автор признает сложность представления себя более широкому кругу членов PSF по сравнению с основными разработчиками. Автор подчеркивает свой обширный опыт в упаковке Python, включая более 23 лет в качестве основного разработчика и многочисленные вклады в PEP по упаковке. Он также работал в Руководящем совете Python и был соразработчиком проекта "packaging".В качестве кандидата он стремится использовать свой опыт работы в Руководящем совете, чтобы помочь эффективно создать новый PPC. Ключевая цель — улучшить опыт разработчиков как для производителей, так и для потребителей пакетов. Это включает в себя уточнение спецификаций и потенциальное принятие успешных практик из таких инструментов, как uv, которые немного отклоняются от текущих спецификаций для повышения эффективности.Кроме того, автор стремится повысить безопасность цепочки поставок Python. Он предлагает упростить воспроизводимые сборки, чтобы обеспечить независимую проверку целостности пакетов. Автор также видит ценность в расширении использования списков программного обеспечения (SBOM) на протяжении всего процесса упаковки для выявления и устранения уязвимостей. Его общее видение заключается в повышении безопасности упаковки без негативного влияния на опыт разработчиков.
Кажущаяся простой задача разделения текста на строки на удивление сложна из-за исторических и развивающихся стандартов. Ранние вычисления полагались на ASCII, который включал управляющие символы, такие как LINE FEED (LF) и CARRIAGE RETURN (CR), для переносов строк. Различные операционные системы использовали различные комбинации этих символов, что приводило к проблемам переносимости обычного текста. Например, Windows использует CR LF, Unix использует LF, а классическая Mac OS использует CR. Python решил эту проблему, введя режим "универсального переноса строки", распознающий все три распространенных формата переноса строки при открытии файлов. Помимо традиционных CR и LF, ASCII также определял FORM FEED (FF) и VERTICAL TAB (VT), которые также вызывают переносы строк. Появление Unicode ввело семь новых кодовых точек и последовательность CR LF в качестве индикаторов переноса строки. К ним относятся LINE FEED, LINE TABULATION, FORM FEED, CARRIAGE RETURN, NEXT LINE, LINE SEPARATOR и PARAGRAPH SEPARATOR. Кроме того, алгоритм двунаправленного текста Unicode рассматривает символы с двунаправленным классом "B" как разделители абзацев, которые также функционируют как переносы строк. К ним относятся INFORMATION SEPARATOR FOUR, THREE и TWO, также известные под своими ASCII-именами FILE SEPARATOR, GROUP SEPARATOR и RECORD SEPARATOR. В общей сложности метод splitlines() в Python распознает десять различных кодовых точек и одну последовательность из нескольких кодовых точек как переносы строк. Этот исчерпывающий набор учитывает исторические соглашения и современные стандарты Unicode для обработки разделения строк текста.
Концепция "темного" корпоративного программного обеспечения относится к внутренним инструментам, созданным компаниями, которые плохо изучены и часто остаются нетронутыми. Эти инструменты обычно создаются людьми, которые с тех пор покинули компанию, и существует общее нежелание модифицировать или обновлять их. В результате они могут застыть во времени, а в тени существует множество похожих инструментов. Майкл Бут написал об идее "гиперкомандного" программного обеспечения, где небольшие команды внутри крупных компаний создают свои собственные инструменты для заполнения пробелов в функциональности. Такой подход может быть полезен, но также несет в себе риски, если им не управлять должным образом. Идея "гиперкомандного" программного обеспечения является расширением концепции гиперперсонального программного обеспечения, которое относится к индивидуальным инструментам, созданным для личного использования. Статья Майкла Бута исследует потенциальные преимущества и подводные камни "гиперкомандного" программного обеспечения, включая необходимость в защитных механизмах для предотвращения хаоса. Обсуждение "гиперкомандного" программного обеспечения актуально в контексте того, что компании теряют значительную ценность из-за устаревших или плохо поддерживаемых внутренних инструментов. Тема также связана с идеей инструментов с поддержкой ИИ и потенциалом небольших команд для стимулирования инноваций внутри крупных компаний. Обсуждение "гиперкомандного" программного обеспечения подчеркивает важность нахождения баланса между предоставлением командам возможности создавать собственные инструменты и поддержанием определенного уровня надзора и контроля для предотвращения возникновения проблем.
Начиная с января 2028 года, Django переходит на ежегодный цикл выпуска, при этом все выпуски с новыми функциями будут поддерживаться в течение трех лет. Эта новая модель лучше соответствует ежегодному графику выпуска Python, устраняя прежнюю проблему Django по поддержке устаревших версий Python. Каждый новый выпуск Django будет поддерживать три последние доступные на тот момент версии Python. Различие между обычными выпусками и выпусками долгосрочной поддержки (LTS) упраздняется, поскольку все выпуски с новыми функциями теперь будут иметь обязательства уровня LTS. Это изменение избавляет пользователей от необходимости проводить крупные, редкие обновления, позволяя им обновляться ежегодно. Одновременно будут поддерживаться три версии Django, что обеспечит предсказуемую цель для разработчиков сторонних пакетов. Стабильность API и политика устаревания остаются неизменными, при этом периоды устаревания фактически продлеваются. Первый выпуск в рамках этого нового цикла — Django 2028. Текущие обязательства по поддержке Django 5.2 LTS и 6.2 LTS останутся в силе. Полные подробности и обоснование доступны в DEP 20.
Автор желает измерять покрытие кода для функции на основе вызывающего объекта. Это вызвано рефакторингом кода проверки ошибок в его интерпретаторе BASIC, Acidica. Изначально каждая встроенная функция имела свою собственную проверку аргументов, что позволяло осуществлять специфическое покрытие условий ошибок. После рефакторинга это детальное покрытие было утеряно, поскольку проверка была перенесена в общую вспомогательную функцию.Предлагаемое решение включает декоратор, который использует динамические контексты coverage.py. Этот декоратор создает новый контекст покрытия, названный в честь места вызова (файл и номер строки), перед выполнением декорируемой функции. После завершения функции исходный контекст восстанавливается.Концептуальный декоратор, использующий coverage.Coverage.current() и cov.switch_context(), демонстрирует эту функциональность. Это требует небольшого, невыпущенного изменения в coverage.py для поддержки вложенных контекстов. Автор обнаружил, что его HTML-отчеты о покрытии теперь показывают отдельные контексты для каждого вызывающего объекта функции expects, раскрывая, какие ветви были выполнены кем.Будущие улучшения включают постобработку этих контекстов для выявления отсутствующего покрытия для конкретных вызывающих объектов и включение иерархических или множественных контекстов для одновременного отслеживания как вызывающего объекта, так и деталей выполнения. Автор также стремится интегрировать эту функциональность через конфигурацию coverage, а не путем модификации исходного кода с помощью декораторов. Потенциальные применения включают использование аргументов функции, таких как func_name, в качестве идентификаторов контекста.
CdXz5zHNQW_IFrCzZRuFh.png
Автор подчеркивает, что для улучшения навыков работы с Pandas необходимо практиковаться на реальных данных, а не только на аккуратных таблицах. Автор в течение последних 3,5 лет ведет Bamboo Weekly — еженедельный набор упражнений по Pandas, основанных на реальных, актуальных общедоступных данных. На данный момент выпуски старше двух лет доступны бесплатно, с более чем 500 упражнениями и полностью проработанными решениями. Автор подчеркивает, что реальные данные учат справляться с "грязными" данными, такими как плохо названные столбцы и несогласованные форматы дат. Упражнения в Bamboo Weekly разработаны так, чтобы имитировать реальные проблемы, требующие многошагового решения. Автор также предоставляет руководства по 16 распространенным методам Pandas, описывая, что делает метод, приводя примеры и указывая на распространенные ошибки. Эти руководства проверены на совместимость с Pandas 3 и включают ссылки на соответствующие упражнения в системе практики LernerPython. Автор предлагает начать с руководства по методу или упражнения, которое вас заинтересует, и попытаться решить его, прежде чем читать решение. Цель Bamboo Weekly — улучшить вашу "мышечную память" в области анализа данных, чтобы вы чувствовали себя увереннее при решении рабочих задач. Практикуясь на реальных данных и учась на распространенных ошибках, вы сможете повысить свое мастерство в использовании Pandas и улучшить общие навыки анализа данных.
Компания разрабатывает фреймворк тестирования ИИ для Postgres AI Hybrid Manager — продукта, который интегрирует традиционное управление Postgres с инструментами ИИ, такими как Langflow. Этот чат-бот стремится объединить функции продукта, справочную документацию и рабочие процессы ИИ в единый разговорный интерфейс. Тестирование такого агента, поддерживаемого LLM, сложно, поскольку его ответы недетерминированы и могут быть немного ошибочными даже при беглом владении. Фреймворк эволюционировал, чтобы решить эту проблему, сосредоточившись на тестировании всей траектории чата, а не только на окончательных ответах.Вводятся ключевые понятия, включая «Золотые» (идеальные желаемые результаты) и «Рубрики» (качественные контрольные списки для хороших ответов). Для тестирования ИИ LLM используются в качестве судей для оценки результатов по Golden или Rubrics, преобразуя сложные ответы в результаты «сдал/незавал». Коэффициент выполнения задач (TCR) используется для агрегирования нескольких проходов оценки. Стратегия тестирования начиналась с простых оценок маршрутизации, проверки, направляет ли чатбот подсказки к нужному специализированному агенту или навыку.По мере эволюции системы от агентов по инструменту к консолидированному агенту с навыками, оценки маршрутизации адаптировались для проверки видимости и выбора нужного навыка. Впоследствии были внедрены оценки TCR для оценки того, выполнил ли полный ответ чат-бота задачу пользователя, используя LLM-as-a-judge с определёнными рубриками. Это привело к появлению двух режимов выполнения: прямой режим для разработки запросов и рубрик, и режим прокси для тестирования полного производственного пути.Фреймворк также должен был работать с многоступенчатыми разговорами, где тестовый блок становился всем разговором, а не только одиночными ходами. Это требовало сохранения состояния разговора между несколькими вызовами API в режиме прокси или имитации его в режиме Direct. Теперь оценивание включает проверку по шагу и общий балл за разговор. Базовая тестовая библиотека — deepeval, на которой компания построила свой конвейер, систему плагинов, интеграцию CI и Langfuse push. Маршрутизация реализована в виде кастомной «BaseMetric» в deepeval, демонстрируя, как конкретные бизнес-правила могут быть интегрированы в процесс оценки LLM.
CdXz5zHNQW_2wtMsPJlJt.png
Фонд программного обеспечения Django ищет исполнительного директора — новую оплачиваемую руководящую должность. Эта позиция подчиняется Совету директоров и отвечает за стратегическое направление и повседневное управление некоммерческой организацией. Исполнительный директор будет выступать в качестве основного связующего звена между Советом директоров, сотрудниками, сообществом и спонсорами. DSF, некоммерческая организация, зарегистрированная в соответствии с разделом 501(c)(3), поддерживает разработку и продвижение веб-фреймворка Django. Эта роль имеет решающее значение для совершенствования структуры Фонда и обеспечения его устойчивости. Ключевые обязанности включают сбор средств с целью увеличения годовых показателей и управление административными операциями. Исполнительный директор также будет курировать программу помощника DSF и стипендиатов Django. Публичное представительство, маркетинг и информационно-просветительская работа для повышения осведомленности о DSF также являются жизненно важными обязанностями. Роль требует опыта в руководстве некоммерческими организациями, сборе средств, операционной деятельности и коммуникации с заинтересованными сторонами, при этом технические знания являются преимуществом. Должность удаленная в пределах США, с зарплатой от 90 000 до 120 000 долларов США плюс возможная премия. Заявки принимаются до 14 сентября 2026 года.