Зараз читаютьПрактичні новини про код, AI та технології — без інформаційного шуму

uv 0.12.10 посилив безпеку публікації Python-пакетів і прискорив великі проєкти

Новий uv намагається відкликати короткоживучі токени PyPI після публікації, швидше формує lock-файли у великих робочих просторах і виправляє перевірки.

uv 0.12.10 посилив безпеку публікації Python-пакетів і прискорив великі проєкти

uv 0.12.10 додає важливу гігієну безпеки до публікації Python-пакетів: після завершення команди uv publish інструмент намагається відкликати короткоживучий токен довіреної публікації PyPI. Реліз від 4 вересня також прискорює роботу з великими монорепозиторіями та усуває кілька неточностей навколо lock-файла.

Редакційна AI-ілюстрація, створена для цього матеріалу; не входить до першоджерела.
Редакційна AI-ілюстрація, створена для цього матеріалу; не входить до першоджерела.

Навіщо відкликати короткоживучий токен

Trusted publishing дозволяє автоматизованому середовищу отримати обмежений у часі токен без зберігання постійного секрету PyPI. Короткий строк дії вже зменшує ризик, але дострокове відкликання після завершення операції ще більше звужує вікно, у якому перехоплений токен потенційно придатний.

У новій версії спроба відкликання виконується не лише після успішної публікації, а й коли завантаження завершилося помилкою. Формулювання «намагається відкликати» має значення: це додатковий захисний крок, а не обіцянка, що мережевий запит завжди завершиться успішно.

Швидше блокування великих робочих просторів

Команда оптимізувала формування lock-файла для великих workspace із конфліктами. Під час спрощення конфліктів uv тепер відкидає незв’язані extras і групи залежностей. Це має скорочувати зайву роботу, коли великий набір пакетів містить умови, що не стосуються поточного конфлікту.

Окремо прискорено uv publish: кожний артефакт хешується в одному блокувальному завданні, а буфер повторно використовується між читаннями. Ефект залежатиме від кількості й розміру файлів, диска та середовища CI, тому release notes не дають універсального відсотка прискорення.

Передбачуваніший uv.lock

Кілька виправлень стосуються параметра exclude-newer, який обмежує доступні версії пакетів за часом публікації. Команда усунула помилковий збій режиму --locked, коли налаштування відрізнялися лише для пакетів поза фактичним розв’язанням залежностей. Перевірка lock-файла також може повторно використати його після перенесення абсолютної часової межі вперед або вимкнення межі для окремого пакета.

Порядок package-specific обмежень у uv.lock тепер детермінований. Стабільний порядок зменшує випадкові зміни у git diff і полегшує перевірку файлів у pull request. У preview-режимі можна не записувати налаштування для пакетів, яких немає у розв’язанні.

Ще дві корисні дрібниці

Команда uv init тепер вимагає явний --name, якщо автоматично визначена назва проєкту зарезервована для інтерпретатора Python. Це краще, ніж мовчки створити конфігурацію з проблемною назвою. А uv tree --invert у preview-режимі показує кінцеві цикли залежностей, допомагаючи зрозуміти, де зворотне дерево замикається.

Що робити командам

Оновлення особливо доречне для проєктів, які публікують пакети через trusted publishing або мають великі workspace. Після переходу варто прогнати uv lock --check, порівняти uv.lock і виконати тестову публікацію у безпечному середовищі. Не потрібно очікувати зміни API вашого Python-коду: нововведення стосуються інструмента керування проєктом.

Практичний висновок: 0.12.10 поєднує зменшення часу життя секрету, менше зайвої роботи під час розв’язання залежностей і чистіші lock-файли. Найбільша користь буде помітна в CI та великих монорепозиторіях.

Першоджерело та ліцензія

Першоджерело: Astral uv releases. Автори: Astral uv contributors. Текст перекладено й адаптовано редакцією; пояснення та практичні висновки додано. Ліцензія першоджерела: MIT.

Copyright (c) 2023 Astral Software Inc..

MIT permission notice: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Першоджерело:Astral uv releases ↗
Автор:Astral uv contributors
Ліцензія:MIT ↗

Матеріал перекладено, переказано та доповнено редакцією українською мовою.

</>

Читайте далі — ми вже розбираємо наступну важливу тему.

Далі за темою

Схожі матеріали