/
Блог Хекслета
/
Код
/

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

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

13 декабря 2019 г.

2 минуты
5
Вышел Poetry 1.0.0: новости Python

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

Содержание

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

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

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

1
poetry env use /full/path/to/python

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

1
poetry env use python3.7

Или даже так:

1
poetry env use 3.7

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

1
poetry env use system

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

1
2
3
4
5
6
7
8
9
10
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:

1
2
3
test-O3eWbxRl-py2.7
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)

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

1
2
3
4
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 не было удобного способа их контролировать. Теперь можно объявлять источник зависимостей:

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

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

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

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

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

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

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

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

1
export POETRY_VIRTUALENVS_PATH=/path/to/virtualenvs/directory

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

1
export POETRY_HTTP_BASIC_MY_REPOSITORY_PASSWORD=secret

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

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

1
poetry config virtualenvs.create false --local

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

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

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

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

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

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

1
poetry add "requests[security]"

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

1
poetry add requests@latest

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

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

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

1
poetry config pypi-token.pypi my-token

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

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

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

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

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

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

Что дальше

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

Дмитрий Дементий

6 лет назад

5

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845