-
Notifications
You must be signed in to change notification settings - Fork 6
Description
When using poetry, I run into dependency conflicts if I want to use the more recent stable versions of dlt. I would like to use the filesystem and Snowflake destinations with dlt-init-openapi and the rest_api source. This is preventing my team from adopting dlt.
Steps to reproduce:
My pyproject.toml file initially looks like this:
[tool.poetry.dependencies]
python = ">=3.11,<3.13"
Running poetry add dlt; poetry add dlt-init-openapi; results in the following dependency conflict:
Because no versions of dlt match >0.4.12,<0.4.13a0 || >0.4.13a0,<0.5.0
and dlt (0.4.13a0) depends on dlt (0.4.13a0), dlt (>0.4.12,<0.5.0) requires dlt (0.4.13a0).
And because dlt (0.4.12) depends on dlt (0.4.12), dlt (>=0.4.12,<0.5.0) requires dlt (0.4.12 || 0.4.13a0).
Because no versions of dlt-init-openapi match >0.1.0,<0.2.0
and dlt-init-openapi (0.1.0) depends on dlt (>=0.4.12,<0.5.0), dlt-init-openapi (>=0.1.0,<0.2.0) requires dlt (>=0.4.12,<0.5.0).
Thus, dlt-init-openapi (>=0.1.0,<0.2.0) requires dlt (0.4.12 || 0.4.13a0).
So, because <repo-name> depends on both dlt (^1.2.0) and dlt-init-openapi (^0.1.0), version solving failed.
After pinning the dlt version to 0.4.12, I can successfully add dlt-init-openapi as a dependency. However, if I try to initialize a simple pipeline using dlt init chess snowflake, the console warns me about my dlt installation needing to be updated:
WARNING: This pipeline requires a newer version of dlt than your installed version (0.4.12). Pipeline requires 'dlt>=0.5.1'
I receive a similar warning if I change the destination to filesystem or the source to rest_api.
However, if I try to pin the dlt version to 0.5.1 with poetry add dlt==0.5.1, I again get a dependency conflict:
Because no versions of dlt match >0.4.12,<0.4.13a0 || >0.4.13a0,<0.5.0
and dlt (0.4.13a0) depends on dlt (0.4.13a0), dlt (>0.4.12,<0.5.0) requires dlt (0.4.13a0).
And because dlt (0.4.12) depends on dlt (0.4.12), dlt (>=0.4.12,<0.5.0) requires dlt (0.4.12 || 0.4.13a0).
Because no versions of dlt-init-openapi match >0.1.0,<0.2.0
and dlt-init-openapi (0.1.0) depends on dlt (>=0.4.12,<0.5.0), dlt-init-openapi (>=0.1.0,<0.2.0) requires dlt (>=0.4.12,<0.5.0).
Thus, dlt-init-openapi (>=0.1.0,<0.2.0) requires dlt (0.4.12 || 0.4.13a0).
So, because <repo-name> depends on both dlt-init-openapi (^0.1.0) and dlt (0.5.1), version solving failed.