Скидки до 28% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Код

Вышел Poetry 1.0.0: новости Python

Время чтения статьи ~5 минут 5
Вышел Poetry 1.0.0: новости Python главное изображение

Команда Poetry 12 декабря сообщила о выходе Poetry 1.0.0. Разработчики благодарят сообщество и подчёркивают вклад активных контрибьюторов в проект. Этот релиз — важный этап развития проекта. В нём представлены новые функции, которые делают работу с проектами Python ещё удобнее.

Новый способ управления окружением Python

Дефолтное поведение не изменилось: Poetry старается использовать текущую версию Python, чтобы создать для проекта виртуальное окружение. Однако если она несовместима с определёнными в настоящее время требованиями python к файлу pyproject.toml, Poetry попытается найти совместимую версию.

Более того, теперь есть возможность легко переключаться между версиями Python с помощью команды env use.

poetry env use /full/path/to/python

Версию можно указать так:

poetry env use python3.7

Или даже так:

poetry env use 3.7

Чтобы отключить активированную virtualenv, можно воспользоваться системной версией Python для получения поведения по умолчанию.

poetry env use system

Команда poetry env info позволяет получить сведения об активированной virtualenv. В выводе вы увидите примерно такую картину:

Virtualenv
Python:         3.7.1
Implementation: CPython
Path:           /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid:          True

System
Platform: darwin
OS:       posix
Python:   /path/to/main/python

Узнать путь к virtualenv можно с помощью команды poetry env info --path. Команда poetry env list формирует список virtualenv:

test-O3eWbxRl-py2.7
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)

Наконец, удалить virtualenv можно с помощью команды env remove.

poetry env remove /full/path/to/python
poetry env remove python3.7
poetry env remove 3.7
poetry env remove test-O3eWbxRl-py3.7

Улучшена поддержка частных индексов

Хотя предыдущие версии Poetry поддерживали частные индексы, до выхода версии 1.0.0 не было удобного способа их контролировать. Теперь можно объявлять источник зависимостей:

[tool.poetry.dependencies]
# ...
pendulum = {version = "^2.0.5", source = "my-index"}
[[tool.poetry.source]]
name = "my-index"
url = "https://example.com"

Для удобства вы можете объявлять частный индекс вторичным. В этом случае он будет всегда использоваться последним, а PyPl останется предпочтительным.

[[tool.poetry.source]]
name = "my-index"
url = "https://example.com"
secondary = true

Также можно отключить PyPl, если объявить частный индекс дефолтным:

[[tool.poetry.source]]
name = "my-index"
url = "https://example.com"
default = true

Улучшено управление конфигурациями

Использование переменных окружения

Иногда, например, при использовании Poetry с инструментами CI, проще использовать переменные окружения, что позволяет не выполнять команды конфигурации. При объявлении переменных окружения необходимо использовать префикс POETRY_, а имя параметров указывать в верхнем регистре. Точки и тире при этом заменяются андерскорами.


export POETRY_VIRTUALENVS_PATH=/path/to/virtualenvs/directory

Это можно использовать при работе с учётными данными:

export POETRY_HTTP_BASIC_MY_REPOSITORY_PASSWORD=secret

Локальная конфигурация

Poetry 1.0.0 позволяет указывать специфические для проекта настройки с помощью флага --local в команде config.

poetry config virtualenvs.create false --local

Локальные настройки хранятся в файле poetry.toml.

Префикс settings. можно не использовать

Настройки теперь хранятся отдельно, необходимости использовать префикс settings. нет. Если вы уже указали настройки, придётся их изменить.

Читайте также полезные статьи из цикла «Продвинутый Python»:

Улучшена команда add

С помощью команды add стало проще добавлять зависимости. Поддерживаются такие форматы:

  • имя: pendulum;
  • имя и ограничения: requests@^2.23.0;
  • Git URL: git+https://github.com/sdispater/poetry.git.
  • Git URL с уточнением: git+https://github.com/sdispater/poetry.git#develop;
  • путь к файлу: ../my-package/my-package.whl;
  • путь к директории: ../my-package/;
  • URL: https://example.com/packages/my-package-0.1.0.tar.gz.

В ограничениях также можно указывать расширения.

poetry add "requests[security]"

Как следствие, параметры --git и --path были удалены. Если нужно обновить существующие зависимости, можно использовать ограничение latest.

poetry add requests@latest

Улучшенные возможности для публикаций

Поддержка токенов PyPl API

При публикации в PyPl можно использовать токены API вместо учётных данных. Настроить токены можно командой config.

poetry config pypi-token.pypi my-token

Поддержка пользовательских сертификатов и взаимной аутентификации TLS

Poetry 1.0.0 работает с репозиториями, которые защищены пользовательскими сертификатами или требуют аутентификации клиента с помощью сертификата. Ниже примеры настроек репозитория foo для проверки с помощью хранилища сертификата и использования сертификата клиента. Обратите внимание, переменные конфигурации устанавливать не надо.

poetry config certificates.foo.cert /path/to/ca.pem
poetry config certificates.foo.client-cert /path/to/client.pem

Поддержка произвольных маркеров для условных зависимостей

Poetry 1.0.0 поддерживает маркеры окружения через свойство markers.

[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", markers = "python_version ~= '2.7' or sys_platform == 'win32'" }

Что дальше

Команда Poetry сделала очень много, но планов дальнейшего развития ещё больше. В ближайшее время планируется сделать Poetry расширяемой с помощью плагинов. Это станет шагом к созданию экосистемы вокруг Poetry и к появлению новых важных функций.

Аватар пользователя Дмитрий Дементий
Дмитрий Дементий 13 декабря 2019
5
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря