I have new project yolo created by poetry.
I did followed steps:
poetry new
poetry add requests
poetry add -D pytz
poetry add -D --optional --extras=dev ipdb
poetry lock
My toml file looks as follow:
[tool.poetry]
name = "yolo"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.6"
requests = "^2.24.0"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
pytz = "^2020.1"
ipdb = {version = "^0.13.3", optional = true, extras = ["dev"]}
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
I removed the environment:
$ poetry env list
yolo-_0wi_Pw3-py3.6 (Activated)
$ poetry env remove yolo-_0wi_Pw3-py3.6
Deleted virtualenv: .cache/pypoetry/virtualenvs/yolo-_0wi_Pw3-py3.6
Now if I try to do:
$ poetry install
Creating virtualenv yolo-_0wi_Pw3-py3.6 in .cache/pypoetry/virtualenvs
Installing dependencies from lock file
Package operations: 17 installs, 0 updates, 0 removals
- Installing six (1.15.0)
- Installing wcwidth (0.2.5)
- Installing zipp (3.2.0)
- Installing importlib-metadata (2.0.0)
- Installing pyparsing (2.4.7)
- Installing attrs (20.2.0)
- Installing certifi (2020.6.20)
- Installing chardet (3.0.4)
- Installing idna (2.10)
- Installing more-itertools (8.5.0)
- Installing packaging (20.4)
- Installing pluggy (0.13.1)
- Installing py (1.9.0)
- Installing urllib3 (1.25.10)
- Installing pytest (5.4.3)
- Installing pytz (2020.1)
- Installing requests (2.24.0)
- Installing yolo (0.1.0)
No ipdb, as expected.
But if I try:
$ poetry install --extras='dev'
Installing dependencies from lock file
[ValueError]
Extra [dev] is not specified.
To sort of clarify and explain more.
Toml file generated in my question is automatic work of poetry and there is a fix that requires manual intervention.
[tool.poetry]
name = "yolo"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.6"
requests = "^2.24.0"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
pytz = "^2020.1"
ipdb = {version = "^0.13.3", optional = true, extras = ["dev"]}
[tool.poetry.extras]
dev = ["ipdb"]
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
Needless to say, it's confusing as hell.
But from now on if we do:
$ poetry install -E dev
It will work as expected and ipdb will be installed.