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.