MousaZeidBaker/poetry-plugin-up

poetry up breaks versions

ta-soft opened this issue · 5 comments

After executing

poetry up --latest

a couple times, I get the following error message:

Because no versions of databases match >0.7.0,<0.8.0 and databases (0.7.0) depends on sqlalchemy (>=1.4.42,<1.5), databases (>=0.7.0,<0.8.0) requires sqlalchemy (>=1.4.42,<1.5). And because sqlmodel (0.0.8) depends on SQLAlchemy (>=1.4.17,<=1.4.41) and no versions of sqlmodel match >0.0.8,<0.0.9, databases (>=0.7.0,<0.8.0) is incompatible with sqlmodel (>=0.0.8,<0.0.9). So, because jobtracker depends on both sqlmodel (^0.0.8) and databases (^0.7.0), version solving failed.

So looks like poetry up puts the project in a situation where version solving fails.

I believe you only need to have "sqlmodel" as a dependency to get to this situation.

Thanks for reporting an issue, can you share your pyproject.toml

This version is before poetry up.

[tool.poetry]
name = "jobtracker"
version = "0.1.0"
description = "Job Tracker FastAPI backend"
authors = ["TA SOFT bla@bla.com"]

[tool.poetry.dependencies]
python = "^3.10"
sqlmodel = "^0.0.6"
requests = "^2.28.1"
google-api-python-client = "^2.56.0"
google-auth-httplib2 = "^0.1.0"
google-auth-oauthlib = "^0.5.2"
psycopg2-binary = "^2.9.3"
uvicorn = "^0.18.2"
gunicorn = "^20.1.0"
databases = {extras = ["postgresql"], version = "^0.6.1"}
fastapi = "^0.79.0"
selenium = "^4.4.0"
python-multipart = "^0.0.5"
APScheduler = "^3.9.1"
pyTelegramBotAPI = "^4.7.0"
aiohttp = "^3.8.1"
oauth2client = "^4.1.3"
pytest = "^7.1.2"
loguru = "^0.6.0"
python-jose = {extras = ["cryptography"], version = "^3.3.0"}
passlib = {extras = ["bcrypt"], version = "^1.7.4"}
munkres = "^1.1.4"
pandas = "^1.5.0"
xlrd = "^2.0.1"
openpyxl = "^3.0.10"
XlsxWriter = "^3.0.3"
Jinja2 = "^3.1.2"
fpdf2 = "^2.5.7"
dataframe-image = "^0.1.3"
matplotlib = "^3.6.1"
demoji = "^1.1.0"

[tool.poetry.dev-dependencies]

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

So the issue is databases 0.7.0 is incompatible with sqlmodel 0.0.8 because both depend on different sqlalchemy versions.

Running following in an empty project yields the same error

poetry add sqlmodel "databases[postgresql]"

so Poetry itself can't resolve them.

I'd suggest to pin packages that depend on same sub-package but with different specific versions so that they are ignored when updating to latest.

I'll add a fix that reverts pyproject.toml changes on error in order not to end up with a "broken" pyproject.toml

I'll add a fix that reverts pyproject.toml changes on error in order not to end up with a "broken" pyproject.toml

excellent stuff, thank you!