python-poetry / poetry

Python packaging and dependency management made easy
https://python-poetry.org
MIT License
31.02k stars 2.25k forks source link

Poetry installing pre-release version of panel #9570

Closed david-waterworth closed 4 weeks ago

david-waterworth commented 1 month ago

Description

Adding/updating packages that rely on panel results in 1.5.0b1 rather than 1.44 being installed.

Panel's pre-release version appears to comply with PEP-0440 (1.5.0b1 matches ^([1-9][0-9]*!)?(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*((a|b|rc)(0|[1-9][0-9]*))?(\.post(0|[1-9][0-9]*))?(\.dev(0|[1-9][0-9]*))?$) and pip install panel results in 1.4.4 being installed.

I've attached the output of poetry show --tree and cannot identify anything that's requesting a per-release version.

adbc-driver-postgresql 1.1.0 A libpq-based ADBC driver for working with PostgreSQL.
├── adbc-driver-manager *
│   └── typing-extensions * 
└── importlib-resources >=1.3
bandit 1.7.9 Security oriented static analyser for python code.
├── colorama >=0.3.9
├── gitpython >=3.1.30
│   └── gitdb >=4.0.1,<5 
│       └── smmap >=3.0.1,<6 
├── pyyaml >=5.3.1
├── rich *
│   ├── markdown-it-py >=2.2.0 
│   │   └── mdurl >=0.1,<1.0 
│   └── pygments >=2.13.0,<3.0.0 
└── stevedore >=1.20.0
    └── pbr >=2.0.0,<2.1.0 || >2.1.0 
connectorx 0.3.3
gql 3.5.0 GraphQL client for Python
├── aiohttp >=3.8.0,<4
│   ├── aiosignal >=1.1.2 
│   │   └── frozenlist >=1.1.0 
│   ├── async-timeout >=4.0,<5.0 
│   ├── attrs >=17.3.0 
│   ├── frozenlist >=1.1.1 (circular dependency aborted here)
│   ├── multidict >=4.5,<7.0 
│   └── yarl >=1.0,<2.0 
│       ├── idna >=2.0 
│       └── multidict >=4.0 (circular dependency aborted here)
├── aiohttp >=3.9.0b0,<4
│   ├── aiosignal >=1.1.2 
│   │   └── frozenlist >=1.1.0 
│   ├── async-timeout >=4.0,<5.0 
│   ├── attrs >=17.3.0 
│   ├── frozenlist >=1.1.1 (circular dependency aborted here)
│   ├── multidict >=4.5,<7.0 
│   └── yarl >=1.0,<2.0 
│       ├── idna >=2.0 
│       └── multidict >=4.0 (circular dependency aborted here)
├── anyio >=3.0,<5
│   ├── exceptiongroup >=1.0.2 
│   ├── idna >=2.8 
│   ├── sniffio >=1.1 
│   └── typing-extensions >=4.1 
├── backoff >=1.11.1,<3.0
├── botocore >=1.21,<2
│   ├── jmespath >=0.7.1,<2.0.0 
│   ├── python-dateutil >=2.1,<3.0.0 
│   │   └── six >=1.5 
│   └── urllib3 >=1.25.4,<2.2.0 || >2.2.0,<3 
├── graphql-core >=3.2,<3.3
├── httpx >=0.23.1,<1
│   ├── anyio * 
│   │   ├── exceptiongroup >=1.0.2 
│   │   ├── idna >=2.8 
│   │   ├── sniffio >=1.1 
│   │   └── typing-extensions >=4.1 
│   ├── certifi * 
│   ├── httpcore ==1.* 
│   │   ├── certifi * (circular dependency aborted here)
│   │   └── h11 >=0.13,<0.15 
│   ├── idna * (circular dependency aborted here)
│   └── sniffio * (circular dependency aborted here)
├── requests >=2.26,<3
│   ├── certifi >=2017.4.17 
│   ├── charset-normalizer >=2,<4 
│   ├── idna >=2.5,<4 
│   └── urllib3 >=1.21.1,<3 
├── requests-toolbelt >=1.0.0,<2
│   └── requests >=2.0.1,<3.0.0 
│       ├── certifi >=2017.4.17 
│       ├── charset-normalizer >=2,<4 
│       ├── idna >=2.5,<4 
│       └── urllib3 >=1.21.1,<3 
├── websockets >=10,<12
└── yarl >=1.6,<2.0
    ├── idna >=2.0 
    └── multidict >=4.0 
great-tables 0.10.0 Easily generate information-rich, publication-quality tables from Python.
├── babel >=2.13.1
├── commonmark >=0.9.1
├── htmltools >=0.4.1
│   ├── packaging >=20.9 
│   └── typing-extensions >=3.10.0.0 
├── importlib-metadata *
│   └── zipp >=0.5 
├── importlib-resources *
├── numpy >=1.22.4
└── typing-extensions >=3.10.0.0
hvplot 0.10.0 A high-level plotting API for the PyData ecosystem built on HoloViews.
├── bokeh >=1.0.0
│   ├── contourpy >=1.2 
│   │   └── numpy >=1.20 
│   ├── jinja2 >=2.9 
│   │   └── markupsafe >=2.0 
│   ├── numpy >=1.16 (circular dependency aborted here)
│   ├── packaging >=16.8 
│   ├── pandas >=1.2 
│   │   ├── numpy >=1.22.4 (circular dependency aborted here)
│   │   ├── numpy >=1.23.2 (circular dependency aborted here)
│   │   ├── numpy >=1.26.0 (circular dependency aborted here)
│   │   ├── python-dateutil >=2.8.2 
│   │   │   └── six >=1.5 
│   │   ├── pytz >=2020.1 
│   │   └── tzdata >=2022.7 
│   ├── pillow >=7.1.0 
│   ├── pyyaml >=3.10 
│   ├── tornado >=6.2 
│   └── xyzservices >=2021.09.1 
├── colorcet >=2
├── holoviews >=1.11.0
│   ├── bokeh >=3.1 
│   │   ├── contourpy >=1.2 
│   │   │   └── numpy >=1.20 
│   │   ├── jinja2 >=2.9 
│   │   │   └── markupsafe >=2.0 
│   │   ├── numpy >=1.16 (circular dependency aborted here)
│   │   ├── packaging >=16.8 
│   │   ├── pandas >=1.2 
│   │   │   ├── numpy >=1.22.4 (circular dependency aborted here)
│   │   │   ├── numpy >=1.23.2 (circular dependency aborted here)
│   │   │   ├── numpy >=1.26.0 (circular dependency aborted here)
│   │   │   ├── python-dateutil >=2.8.2 
│   │   │   │   └── six >=1.5 
│   │   │   ├── pytz >=2020.1 
│   │   │   └── tzdata >=2022.7 
│   │   ├── pillow >=7.1.0 
│   │   ├── pyyaml >=3.10 
│   │   ├── tornado >=6.2 
│   │   └── xyzservices >=2021.09.1 
│   ├── colorcet * 
│   ├── numpy >=1.21 (circular dependency aborted here)
│   ├── packaging * (circular dependency aborted here)
│   ├── pandas >=1.3 (circular dependency aborted here)
│   ├── panel >=1.0 
│   │   ├── bleach * 
│   │   │   ├── six >=1.9.0 (circular dependency aborted here)
│   │   │   └── webencodings * 
│   │   ├── bokeh >=3.5.0,<3.6.0 (circular dependency aborted here)
│   │   ├── linkify-it-py * 
│   │   │   └── uc-micro-py * 
│   │   ├── markdown * 
│   │   ├── markdown-it-py * 
│   │   │   └── mdurl >=0.1,<1.0 
│   │   ├── mdit-py-plugins * 
│   │   │   └── markdown-it-py >=1.0.0,<4.0.0 (circular dependency aborted here)
│   │   ├── packaging * (circular dependency aborted here)
│   │   ├── pandas >=1.2 (circular dependency aborted here)
│   │   ├── param >=2.1.0,<3.0 
│   │   ├── pyviz-comms >=2.0.0 
│   │   │   └── param * (circular dependency aborted here)
│   │   ├── requests * 
│   │   │   ├── certifi >=2017.4.17 
│   │   │   ├── charset-normalizer >=2,<4 
│   │   │   ├── idna >=2.5,<4 
│   │   │   └── urllib3 >=1.21.1,<3 
│   │   ├── tqdm * 
│   │   │   └── colorama * 
│   │   └── typing-extensions * 
│   ├── param >=2.0,<3.0 (circular dependency aborted here)
│   └── pyviz-comms >=2.1 (circular dependency aborted here)
├── numpy >=1.15
├── packaging *
├── pandas *
│   ├── numpy >=1.22.4 
│   ├── numpy >=1.23.2 (circular dependency aborted here)
│   ├── numpy >=1.26.0 (circular dependency aborted here)
│   ├── python-dateutil >=2.8.2 
│   │   └── six >=1.5 
│   ├── pytz >=2020.1 
│   └── tzdata >=2022.7 
├── panel >=0.11.0
│   ├── bleach * 
│   │   ├── six >=1.9.0 
│   │   └── webencodings * 
│   ├── bokeh >=3.5.0,<3.6.0 
│   │   ├── contourpy >=1.2 
│   │   │   └── numpy >=1.20 
│   │   ├── jinja2 >=2.9 
│   │   │   └── markupsafe >=2.0 
│   │   ├── numpy >=1.16 (circular dependency aborted here)
│   │   ├── packaging >=16.8 
│   │   ├── pandas >=1.2 
│   │   │   ├── numpy >=1.22.4 (circular dependency aborted here)
│   │   │   ├── numpy >=1.23.2 (circular dependency aborted here)
│   │   │   ├── numpy >=1.26.0 (circular dependency aborted here)
│   │   │   ├── python-dateutil >=2.8.2 
│   │   │   │   └── six >=1.5 (circular dependency aborted here)
│   │   │   ├── pytz >=2020.1 
│   │   │   └── tzdata >=2022.7 
│   │   ├── pillow >=7.1.0 
│   │   ├── pyyaml >=3.10 
│   │   ├── tornado >=6.2 
│   │   └── xyzservices >=2021.09.1 
│   ├── linkify-it-py * 
│   │   └── uc-micro-py * 
│   ├── markdown * 
│   ├── markdown-it-py * 
│   │   └── mdurl >=0.1,<1.0 
│   ├── mdit-py-plugins * 
│   │   └── markdown-it-py >=1.0.0,<4.0.0 (circular dependency aborted here)
│   ├── packaging * (circular dependency aborted here)
│   ├── pandas >=1.2 (circular dependency aborted here)
│   ├── param >=2.1.0,<3.0 
│   ├── pyviz-comms >=2.0.0 
│   │   └── param * (circular dependency aborted here)
│   ├── requests * 
│   │   ├── certifi >=2017.4.17 
│   │   ├── charset-normalizer >=2,<4 
│   │   ├── idna >=2.5,<4 
│   │   └── urllib3 >=1.21.1,<3 
│   ├── tqdm * 
│   │   └── colorama * 
│   └── typing-extensions * 
└── param >=1.12.0,<3.0
ipykernel 6.29.5 IPython Kernel for Jupyter
├── appnope *
├── comm >=0.1.1
│   └── traitlets >=4 
├── debugpy >=1.6.5
├── ipython >=7.23.1
│   ├── colorama * 
│   ├── decorator * 
│   ├── exceptiongroup * 
│   ├── jedi >=0.16 
│   │   └── parso >=0.8.3,<0.9.0 
│   ├── matplotlib-inline * 
│   │   └── traitlets * 
│   ├── pexpect >4.3 
│   │   └── ptyprocess >=0.5 
│   ├── prompt-toolkit >=3.0.41,<3.1.0 
│   │   └── wcwidth * 
│   ├── pygments >=2.4.0 
│   ├── stack-data * 
│   │   ├── asttokens >=2.1.0 
│   │   │   └── six >=1.12.0 
│   │   ├── executing >=1.2.0 
│   │   └── pure-eval * 
│   ├── traitlets >=5.13.0 (circular dependency aborted here)
│   └── typing-extensions >=4.6 
├── jupyter-client >=6.1.12
│   ├── jupyter-core >=4.12,<5.0.dev0 || >=5.1.dev0 
│   │   ├── platformdirs >=2.5 
│   │   ├── pywin32 >=300 
│   │   └── traitlets >=5.3 
│   ├── python-dateutil >=2.8.2 
│   │   └── six >=1.5 
│   ├── pyzmq >=23.0 
│   │   └── cffi * 
│   │       └── pycparser * 
│   ├── tornado >=6.2 
│   └── traitlets >=5.3 (circular dependency aborted here)
├── jupyter-core >=4.12,<5.0.dev0 || >=5.1.dev0
│   ├── platformdirs >=2.5 
│   ├── pywin32 >=300 
│   └── traitlets >=5.3 
├── matplotlib-inline >=0.1
│   └── traitlets * 
├── nest-asyncio *
├── packaging *
├── psutil *
├── pyzmq >=24
│   └── cffi * 
│       └── pycparser * 
├── tornado >=6.1
└── traitlets >=5.4.0
ipywidgets 8.1.3 Jupyter interactive widgets
├── comm >=0.1.3
│   └── traitlets >=4 
├── ipython >=6.1.0
│   ├── colorama * 
│   ├── decorator * 
│   ├── exceptiongroup * 
│   ├── jedi >=0.16 
│   │   └── parso >=0.8.3,<0.9.0 
│   ├── matplotlib-inline * 
│   │   └── traitlets * 
│   ├── pexpect >4.3 
│   │   └── ptyprocess >=0.5 
│   ├── prompt-toolkit >=3.0.41,<3.1.0 
│   │   └── wcwidth * 
│   ├── pygments >=2.4.0 
│   ├── stack-data * 
│   │   ├── asttokens >=2.1.0 
│   │   │   └── six >=1.12.0 
│   │   ├── executing >=1.2.0 
│   │   └── pure-eval * 
│   ├── traitlets >=5.13.0 (circular dependency aborted here)
│   └── typing-extensions >=4.6 
├── jupyterlab-widgets >=3.0.11,<3.1.0
├── traitlets >=4.3.1
└── widgetsnbextension >=4.0.11,<4.1.0
more-itertools 10.3.0 More routines for operating on iterables, beyond itertools
polars 1.2.1 Blazingly fast DataFrame library
└── pyarrow >=7.0.0
    └── numpy >=1.16.6 
pre-commit 3.7.1 A framework for managing and maintaining multi-language pre-commit hooks.
├── cfgv >=2.0.0
├── identify >=1.0.0
├── nodeenv >=0.11.1
├── pyyaml >=5.1
└── virtualenv >=20.10.0
    ├── distlib >=0.3.7,<1 
    ├── filelock >=3.12.2,<4 
    └── platformdirs >=3.9.1,<5 
pyairtable 2.3.3 Python Client for the Airtable API
├── inflection *
├── pydantic *
│   ├── annotated-types >=0.4.0 
│   ├── pydantic-core 2.20.1 
│   │   └── typing-extensions >=4.6.0,<4.7.0 || >4.7.0 
│   ├── typing-extensions >=4.6.1 (circular dependency aborted here)
│   └── typing-extensions >=4.12.2 (circular dependency aborted here)
├── requests >=2.22.0
│   ├── certifi >=2017.4.17 
│   ├── charset-normalizer >=2,<4 
│   ├── idna >=2.5,<4 
│   └── urllib3 >=1.21.1,<3 
├── typing-extensions *
└── urllib3 >=1.26
pydantic-settings 2.3.4 Settings management using Pydantic
├── pydantic >=2.7.0
│   ├── annotated-types >=0.4.0 
│   ├── pydantic-core 2.20.1 
│   │   └── typing-extensions >=4.6.0,<4.7.0 || >4.7.0 
│   ├── typing-extensions >=4.6.1 (circular dependency aborted here)
│   └── typing-extensions >=4.12.2 (circular dependency aborted here)
└── python-dotenv >=0.21.0
python-dateutil 2.9.0.post0 Extensions to the standard Python datetime module
└── six >=1.5
python-keycloak 4.2.2 python-keycloak is a Python package providing access to the Keycloak API.
├── async-property >=0.2.2
├── deprecation >=2.1.0
│   └── packaging * 
├── httpx >=0.23.2
│   ├── anyio * 
│   │   ├── exceptiongroup >=1.0.2 
│   │   ├── idna >=2.8 
│   │   ├── sniffio >=1.1 
│   │   └── typing-extensions >=4.1 
│   ├── certifi * 
│   ├── httpcore ==1.* 
│   │   ├── certifi * (circular dependency aborted here)
│   │   └── h11 >=0.13,<0.15 
│   ├── idna * (circular dependency aborted here)
│   └── sniffio * (circular dependency aborted here)
├── jwcrypto >=1.5.4
│   ├── cryptography >=3.4 
│   │   └── cffi >=1.12 
│   │       └── pycparser * 
│   └── typing-extensions >=4.5.0 
├── requests >=2.20.0
│   ├── certifi >=2017.4.17 
│   ├── charset-normalizer >=2,<4 
│   ├── idna >=2.5,<4 
│   └── urllib3 >=1.21.1,<3 
└── requests-toolbelt >=0.6.0
    └── requests >=2.0.1,<3.0.0 
        ├── certifi >=2017.4.17 
        ├── charset-normalizer >=2,<4 
        ├── idna >=2.5,<4 
        └── urllib3 >=1.21.1,<3 
python-semantic-release 9.8.6 Automatic Semantic Versioning for Python projects
├── click >=8.0,<9.0
│   └── colorama * 
├── click-option-group >=0.5,<1.0
│   └── click >=7.0,<9 
│       └── colorama * 
├── dotty-dict >=1.3,<2.0
├── gitpython >=3.0,<4.0
│   └── gitdb >=4.0.1,<5 
│       └── smmap >=3.0.1,<6 
├── importlib-resources >=6.0,<7.0
├── jinja2 >=3.1,<4.0
│   └── markupsafe >=2.0 
├── pydantic >=2.0,<3.0
│   ├── annotated-types >=0.4.0 
│   ├── pydantic-core 2.20.1 
│   │   └── typing-extensions >=4.6.0,<4.7.0 || >4.7.0 
│   ├── typing-extensions >=4.6.1 (circular dependency aborted here)
│   └── typing-extensions >=4.12.2 (circular dependency aborted here)
├── python-gitlab >=4.0,<5.0
│   ├── requests >=2.32.0 
│   │   ├── certifi >=2017.4.17 
│   │   ├── charset-normalizer >=2,<4 
│   │   ├── idna >=2.5,<4 
│   │   └── urllib3 >=1.21.1,<3 
│   └── requests-toolbelt >=1.0.0 
│       └── requests >=2.0.1,<3.0.0 (circular dependency aborted here)
├── requests >=2.25,<3.0
│   ├── certifi >=2017.4.17 
│   ├── charset-normalizer >=2,<4 
│   ├── idna >=2.5,<4 
│   └── urllib3 >=1.21.1,<3 
├── rich >=13.0,<14.0
│   ├── markdown-it-py >=2.2.0 
│   │   └── mdurl >=0.1,<1.0 
│   └── pygments >=2.13.0,<3.0.0 
├── shellingham >=1.5,<2.0
└── tomlkit >=0.11,<1.0
ruff 0.5.4 An extremely fast Python linter and code formatter, written in Rust.
tenacity 8.5.0 Retry code until it succeeds

Workarounds

explicitly install poetry add panel==1.4.4

Note: this downgrades bokeh from 3.5.0 to 3.4.2 - so I guess bokeh 3.5.0 or it's dependencies are the cause but I don't see why.

Poetry Installation Method

pipx

Operating System

Ubuntu 22.04

Poetry Version

1.8.3

Poetry Configuration

cache-dir = "/home/david/.cache/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/david/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

Python Sysconfig

No response

Example pyproject.toml

[tool.poetry]
name = "XXX"
version = "0.5.1"
description = ""
authors = "XXX"
readme = "README.md"
packages = [{include = "reporting", from="src"}]

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[[tool.poetry.source]]
name = "private"
url = "https://XXX-XXX.d.codeartifact.XXX.amazonaws.com/pypi/XXX/simple/"
priority = "primary"

[tool.poetry.dependencies]
python = "^3.10"
polars = {extras = ["pyarrow"], version = "^1.1.0"}
pydantic-settings = "^2.3.0"
gql = {extras = ["all"], version = "^3.5.0"}
python-keycloak = "^4.0.0"
python-dateutil = "^2.9.0.post0"
tenacity = "^8.3.0"
adbc-driver-postgresql = "^1.0.0"
connectorx = "^0.3.3"
more-itertools = "^10.2.0"
pyairtable = "^2.3.3"

[tool.poetry.group.dev.dependencies]
ipykernel = "^6.29.5"
ipywidgets = "^8.1.3"
great-tables = "^0.10.0"
hvplot = "^0.10.0"
python-semantic-release = "^9.8.5"
ruff = "^0.5.4"
pre-commit = "^3.7.1"
bandit = {extras = ["baseline"], version = "^1.7.9"}

Poetry Runtime Logs

n/a
dimbleby commented 1 month ago

Presumably duplicate #8194

dimbleby commented 1 month ago

Additionally: if you want to know why poetry finds (eg) bokeh 3.5.0 and panel 1.4.4 incompatible: just add both requirements and let it tell you

david-waterworth commented 1 month ago

Ahh right that's a useful tip:

Because XXX depends on panel (1.4.4) which depends on bokeh (>=3.4.0,<3.5.0), bokeh is required.
So, because XXX depends on bokeh (3.5.0), version solving failed.

Although the fact that I can safely downgrade either panel or bokeh seems odd - I don't think there's anything else requiring bokeh 3.5.0 so I think the solver should have preferred panel==1.4.4 and bokeh==3.4.2 over panel==1.5.0b1 and bokeh==3.5.0.

I think you're right though, it looks like a duplicate - I don't see any resolution to that issue though on first read?

dimbleby commented 4 weeks ago

I don't see any resolution to that issue ....

That's why it's still open!

Please close this duplicate.