Команда Poetry 12 декабря сообщила о выходе Poetry 1.0.0. Разработчики благодарят сообщество и подчёркивают вклад активных контрибьюторов в проект. Этот релиз — важный этап развития проекта. В нём представлены новые функции, которые делают работу с проектами Python ещё удобнее.
- Новый способ управления окружением Python
- Улучшена поддержка частных индексов
- Улучшено управление конфигурациями
- Улучшена команда add
- Улучшенные возможности для публикаций
- Что дальше
Новый способ управления окружением 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»:
- Часть 1: итераторы, генераторы, itertools.
- Часть 2: замыкания, декораторы, модуль functools.
- Часть 3: классы и метаклассы.
Улучшена команда 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 и к появлению новых важных функций.