Skip to content

Examples of ResolutionTooDeep in Pip #13281

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
notatallshaw opened this issue Mar 16, 2025 · 13 comments
Open

Examples of ResolutionTooDeep in Pip #13281

notatallshaw opened this issue Mar 16, 2025 · 13 comments
Labels
C: dependency resolution About choosing which dependencies to install C: error messages Improving error messages

Comments

@notatallshaw
Copy link
Member

🐍 Collecting Examples of ResolutionTooDeep in Pip

This post is not for help, but for collecting examples of where Pip's resolver fails with ResolutionTooDeep. Your contributions will help test future improvements to the resolver's behavior.

✅ What to Include

When submitting an example, please provide the following:

  1. Pip version (pip --version)
  2. Python version (python --version)
  3. Operating System
  4. Output of pip freeze
  5. The exact command that produced the error
  6. Contents of any pyproject.toml, requirements.txt, or other relevant files (if applicable)
    • For pyproject.toml, please include the dependencies value from the [project] section.
    • If the files are too long, you can upload them to a GitHub Gist and share the link.
    • Alternatively, write out any additional steps needed to reproduce the issue.

📝 Example Submission

Pip version: 24.0
Python version: 3.11.6
OS: Ubuntu 22.04

$ pip install mypackage

Output:
ERROR: ResolutionTooDeep: xxx

Output of `pip freeze`:
package-a==1.2.3
package-b==4.5.6
...

Contents of `pyproject.toml`:

[project]
dependencies = [
    "package-a==1.2.3",
    "package-b==4.5.6"
]

(Or link to Gist: https://gist.github.com/your-gist)

📌 Why This Matters

By collecting real-world examples, we can better understand when and why the resolver goes too deep and improve Pip's behavior.

Thank you for helping us make Pip better!

@potiuk
Copy link
Contributor

potiuk commented Apr 27, 2025

Pip version (pip --version): 25.1

Python version (python --version) 3.12.10: Actually: docker pull python:3.12-slim-bookworm@sha256:85824326bc4ae27a1abb5bc0dd9e08847aa5fe73d8afb593b1b45b7cb4180f57

Operating System: debian bookworm

Output of pip freeze: nothing installed.

The exact command that produced the error: Below - but the command requires a series of steps to build the packages locally - they are shown in the failing CI job, I can help with enumerating steps if needed.

Contents of any pyproject.toml, requirements.txt, or other relevant files (if applicable): no pyproject.toml used in this case - though all packages above were building using the 60+ pyproject.toml in Airflow `main`.

Only Python 3.12 fails Other images built properly.

Example failure: https://github.com/apache/airflow/actions/runs/14692610732/job/41231149374#step:9:130

Attempting to see if apache/airflow#49853 would help:

Image

Command:

pip install --root-user-action ignore 'apache-airflow[aiobotocore,amazon,async,celery,cncf-kubernetes,common-io,common-messaging,docker,elasticsearch,fab,ftp,git,google,google-auth,graphviz,grpc,hashicorp,http,ldap,microsoft-azure,mysql,odbc,openlineage,pandas,postgres,redis,sendgrid,sftp,slack,snowflake,ssh,statsd,uv] @ file:///docker-context-files/apache_airflow-3.1.0-py3-none-any.whl' 'apache-airflow-core @ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl' 'apache-airflow-providers-amazon @ file:///docker-context-files/apache_airflow_providers_amazon-9.6.1-py3-none-any.whl' 'apache-airflow-providers-celery @ file:///docker-context-files/apache_airflow_providers_celery-3.10.6-py3-none-any.whl' 'apache-airflow-providers-cncf-kubernetes @ file:///docker-context-files/apache_airflow_providers_cncf_kubernetes-10.4.3-py3-none-any.whl' 'apache-airflow-providers-common-compat @ file:///docker-context-files/apache_airflow_providers_common_compat-1.6.1-py3-none-any.whl' 'apache-airflow-providers-common-io @ file:///docker-context-files/apache_airflow_providers_common_io-1.5.4-py3-none-any.whl' 'apache-airflow-providers-common-messaging @ file:///docker-context-files/apache_airflow_providers_common_messaging-1.0.0-py3-none-any.whl' 'apache-airflow-providers-common-sql @ file:///docker-context-files/apache_airflow_providers_common_sql-1.26.0-py3-none-any.whl' 'apache-airflow-providers-docker @ file:///docker-context-files/apache_airflow_providers_docker-4.3.1-py3-none-any.whl' 'apache-airflow-providers-elasticsearch @ file:///docker-context-files/apache_airflow_providers_elasticsearch-6.2.2-py3-none-any.whl' 'apache-airflow-providers-fab @ file:///docker-context-files/apache_airflow_providers_fab-2.0.2-py3-none-any.whl' 'apache-airflow-providers-ftp @ file:///docker-context-files/apache_airflow_providers_ftp-3.12.3-py3-none-any.whl' 'apache-airflow-providers-git @ file:///docker-context-files/apache_airflow_providers_git-0.0.2-py3-none-any.whl' 'apache-airflow-providers-google @ file:///docker-context-files/apache_airflow_providers_google-15.1.0-py3-none-any.whl' 'apache-airflow-providers-grpc @ file:///docker-context-files/apache_airflow_providers_grpc-3.7.3-py3-none-any.whl' 'apache-airflow-providers-hashicorp @ file:///docker-context-files/apache_airflow_providers_hashicorp-4.1.1-py3-none-any.whl' 'apache-airflow-providers-http @ file:///docker-context-files/apache_airflow_providers_http-5.2.2-py3-none-any.whl' 'apache-airflow-providers-microsoft-azure @ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl' 'apache-airflow-providers-mysql @ file:///docker-context-files/apache_airflow_providers_mysql-6.2.2-py3-none-any.whl' 'apache-airflow-providers-odbc @ file:///docker-context-files/apache_airflow_providers_odbc-4.9.2-py3-none-any.whl' 'apache-airflow-providers-openlineage @ file:///docker-context-files/apache_airflow_providers_openlineage-2.2.0-py3-none-any.whl' 'apache-airflow-providers-postgres @ file:///docker-context-files/apache_airflow_providers_postgres-6.1.3-py3-none-any.whl' 'apache-airflow-providers-redis @ file:///docker-context-files/apache_airflow_providers_redis-4.0.2-py3-none-any.whl' 'apache-airflow-providers-sendgrid @ file:///docker-context-files/apache_airflow_providers_sendgrid-4.0.1-py3-none-any.whl' 'apache-airflow-providers-sftp @ file:///docker-context-files/apache_airflow_providers_sftp-5.2.1-py3-none-any.whl' 'apache-airflow-providers-slack @ file:///docker-context-files/apache_airflow_providers_slack-9.0.5-py3-none-any.whl' 'apache-airflow-providers-smtp @ file:///docker-context-files/apache_airflow_providers_smtp-2.0.3-py3-none-any.whl' 'apache-airflow-providers-snowflake @ file:///docker-context-files/apache_airflow_providers_snowflake-6.2.2-py3-none-any.whl' 'apache-airflow-providers-ssh @ file:///docker-context-files/apache_airflow_providers_ssh-4.0.1-py3-none-any.whl' 'apache-airflow-providers-standard @ file:///docker-context-files/apache_airflow_providers_standard-1.1.0-py3-none-any.whl' 'apache-airflow-task-sdk @ file:///docker-context-files/apache_airflow_task_sdk-1.1.0-py3-none-any.whl /docker-context-files/apache_airflow-3.1.0-py3-none-any.whl (from apache-airflow[aiobotocore,amazon,async,celery,cncf-kubernetes,common-io,common-messaging,docker,elasticsearch,fab,ftp,git,google,google-auth,graphviz,grpc,hashicorp,http,ldap,microsoft-azure,mysql,odbc,openlineage,pandas,postgres,redis,sendgrid,sftp,slack,snowflake,ssh,statsd,uv]@ file:///docker-context-files/apache_airflow-3.1.0-py3-none-any.whl

The most interesting part of the output is:

 #57 33.53 Collecting opentelemetry-exporter-otlp-proto-http==1.24.0 (from opentelemetry-exporter-otlp>=1.24.0->apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 33.55   Downloading opentelemetry_exporter_otlp_proto_http-1.24.0-py3-none-any.whl.metadata (2.1 kB)
  #57 33.57 Collecting opentelemetry-exporter-otlp-proto-common==1.24.0 (from opentelemetry-exporter-otlp-proto-grpc==1.24.0->opentelemetry-exporter-otlp>=1.24.0->apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 33.59   Downloading opentelemetry_exporter_otlp_proto_common-1.24.0-py3-none-any.whl.metadata (1.7 kB)
  #57 33.59 Collecting opentelemetry-proto==1.24.0 (from opentelemetry-exporter-otlp-proto-grpc==1.24.0->opentelemetry-exporter-otlp>=1.24.0->apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 33.61   Downloading opentelemetry_proto-1.24.0-py3-none-any.whl.metadata (2.2 kB)
  #57 33.62 Collecting importlib-metadata<8.7.0,>=6.0 (from opentelemetry-api>=1.24.0->apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 33.64   Downloading importlib_metadata-8.6.0-py3-none-any.whl.metadata (4.7 kB)
  #57 33.84 INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  #57 34.24   Downloading importlib_metadata-8.5.0-py3-none-any.whl.metadata (4.8 kB)
  #57 34.77 INFO: pip is still looking at multiple versions of opentelemetry-exporter-otlp-proto-grpc to determine which version is compatible with other requirements. This could take a while.
  #57 34.81   Downloading importlib_metadata-8.4.0-py3-none-any.whl.metadata (4.7 kB)
  #57 35.38   Downloading importlib_metadata-8.3.0-py3-none-any.whl.metadata (4.7 kB)
  #57 35.90 INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  #57 35.96   Downloading importlib_metadata-8.2.0-py3-none-any.whl.metadata (4.7 kB)
  #57 36.53   Downloading importlib_metadata-8.1.0-py3-none-any.whl.metadata (4.7 kB)
  #57 37.10   Downloading importlib_metadata-8.0.0-py3-none-any.whl.metadata (4.6 kB)
  #57 37.67   Downloading importlib_metadata-7.2.1-py3-none-any.whl.metadata (4.6 kB)
  #57 38.24   Downloading importlib_metadata-7.2.0-py3-none-any.whl.metadata (4.7 kB)
  #57 38.81   Downloading importlib_metadata-7.1.0-py3-none-any.whl.metadata (4.7 kB)
  #57 39.38   Downloading importlib_metadata-7.0.2-py3-none-any.whl.metadata (4.6 kB)
  #57 39.95   Downloading importlib_metadata-7.0.1-py3-none-any.whl.metadata (4.9 kB)
  #57 40.52   Downloading importlib_metadata-7.0.0-py3-none-any.whl.metadata (4.9 kB)
  #57 41.10   Downloading importlib_metadata-6.11.0-py3-none-any.whl.metadata (4.9 kB)
  #57 41.67   Downloading importlib_metadata-6.10.0-py3-none-any.whl.metadata (4.9 kB)
  #57 42.24   Downloading importlib_metadata-6.9.0-py3-none-any.whl.metadata (4.9 kB)
  #57 42.81   Downloading importlib_metadata-6.8.0-py3-none-any.whl.metadata (5.1 kB)
  #57 43.39   Downloading importlib_metadata-6.7.0-py3-none-any.whl.metadata (4.9 kB)
  #57 43.96   Downloading importlib_metadata-6.6.0-py3-none-any.whl.metadata (5.0 kB)
  #57 44.53   Downloading importlib_metadata-6.5.1-py3-none-any.whl.metadata (5.0 kB)
  #57 45.11   Downloading importlib_metadata-6.5.0-py3-none-any.whl.metadata (5.0 kB)
  #57 45.68   Downloading importlib_metadata-6.4.1-py3-none-any.whl.metadata (5.0 kB)
  #57 46.25   Downloading importlib_metadata-6.4.0-py3-none-any.whl.metadata (5.0 kB)
  #57 46.83   Downloading importlib_metadata-6.3.0-py3-none-any.whl.metadata (5.0 kB)
  #57 47.39   Downloading importlib_metadata-6.2.1-py3-none-any.whl.metadata (5.0 kB)
  #57 47.97   Downloading importlib_metadata-6.2.0-py3-none-any.whl.metadata (5.0 kB)
  #57 48.55   Downloading importlib_metadata-6.1.0-py3-none-any.whl.metadata (5.0 kB)
  #57 49.12   Downloading importlib_metadata-6.0.1-py3-none-any.whl.metadata (5.0 kB)
  #57 49.69   Downloading importlib_metadata-6.0.0-py3-none-any.whl.metadata (5.0 kB)
  #57 50.25 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 50.27   Downloading opentelemetry_api-1.32.0-py3-none-any.whl.metadata (1.6 kB)
  #57 50.28 INFO: pip is looking at multiple versions of opentelemetry-sdk to determine which version is compatible with other requirements. This could take a while.
  #57 50.28 Collecting opentelemetry-sdk>=1.27.0 (from microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 50.30   Downloading opentelemetry_sdk-1.32.0-py3-none-any.whl.metadata (1.6 kB)
  #57 50.32 Collecting opentelemetry-semantic-conventions==0.53b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 50.34   Downloading opentelemetry_semantic_conventions-0.53b0-py3-none-any.whl.metadata (2.5 kB)
  #57 53.62 INFO: pip is still looking at multiple versions of opentelemetry-sdk to determine which version is compatible with other requirements. This could take a while.
  #57 56.28 INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  #57 66.41 Collecting openlineage-integration-common>=1.31.0 (from apache-airflow-providers-openlineage@ file:///docker-context-files/apache_airflow_providers_openlineage-2.2.0-py3-none-any.whl)
  #57 66.43   Downloading openlineage_integration_common-1.31.0-py3-none-any.whl.metadata (3.8 kB)
  #57 66.49 Collecting openlineage-python>=1.31.0 (from apache-airflow-providers-openlineage@ file:///docker-context-files/apache_airflow_providers_openlineage-2.2.0-py3-none-any.whl)
  #57 66.51   Downloading openlineage_python-1.31.0-py3-none-any.whl.metadata (1.9 kB)
  #57 66.52 Collecting openlineage-sql==1.31.0 (from openlineage-integration-common>=1.31.0->apache-airflow-providers-openlineage@ file:///docker-context-files/apache_airflow_providers_openlineage-2.2.0-py3-none-any.whl)
  #57 66.54   Downloading openlineage_sql-1.31.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (957 bytes)
  #57 83.98 Collecting mysqlclient>=1.4.0 (from apache-airflow-providers-mysql@ file:///docker-context-files/apache_airflow_providers_mysql-6.2.2-py3-none-any.whl)
  #57 84.00   Downloading mysqlclient-2.2.6.tar.gz (91 kB)
  #57 84.02   Installing build dependencies: started
  #57 85.11   Installing build dependencies: finished with status 'done'
  #57 85.11   Getting requirements to build wheel: started
  #57 86.04   Getting requirements to build wheel: finished with status 'done'
  #57 86.04   Preparing metadata (pyproject.toml): started
  #57 86.66   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 87.92   Downloading mysqlclient-2.2.5.tar.gz (90 kB)
  #57 87.94   Installing build dependencies: started
  #57 89.03   Installing build dependencies: finished with status 'done'
  #57 89.04   Getting requirements to build wheel: started
  #57 89.92   Getting requirements to build wheel: finished with status 'done'
  #57 89.92   Preparing metadata (pyproject.toml): started
  #57 90.53   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 91.93   Downloading mysqlclient-2.2.4.tar.gz (90 kB)
  #57 91.95   Installing build dependencies: started
  #57 93.03   Installing build dependencies: finished with status 'done'
  #57 93.03   Getting requirements to build wheel: started
  #57 93.92   Getting requirements to build wheel: finished with status 'done'
  #57 93.92   Preparing metadata (pyproject.toml): started
  #57 94.54   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 95.72   Downloading mysqlclient-2.2.3.tar.gz (90 kB)
  #57 95.74   Installing build dependencies: started
  #57 96.83   Installing build dependencies: finished with status 'done'
  #57 96.83   Getting requirements to build wheel: started
  #57 97.71   Getting requirements to build wheel: finished with status 'done'
  #57 97.71   Preparing metadata (pyproject.toml): started
  #57 98.33   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 99.51   Downloading mysqlclient-2.2.2.tar.gz (90 kB)
  #57 99.53   Installing build dependencies: started
  #57 100.6   Installing build dependencies: finished with status 'done'
  #57 100.6   Getting requirements to build wheel: started
  #57 101.5   Getting requirements to build wheel: finished with status 'done'
  #57 101.5   Preparing metadata (pyproject.toml): started
  #57 102.1   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 103.3   Downloading mysqlclient-2.2.1.tar.gz (89 kB)
  #57 103.3   Installing build dependencies: started
  #57 104.4   Installing build dependencies: finished with status 'done'
  #57 104.4   Getting requirements to build wheel: started
  #57 105.3   Getting requirements to build wheel: finished with status 'done'
  #57 105.3   Preparing metadata (pyproject.toml): started
  #57 105.9   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 107.1   Downloading mysqlclient-2.2.0.tar.gz (89 kB)
  #57 107.2   Installing build dependencies: started
  #57 108.3   Installing build dependencies: finished with status 'done'
  #57 108.3   Getting requirements to build wheel: started
  #57 109.1   Getting requirements to build wheel: finished with status 'done'
  #57 109.1   Preparing metadata (pyproject.toml): started
  #57 109.8   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 111.0   Downloading mysqlclient-2.1.1.tar.gz (88 kB)
  #57 111.0   Installing build dependencies: started
  #57 112.1   Installing build dependencies: finished with status 'done'
  #57 112.1   Getting requirements to build wheel: started
  #57 112.8   Getting requirements to build wheel: finished with status 'done'
  #57 112.8   Preparing metadata (pyproject.toml): started
  #57 113.3   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 114.5   Downloading mysqlclient-2.1.0.tar.gz (87 kB)
  #57 114.5   Installing build dependencies: started
  #57 115.6   Installing build dependencies: finished with status 'done'
  #57 115.6   Getting requirements to build wheel: started
  #57 116.3   Getting requirements to build wheel: finished with status 'done'
  #57 116.3   Preparing metadata (pyproject.toml): started
  #57 116.9   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 118.0   Downloading mysqlclient-2.0.3.tar.gz (88 kB)
  #57 118.1   Installing build dependencies: started
  #57 119.2   Installing build dependencies: finished with status 'done'
  #57 119.2   Getting requirements to build wheel: started
  #57 119.8   Getting requirements to build wheel: finished with status 'done'
  #57 119.8   Preparing metadata (pyproject.toml): started
  #57 120.4   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 121.6   Downloading mysqlclient-2.0.2.tar.gz (88 kB)
  #57 121.6   Installing build dependencies: started
  #57 122.7   Installing build dependencies: finished with status 'done'
  #57 122.7   Getting requirements to build wheel: started
  #57 123.4   Getting requirements to build wheel: finished with status 'done'
  #57 123.4   Preparing metadata (pyproject.toml): started
  #57 124.0   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 125.1   Downloading mysqlclient-2.0.1.tar.gz (87 kB)
  #57 125.2   Installing build dependencies: started
  #57 126.3   Installing build dependencies: finished with status 'done'
  #57 126.3   Getting requirements to build wheel: started
  #57 126.9   Getting requirements to build wheel: finished with status 'done'
  #57 126.9   Preparing metadata (pyproject.toml): started
  #57 127.5   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 128.7   Downloading mysqlclient-2.0.0.tar.gz (87 kB)
  #57 128.7   Installing build dependencies: started
  #57 129.8   Installing build dependencies: finished with status 'done'
  #57 129.8   Getting requirements to build wheel: started
  #57 130.5   Getting requirements to build wheel: finished with status 'done'
  #57 130.5   Preparing metadata (pyproject.toml): started
  #57 131.1   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 132.2   Downloading mysqlclient-1.4.6.tar.gz (85 kB)
  #57 132.2   Installing build dependencies: started
  #57 133.3   Installing build dependencies: finished with status 'done'
  #57 133.3   Getting requirements to build wheel: started
  #57 134.0   Getting requirements to build wheel: finished with status 'done'
  #57 134.0   Preparing metadata (pyproject.toml): started
  #57 134.6   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 135.8   Downloading mysqlclient-1.4.5.tar.gz (86 kB)
  #57 135.8   Installing build dependencies: started
  #57 136.9   Installing build dependencies: finished with status 'done'
  #57 136.9   Getting requirements to build wheel: started
  #57 137.6   Getting requirements to build wheel: finished with status 'done'
  #57 137.6   Preparing metadata (pyproject.toml): started
  #57 138.1   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 139.3   Downloading mysqlclient-1.4.4.tar.gz (86 kB)
  #57 139.3   Installing build dependencies: started
  #57 140.4   Installing build dependencies: finished with status 'done'
  #57 140.4   Getting requirements to build wheel: started
  #57 141.1   Getting requirements to build wheel: finished with status 'done'
  #57 141.1   Preparing metadata (pyproject.toml): started
  #57 141.7   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 142.9   Downloading mysqlclient-1.4.3.tar.gz (86 kB)
  #57 142.9   Installing build dependencies: started
  #57 144.0   Installing build dependencies: finished with status 'done'
  #57 144.0   Getting requirements to build wheel: started
  #57 144.7   Getting requirements to build wheel: finished with status 'done'
  #57 144.7   Preparing metadata (pyproject.toml): started
  #57 145.2   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 146.4   Downloading mysqlclient-1.4.2.post1.tar.gz (85 kB)
  #57 146.4   Installing build dependencies: started
  #57 147.6   Installing build dependencies: finished with status 'done'
  #57 147.6   Getting requirements to build wheel: started
  #57 148.3   Getting requirements to build wheel: finished with status 'done'
  #57 148.3   Preparing metadata (pyproject.toml): started
  #57 148.8   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 150.0   Downloading mysqlclient-1.4.2.tar.gz (85 kB)
  #57 150.0   Installing build dependencies: started
  #57 151.1   Installing build dependencies: finished with status 'done'
  #57 151.1   Getting requirements to build wheel: started
  #57 151.8   Getting requirements to build wheel: finished with status 'done'
  #57 151.8   Preparing metadata (pyproject.toml): started
  #57 152.3   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 153.5   Downloading mysqlclient-1.4.1.tar.gz (85 kB)
  #57 153.5   Installing build dependencies: started
  #57 154.6   Installing build dependencies: finished with status 'done'
  #57 154.6   Getting requirements to build wheel: started
  #57 155.3   Getting requirements to build wheel: finished with status 'done'
  #57 155.3   Preparing metadata (pyproject.toml): started
  #57 155.9   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 157.1   Downloading mysqlclient-1.4.0.tar.gz (85 kB)
  #57 157.1   Installing build dependencies: started
  #57 158.2   Installing build dependencies: finished with status 'done'
  #57 158.2   Getting requirements to build wheel: started
  #57 158.9   Getting requirements to build wheel: finished with status 'done'
  #57 158.9   Preparing metadata (pyproject.toml): started
  #57 159.4   Preparing metadata (pyproject.toml): finished with status 'done'
  #57 859.1 Collecting mysql-connector-python>=8.0.29 (from apache-airflow-providers-mysql@ file:///docker-context-files/apache_airflow_providers_mysql-6.2.2-py3-none-any.whl)
  #57 859.2   Downloading mysql_connector_python-9.2.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #57 883.8   Downloading mysql_connector_python-9.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #57 908.6   Downloading mysql_connector_python-9.0.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.0 kB)
  #57 933.2   Downloading mysql_connector_python-8.4.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #57 958.2   Downloading mysql_connector_python-8.3.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #57 983.0   Downloading mysql_connector_python-8.2.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.1 kB)
  #57 983.0 INFO: pip is looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #57 983.0   Downloading mysql_connector_python-8.1.0-py2.py3-none-any.whl.metadata (2.0 kB)
  #57 983.1   Downloading mysql_connector_python-8.0.33-py2.py3-none-any.whl.metadata (1.8 kB)
  #57 983.1   Downloading mysql_connector_python-8.0.32-py2.py3-none-any.whl.metadata (1.8 kB)
  #57 983.1   Downloading mysql_connector_python-8.0.31-py2.py3-none-any.whl.metadata (1.8 kB)
  #57 983.2   Downloading mysql_connector_python-8.0.30-py2.py3-none-any.whl.metadata (1.8 kB)
  #57 983.2   Downloading mysql_connector_python-8.0.29-py2.py3-none-any.whl.metadata (1.7 kB)
  #57 1008.3 INFO: pip is still looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #57 1849.8 INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  #57 2848.4 error: resolution-too-deep
  #57 2848.4 
  #57 2848.4 × Dependency resolution exceeded maximum depth
  #57 2848.4 ╰─> Pip cannot resolve the current dependencies as the dependency graph is too complex for pip to solve efficiently.
  #57 2848.4 

@notatallshaw
Copy link
Member Author

Thanks, I'll take a look as soon as I can, probably later today.

@notatallshaw
Copy link
Member Author

I see you have applied a workaround, which is good because I think it might take me a little time and understanding your build system to produce an MRE, as testing with the latest releases packages it doesn't appear to hit this:

$ pip install --dry-run apache-airflow[aiobotocore,amazon,async,celery,cncf-kubernetes,common-io,common-messaging,docker,elasticsearch,fab,ftp,git,google,google-auth,graphviz,grpc,hashicorp,http,ldap,microsoft-azure,mysql,odbc,openlineage,pandas,postgres,redis,sendgrid,sftp,slack,snowflake,ssh,statsd,uv]==3.0.0 apache-airflow-core==3.0.0 apache-airflow-providers-amazon==9.6.1 apache-airflow-providers-celery==3.10.6 apache-airflow-providers-cncf-kubernetes==10.4.3 apache-airflow-providers-common-compat==1.6.0 apache-airflow-providers-common-io==1.5.4 apache-airflow-providers-common-messaging==1.0.0 apache-airflow-providers-common-sql==1.26.0 apache-airflow-providers-docker==4.3.1 apache-airflow-providers-elasticsearch==6.2.2 apache-airflow-providers-fab==2.0.1 apache-airflow-providers-ftp==3.12.3 apache-airflow-providers-git==0.0.2 apache-airflow-providers-google==15.1.0 apache-airflow-providers-grpc==3.7.3 apache-airflow-providers-hashicorp==4.1.1 apache-airflow-providers-http==5.2.2 apache-airflow-providers-microsoft-azure==12.3.1 apache-airflow-providers-mysql==6.2.2 apache-airflow-providers-odbc==4.9.2 apache-airflow-providers-openlineage==2.2.0 apache-airflow-providers-postgres==6.1.3 apache-airflow-providers-redis==4.0.2 apache-airflow-providers-sendgrid==4.0.1 apache-airflow-providers-sftp==5.2.1 apache-airflow-providers-slack==9.0.5 apache-airflow-providers-smtp==2.0.3 apache-airflow-providers-snowflake==6.2.2 apache-airflow-providers-ssh==4.0.1 apache-airflow-providers-standard==1.0.0 apache-airflow-task-sdk==1.0.0

...

Would install Authlib-1.5.2 Deprecated-1.2.18 Flask-2.2.5 Flask-AppBuilder-4.5.3 Flask-Babel-2.0.0 Flask-JWT-Extended-4.7.1 Flask-Limiter-3.12 Flask-Login-0.6.3 Flask-SQLAlchemy-2.5.1 Flask-Session-0.5.0 Flask-WTF-1.2.2 GitPython-3.1.44 Jinja2-3.1.6 Mako-1.3.10 MarkupSafe-3.0.2 PyAthena-3.13.0 PyJWT-2.10.1 PyMySQL-1.1.1 PyNaCl-1.5.0 PyYAML-6.0.2 Pygments-2.19.1 SQLAlchemy-1.4.54 SQLAlchemy-JSONField-1.0.2 SQLAlchemy-Utils-0.41.2 WTForms-3.2.1 Werkzeug-2.2.3 a2wsgi-1.10.8 adal-1.2.7 adlfs-2024.12.0 aiobotocore-2.21.1 aiofiles-24.1.0 aiohappyeyeballs-2.6.1 aiohttp-3.11.18 aioitertools-0.12.0 aiologic-0.14.0 aiomysql-0.2.0 aiosignal-1.3.2 aiosqlite-0.21.0 alembic-1.15.2 amqp-5.3.1 annotated-types-0.7.0 anyio-4.9.0 apache-airflow-3.0.0 apache-airflow-core-3.0.0 apache-airflow-providers-amazon-9.6.1 apache-airflow-providers-celery-3.10.6 apache-airflow-providers-cncf-kubernetes-10.4.3 apache-airflow-providers-common-compat-1.6.0 apache-airflow-providers-common-io-1.5.4 apache-airflow-providers-common-messaging-1.0.0 apache-airflow-providers-common-sql-1.26.0 apache-airflow-providers-docker-4.3.1 apache-airflow-providers-elasticsearch-6.2.2 apache-airflow-providers-fab-2.0.1 apache-airflow-providers-ftp-3.12.3 apache-airflow-providers-git-0.0.2 apache-airflow-providers-google-15.1.0 apache-airflow-providers-grpc-3.7.3 apache-airflow-providers-hashicorp-4.1.1 apache-airflow-providers-http-5.2.2 apache-airflow-providers-microsoft-azure-12.3.1 apache-airflow-providers-mysql-6.2.2 apache-airflow-providers-odbc-4.9.2 apache-airflow-providers-openlineage-2.2.0 apache-airflow-providers-postgres-6.1.3 apache-airflow-providers-redis-4.0.2 apache-airflow-providers-sendgrid-4.0.1 apache-airflow-providers-sftp-5.2.1 apache-airflow-providers-slack-9.0.5 apache-airflow-providers-smtp-2.0.3 apache-airflow-providers-snowflake-6.2.2 apache-airflow-providers-ssh-4.0.1 apache-airflow-providers-standard-1.0.0 apache-airflow-task-sdk-1.0.0 apispec-6.8.1 argcomplete-3.6.2 asgiref-3.8.1 asn1crypto-1.5.1 asyncpg-0.30.0 asyncssh-2.20.0 attrs-25.3.0 azure-batch-14.2.0 azure-common-1.1.28 azure-core-1.33.0 azure-cosmos-4.9.0 azure-datalake-store-0.0.53 azure-identity-1.21.0 azure-keyvault-secrets-4.9.0 azure-kusto-data-5.0.2 azure-mgmt-containerinstance-10.1.0 azure-mgmt-containerregistry-13.0.0 azure-mgmt-core-1.5.0 azure-mgmt-cosmosdb-9.7.0 azure-mgmt-datafactory-9.2.0 azure-mgmt-datalake-nspkg-3.0.1 azure-mgmt-datalake-store-0.5.0 azure-mgmt-nspkg-3.0.2 azure-mgmt-resource-23.3.0 azure-mgmt-storage-22.2.0 azure-nspkg-3.0.2 azure-servicebus-7.14.2 azure-storage-blob-12.25.1 azure-storage-file-datalake-12.20.0 azure-storage-file-share-12.21.0 azure-synapse-artifacts-0.20.0 azure-synapse-spark-0.7.0 babel-2.17.0 backoff-2.2.1 bcrypt-4.3.0 beautifulsoup4-4.13.4 billiard-4.2.1 blinker-1.9.0 boto3-1.37.1 botocore-1.37.1 cachelib-0.13.0 cachetools-5.5.2 cadwyn-5.3.3 cattrs-24.1.3 celery-5.5.2 certifi-2025.4.26 cffi-1.17.1 chardet-5.2.0 charset-normalizer-3.4.1 click-8.1.8 click-didyoumean-0.3.1 click-plugins-1.1.1 click-repl-0.3.0 clickclick-20.10.2 colorama-0.4.6 colorlog-6.9.0 connexion-2.14.2 cron-descriptor-1.4.5 croniter-6.0.0 cryptography-44.0.2 db-dtypes-1.4.2 decorator-5.2.1 dill-0.4.0 dnspython-2.7.0 docker-7.1.0 docstring_parser-0.16 durationpy-0.9 elastic-transport-8.17.1 elasticsearch-8.18.0 email_validator-2.2.0 eventlet-0.39.1 fastapi-0.115.12 fastapi-cli-0.0.7 filelock-3.18.0 flower-2.0.1 frozenlist-1.6.0 fsspec-2025.3.2 gcloud-aio-auth-5.4.1 gcloud-aio-bigquery-7.1.0 gcloud-aio-storage-9.4.0 gcsfs-2025.3.2 gevent-25.4.2 gitdb-4.0.12 google-ads-26.1.0 google-analytics-admin-0.24.0 google-api-core-2.24.2 google-api-python-client-2.168.0 google-auth-2.39.0 google-auth-httplib2-0.2.0 google-auth-oauthlib-1.2.2 google-cloud-aiplatform-1.90.0 google-cloud-alloydb-0.4.5 google-cloud-appengine-logging-1.6.1 google-cloud-audit-log-0.3.2 google-cloud-automl-2.16.3 google-cloud-batch-0.17.35 google-cloud-bigquery-3.31.0 google-cloud-bigquery-datatransfer-3.19.1 google-cloud-bigtable-2.30.1 google-cloud-build-3.31.1 google-cloud-compute-1.30.0 google-cloud-container-2.56.1 google-cloud-core-2.4.3 google-cloud-datacatalog-3.27.0 google-cloud-dataflow-client-0.8.17 google-cloud-dataform-0.6.1 google-cloud-dataplex-2.10.1 google-cloud-dataproc-5.18.1 google-cloud-dataproc-metastore-1.18.2 google-cloud-dlp-3.29.0 google-cloud-kms-3.4.1 google-cloud-language-2.17.1 google-cloud-logging-3.12.1 google-cloud-managedkafka-0.1.9 google-cloud-memcache-1.12.1 google-cloud-monitoring-2.27.1 google-cloud-orchestration-airflow-1.17.5 google-cloud-os-login-2.17.1 google-cloud-pubsub-2.29.0 google-cloud-redis-2.18.1 google-cloud-resource-manager-1.14.2 google-cloud-run-0.10.17 google-cloud-secret-manager-2.23.3 google-cloud-spanner-3.53.0 google-cloud-speech-2.32.0 google-cloud-storage-2.19.0 google-cloud-storage-transfer-1.16.1 google-cloud-tasks-2.19.2 google-cloud-texttospeech-2.26.0 google-cloud-translate-3.20.2 google-cloud-videointelligence-2.16.1 google-cloud-vision-3.10.1 google-cloud-workflows-1.18.1 google-crc32c-1.7.1 google-resumable-media-2.7.2 googleapis-common-protos-1.70.0 graphviz-0.20.3 greenlet-3.2.1 grpc-google-iam-v1-0.14.2 grpc-interceptor-0.15.4 grpcio-1.71.0 grpcio-gcp-0.2.2 grpcio-status-1.71.0 gunicorn-23.0.0 h11-0.16.0 h2-4.2.0 hpack-4.1.0 httpcore-1.0.9 httplib2-0.22.0 httptools-0.6.4 httpx-0.28.1 humanize-4.12.2 hvac-2.3.0 hyperframe-6.1.0 idna-3.10 ijson-3.3.0 immutabledict-4.2.1 importlib_metadata-8.6.1 inflection-0.5.1 isodate-0.7.2 itsdangerous-2.2.0 jmespath-1.0.1 joblib-1.4.2 jsonpath-ng-1.7.0 jsonschema-4.23.0 jsonschema-specifications-2025.4.1 kombu-5.5.3 kubernetes-31.0.0 kubernetes_asyncio-30.3.1 lazy-object-proxy-1.11.0 libcst-1.7.0 limits-5.1.0 linkify-it-py-2.0.3 lockfile-0.12.2 looker-sdk-25.4.0 lxml-5.4.0 markdown-it-py-3.0.0 marshmallow-3.26.1 marshmallow-sqlalchemy-0.28.2 mdurl-0.1.2 methodtools-0.4.7 microsoft-kiota-abstractions-1.9.3 microsoft-kiota-authentication-azure-1.9.3 microsoft-kiota-http-1.9.3 microsoft-kiota-serialization-json-1.9.3 microsoft-kiota-serialization-text-1.9.3 more-itertools-10.7.0 msal-1.32.3 msal-extensions-1.3.1 msgraph-core-1.3.3 msgspec-0.19.0 msrest-0.7.1 msrestazure-0.6.4.post1 multidict-6.4.3 mysql-connector-python-9.3.0 mysqlclient-2.2.7 numpy-1.26.4 oauthlib-3.2.2 openlineage-integration-common-1.32.0 openlineage-python-1.32.0 openlineage_sql-1.32.0 opentelemetry-api-1.32.1 opentelemetry-exporter-otlp-1.32.1 opentelemetry-exporter-otlp-proto-common-1.32.1 opentelemetry-exporter-otlp-proto-grpc-1.32.1 opentelemetry-exporter-otlp-proto-http-1.32.1 opentelemetry-proto-1.32.1 opentelemetry-sdk-1.32.1 opentelemetry-semantic-conventions-0.53b1 ordered-set-4.1.0 packaging-25.0 pandas-2.1.4 pandas-gbq-0.28.0 paramiko-3.5.1 pathspec-0.12.1 pendulum-3.1.0 platformdirs-4.3.7 pluggy-1.5.0 ply-3.11 prison-0.2.1 prometheus_client-0.21.1 prompt_toolkit-3.0.51 propcache-0.3.1 proto-plus-1.26.1 protobuf-5.29.4 psutil-7.0.0 psycopg2-binary-2.9.10 pyOpenSSL-25.0.0 pyarrow-20.0.0 pyasn1-0.6.1 pyasn1_modules-0.4.1 pycparser-2.22 pydantic-2.11.3 pydantic_core-2.33.1 pydata-google-auth-1.9.1 pyodbc-5.2.0 pyparsing-3.2.3 python-daemon-3.1.2 python-dateutil-2.9.0.post0 python-dotenv-1.1.0 python-http-client-3.3.7 python-ldap-3.4.4 python-multipart-0.0.20 python-slugify-8.0.4 python3-saml-1.16.0 pytz-2025.2 redis-5.2.1 redshift-connector-2.1.5 referencing-0.36.2 requests-2.32.3 requests-oauthlib-2.0.0 requests-toolbelt-1.0.0 retryhttp-1.3.2 rich-13.9.4 rich-argparse-1.7.0 rich-toolkit-0.14.3 rpds-py-0.24.0 rsa-4.9.1 ruamel.yaml-0.18.10 ruamel.yaml.clib-0.2.12 s3transfer-0.11.3 sagemaker_studio-1.0.13 scikit-learn-1.6.1 scipy-1.15.2 scramp-1.4.5 sendgrid-6.11.0 setproctitle-1.3.5 setuptools-80.0.0 shapely-2.1.0 shellingham-1.5.4 six-1.17.0 slack_sdk-3.35.0 smmap-5.0.2 sniffio-1.3.1 snowflake-connector-python-3.14.1 snowflake-sqlalchemy-1.7.3 sortedcontainers-2.4.0 soupsieve-2.7 sqlalchemy-bigquery-1.13.0 sqlalchemy-spanner-1.10.0 sqlparse-0.5.3 sshtunnel-0.4.0 starkbank-ecdsa-2.2.0 starlette-0.46.2 statsd-4.0.1 std-uritemplate-2.0.3 structlog-25.3.0 svcs-25.1.0 tabulate-0.9.0 tenacity-9.1.2 termcolor-3.0.1 text-unidecode-1.3 threadpoolctl-3.6.0 tomlkit-0.13.2 tornado-6.4.2 tqdm-4.67.1 typer-0.15.2 types-protobuf-5.29.1.20250403 types-requests-2.32.0.20250328 typing-inspection-0.4.0 typing_extensions-4.13.2 tzdata-2025.2 uc-micro-py-1.0.3 universal_pathlib-0.2.6 uritemplate-4.1.1 urllib3-2.4.0 uuid6-2024.7.10 uv-0.6.17 uvicorn-0.34.2 uvloop-0.21.0 vine-5.1.0 watchfiles-1.0.5 watchtower-3.4.0 wcwidth-0.2.13 websocket-client-1.8.0 websockets-15.0.1 wirerope-1.0.0 wrapt-1.17.2 xmlsec-1.3.14 yarl-1.20.0 zipp-3.21.0 zope.event-5.0 zope.interface-7.2

@potiuk
Copy link
Contributor

potiuk commented Apr 28, 2025

We actually have another iteration on that. Yesterday we started to hit another one (also only with Python 3.12):

https://github.com/apache/airflow/actions/runs/14698736309/job/41248421057

#57 174.8 Collecting mysql-connector-python>=8.2.0 (from apache-airflow-providers-mysql@ file:///docker-context-files/apache_airflow_providers_mysql-6.2.2-py3-none-any.whl)#57 174.8 Collecting mysql-connector-python>=8.2.0 (from apache-airflow-providers-mysql@ file:///docker-context-files/apache_airflow_providers_mysql-6.2.2-py3-none-any.whl)
  #57 174.8   Downloading mysql_connector_python-9.2.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #57 182.9   Downloading mysql_connector_python-9.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #57 191.1   Downloading mysql_connector_python-9.0.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.0 kB)
  #57 199.1   Downloading mysql_connector_python-8.4.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #57 207.1   Downloading mysql_connector_python-8.3.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #57 215.1   Downloading mysql_connector_python-8.2.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.1 kB)
  #57 215.2 INFO: pip is looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #57 888.5 INFO: pip is still looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #57 1305.2 INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  #57 1305.3 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 1305.4   Downloading opentelemetry_api-1.31.1-py3-none-any.whl.metadata (1.6 kB)
  #57 1305.4 Collecting opentelemetry-semantic-conventions==0.52b1 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 1305.4   Downloading opentelemetry_semantic_conventions-0.52b1-py3-none-any.whl.metadata (2.5 kB)
  #57 1742.5 Collecting opentelemetry-sdk>=1.27.0 (from microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 1742.6   Downloading opentelemetry_sdk-1.31.0-py3-none-any.whl.metadata (1.6 kB)
  #57 1742.7 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 1742.7   Downloading opentelemetry_api-1.31.0-py3-none-any.whl.metadata (1.6 kB)
  #57 1742.7 Collecting opentelemetry-semantic-conventions==0.52b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 1742.7   Downloading opentelemetry_semantic_conventions-0.52b0-py3-none-any.whl.metadata (2.5 kB)
  #57 2059.3 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 2059.4   Downloading opentelemetry_api-1.30.0-py3-none-any.whl.metadata (1.6 kB)
  #57 2059.4 Collecting opentelemetry-semantic-conventions==0.51b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 2059.4   Downloading opentelemetry_semantic_conventions-0.51b0-py3-none-any.whl.metadata (2.5 kB)
  #57 2236.9 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 2236.9   Downloading opentelemetry_api-1.29.0-py3-none-any.whl.metadata (1.4 kB)
  #57 2236.9 Collecting opentelemetry-semantic-conventions==0.50b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 2237.0   Downloading opentelemetry_semantic_conventions-0.50b0-py3-none-any.whl.metadata (2.3 kB)
  #57 2326.3 Collecting microsoft-kiota-authentication-azure<2.0.0,>=1.8.0 (from msgraph-core>=1.3.3->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 2326.3   Downloading microsoft_kiota_authentication_azure-1.9.2-py3-none-any.whl.metadata (3.5 kB)
  #57 2444.4   Downloading microsoft_kiota_authentication_azure-1.9.1-py3-none-any.whl.metadata (3.5 kB)
  #57 2556.3   Downloading microsoft_kiota_authentication_azure-1.9.0-py3-none-any.whl.metadata (3.5 kB)
  #57 2668.9   Downloading microsoft_kiota_authentication_azure-1.8.0-py3-none-any.whl.metadata (3.5 kB)
  #57 2668.9 INFO: pip is looking at multiple versions of microsoft-kiota-authentication-azure to determine which version is compatible with other requirements. This could take a while.
  #57 2771.5 error: resolution-too-deep
  #57 2771.5 
  #57 2771.5 × Dependency resolution exceeded maximum depth
  #57 2771.5 ╰─> Pip cannot resolve the current dependencies as the dependency graph is too complex for pip to solve efficiently.
  #57 2771.5 
  #57 2771.5 hint: Try adding lower bounds to constrain your dependencies, for example: 'package>=2.0.0' instead of just 'package'.
  #57 2771.5 
  #57 174.8   Downloading mysql_connector_python-9.2.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #57 182.9   Downloading mysql_connector_python-9.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #57 191.1   Downloading mysql_connector_python-9.0.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.0 kB)
  #57 199.1   Downloading mysql_connector_python-8.4.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #57 207.1   Downloading mysql_connector_python-8.3.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #57 215.1   Downloading mysql_connector_python-8.2.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.1 kB)
  #57 215.2 INFO: pip is looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #57 888.5 INFO: pip is still looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #57 1305.2 INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  #57 1305.3 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 1305.4   Downloading opentelemetry_api-1.31.1-py3-none-any.whl.metadata (1.6 kB)
  #57 1305.4 Collecting opentelemetry-semantic-conventions==0.52b1 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 1305.4   Downloading opentelemetry_semantic_conventions-0.52b1-py3-none-any.whl.metadata (2.5 kB)
  #57 1742.5 Collecting opentelemetry-sdk>=1.27.0 (from microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 1742.6   Downloading opentelemetry_sdk-1.31.0-py3-none-any.whl.metadata (1.6 kB)
  #57 1742.7 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 1742.7   Downloading opentelemetry_api-1.31.0-py3-none-any.whl.metadata (1.6 kB)
  #57 1742.7 Collecting opentelemetry-semantic-conventions==0.52b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 1742.7   Downloading opentelemetry_semantic_conventions-0.52b0-py3-none-any.whl.metadata (2.5 kB)
  #57 2059.3 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 2059.4   Downloading opentelemetry_api-1.30.0-py3-none-any.whl.metadata (1.6 kB)
  #57 2059.4 Collecting opentelemetry-semantic-conventions==0.51b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 2059.4   Downloading opentelemetry_semantic_conventions-0.51b0-py3-none-any.whl.metadata (2.5 kB)
  #57 2236.9 Collecting opentelemetry-api>=1.24.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #57 2236.9   Downloading opentelemetry_api-1.29.0-py3-none-any.whl.metadata (1.4 kB)
  #57 2236.9 Collecting opentelemetry-semantic-conventions==0.50b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.8.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 2237.0   Downloading opentelemetry_semantic_conventions-0.50b0-py3-none-any.whl.metadata (2.3 kB)
  #57 2326.3 Collecting microsoft-kiota-authentication-azure<2.0.0,>=1.8.0 (from msgraph-core>=1.3.3->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #57 2326.3   Downloading microsoft_kiota_authentication_azure-1.9.2-py3-none-any.whl.metadata (3.5 kB)
  #57 2444.4   Downloading microsoft_kiota_authentication_azure-1.9.1-py3-none-any.whl.metadata (3.5 kB)
  #57 2556.3   Downloading microsoft_kiota_authentication_azure-1.9.0-py3-none-any.whl.metadata (3.5 kB)
  #57 2668.9   Downloading microsoft_kiota_authentication_azure-1.8.0-py3-none-any.whl.metadata (3.5 kB)
  #57 2668.9 INFO: pip is looking at multiple versions of microsoft-kiota-authentication-azure to determine which version is compatible with other requirements. This could take a while.
  #57 2771.5 error: resolution-too-deep
  #57 2771.5 
  #57 2771.5 × Dependency resolution exceeded maximum depth
  #57 2771.5 ╰─> Pip cannot resolve the current dependencies as the dependency graph is too complex for pip to solve efficiently.
  #57 2771.5 
  #57 2771.5 hint: Try adding lower bounds to constrain your dependencies, for example: 'package>=2.0.0' instead of just 'package'.
  #57 2771.5 

I attempt (wild guessing) to limit it with:

apache/airflow#49860

BTW. The way to reproduce it is fairly easy when you know how. Here is a detailed set of instructions:

  1. Check out airlfow repo
  2. Install breeze:
uv tool install -e ./dev/breeze # pipx should also work
  1. Build all packages to install in the image:
breeze release-management prepare-provider-distributions --distributions-list-file ./prod_image_installed_providers.txt --distribution-format wheel --include-not-ready-providers --skip-tag-check 

breeze release-management prepare-airflow-distributions --distribution-format wheel

breeze release-management prepare-task-sdk-distributions --distribution-format wheel

breeze release-management prepare-airflow-ctl-distributions --distribution-format wheel

That will prepare all packages in dist folder.

  1. Move the packages to docker-context-files
mv dist/*.whl docker-context-files/
  1. Run docker build and use those packages:
breeze prod-image build --install-distributions-from-context --airflow-constraints-mode constraints-source-providers --verbose

With --verbose it will show you the exact docker build command that it will use to install things. Eventually what it does is this long command to install packages that are present in docker-context-files - you can probably get very similar effect if you just run the same command outside of the docker build - in a clear venv - the key is to prepare those packages with the above steps:

Image

The interesting thing is that we know there is a possible resolution for those packages. They are all part of the same workspace in airflow repo:

uv sync --all-packages --python 3.12

Will sync even more than that - it will resolve ALL the provider packages + ALL even their development dependencies - and what we try to install in the PROD image is merely a subset of all the providers.

I hope it helps :)

@potiuk
Copy link
Contributor

potiuk commented Apr 28, 2025

BTW. I think it might be involved with some protobuf incompatibilities. The apache/airflow#49860 is not going to work - because of protobuf conflicts - I am looking at it with uv sync - which is quite a bit easier and faster to iterate on problems like that.

@cburroughs
Copy link

  • Pip version: 25.1
  • Python version: 3.11.11
  • Operating System: Gentoo (x86_64)
  • Output of pip freeze:
$ pip freeze
$ echo $?
0

error: resolution-too-deep after approximately 80 minutes on a recent AMD Ryzen 7 7840HS.

The same requirements resolve with pip 25.0 (in around 13 minutes on the same hardware). I've cut out a bunch of internal specifics and constraints, but this is still a pretty "organic" case and not a minimum reproduction. Please let me know if other information would be helpful.

@notatallshaw
Copy link
Member Author

Thanks @cburroughs, that's plenty of info, I'll start investigating, but I'm not likely to give you an exact workaround for a few days, and any pip optimization could take some time.

For the moment I can only recommend you either use uv pip, or use uv pip compile to generate better constraints or requirements.

@cburroughs
Copy link

I'll start investigating, but I'm not likely to give you an exact workaround for a few days, and any pip optimization could take some time.

Thanks for investigating! Per the 'not for help' disclaimer at the top, my hope is that a real world example helps improve pip and I'm not expecting one uncanny trick that unblocks just me. I'm sure there are promising permutations of constraints around boto and other 'usual suspects' I can try before upgrading to a brand new pip becomes pressing.

@potiuk
Copy link
Contributor

potiuk commented Apr 29, 2025

BTW. I think it might be involved with some protobuf incompatibilities. The apache/airflow#49860 is not going to work - because of protobuf conflicts - I am looking at it with uv sync - which is quite a bit easier and faster to iterate on problems like that.

After more fixes - still "resolution too deep" - but with slightly different trace - willl continue limiting stuff

Image

https://github.com/apache/airflow/actions/runs/14721786685/job/41318681642

Update: attempted to limit portalocker here: apache/airflow#49936

@potiuk
Copy link
Contributor

potiuk commented Apr 29, 2025

And yeah @notatallshaw -> we do understand it's not an easy issue to solve, and airflow and the way we have 700+ deps is a bit of an outlier, but we'll keep trying to make our deps a bit more pip friendly and maybe it will also help to find some future optimisations. Thanks for doing it !

Hopefully together we can improve resolver :)

@notatallshaw
Copy link
Member Author

Yeah, sorry for this hit you multiple times, I assume all of these are caused by me limiting how much resolvelib will backjump. Unfortunately it's approach was unsound.

Once I've collected all of these in to my test scenario I'll play around with various changes to heuristics to see if they make an improvements.

A true fix might not come until pip adopts a CDCL or CDNL algorithm like pubgrub, like uv and poetry use. Which is my long term goal, but requires some information that pip and packaging aren't providing yet, I don't have any sort of timeline.

@potiuk
Copy link
Contributor

potiuk commented Apr 29, 2025

Yeah, sorry for this hit you multiple times, I assume all of these are caused by me limiting how much resolvelib will backjump. Unfortunately it's approach was unsound.

Happy to help with more "playing" with it - it's not a huge problem for us - though we would love to get it sorted out soon-ish

@potiuk
Copy link
Contributor

potiuk commented Apr 29, 2025

Hmm - even with latest attemp we still have "too deep".

https://github.com/apache/airflow/actions/runs/14732688845/job/41355638430

This time without a clear "contender:

  #61 160.1 Collecting mysql-connector-python>=8.2.0 (from apache-airflow-providers-mysql@ file:///docker-context-files/apache_airflow_providers_mysql-6.2.2-py3-none-any.whl)
  #61 160.1   Downloading mysql_connector_python-9.2.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #61 167.4   Downloading mysql_connector_python-9.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.0 kB)
  #61 174.9   Downloading mysql_connector_python-9.0.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.0 kB)
  #61 182.2   Downloading mysql_connector_python-8.4.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #61 189.6   Downloading mysql_connector_python-8.3.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (1.9 kB)
  #61 196.9   Downloading mysql_connector_python-8.2.0-cp312-cp312-manylinux_2_17_x86_64.whl.metadata (2.1 kB)
  #61 196.9 INFO: pip is looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #61 828.6 INFO: pip is still looking at multiple versions of mysql-connector-python to determine which version is compatible with other requirements. This could take a while.
  #61 1213.3 INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  #61 1213.4 Collecting opentelemetry-api>=1.26.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #61 1213.5   Downloading opentelemetry_api-1.31.1-py3-none-any.whl.metadata (1.6 kB)
  #61 1213.5 Collecting opentelemetry-semantic-conventions==0.52b1 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.9.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #61 1213.5   Downloading opentelemetry_semantic_conventions-0.52b1-py3-none-any.whl.metadata (2.5 kB)
  #61 1614.9 Collecting opentelemetry-sdk>=1.27.0 (from microsoft-kiota-abstractions<2.0.0,>=1.9.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #61 1615.0   Downloading opentelemetry_sdk-1.31.0-py3-none-any.whl.metadata (1.6 kB)
  #61 1615.1 Collecting opentelemetry-api>=1.26.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #61 1615.1   Downloading opentelemetry_api-1.31.0-py3-none-any.whl.metadata (1.6 kB)
  #61 1615.1 Collecting opentelemetry-semantic-conventions==0.52b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.9.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #61 1615.1   Downloading opentelemetry_semantic_conventions-0.52b0-py3-none-any.whl.metadata (2.5 kB)
  #61 1904.7 Collecting opentelemetry-api>=1.26.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #61 1904.7   Downloading opentelemetry_api-1.30.0-py3-none-any.whl.metadata (1.6 kB)
  #61 1904.8 Collecting opentelemetry-semantic-conventions==0.51b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.9.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #61 1904.8   Downloading opentelemetry_semantic_conventions-0.51b0-py3-none-any.whl.metadata (2.5 kB)
  #61 2065.9 Collecting opentelemetry-api>=1.26.0 (from apache-airflow-core@ file:///docker-context-files/apache_airflow_core-3.1.0-py3-none-any.whl)
  #61 2065.9   Downloading opentelemetry_api-1.29.0-py3-none-any.whl.metadata (1.4 kB)
  #61 2065.9 Collecting opentelemetry-semantic-conventions==0.50b0 (from opentelemetry-sdk>=1.27.0->microsoft-kiota-abstractions<2.0.0,>=1.9.0->apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #61 2065.9   Downloading opentelemetry_semantic_conventions-0.50b0-py3-none-any.whl.metadata (2.3 kB)
  #61 2146.4 Collecting msal-extensions>=1.1.0 (from apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #61 2146.4   Downloading msal_extensions-1.3.0-py3-none-any.whl.metadata (7.8 kB)
  #61 2256.1   Downloading msal_extensions-1.2.0-py3-none-any.whl.metadata (7.6 kB)
  #61 2256.2 Collecting portalocker>=2.8.1 (from apache-airflow-providers-microsoft-azure@ file:///docker-context-files/apache_airflow_providers_microsoft_azure-12.3.1-py3-none-any.whl)
  #61 2256.2   Downloading portalocker-2.10.1-py3-none-any.whl.metadata (8.5 kB)
  #61 2263.4   Downloading portalocker-2.10.0-py3-none-any.whl.metadata (8.5 kB)
  #61 2270.7   Downloading portalocker-2.8.2-py3-none-any.whl.metadata (8.5 kB)
  #61 2278.0   Downloading portalocker-2.8.1-py3-none-any.whl.metadata (8.5 kB)
  #61 2841.3 error: resolution-too-deep
  #61 2841.3 
  #61 2841.3 × Dependency resolution exceeded maximum depth
  #61 2841.3 ╰─> Pip cannot resolve the current dependencies as the dependency graph is too complex for pip to solve efficiently.
  #61 2841.3 
  #61 2841.3 hint: Try adding lower bounds to constrain your dependencies, for example: 'package>=2.0.0' instead of just 'package'.
  #61 2841.3 
  #61 2841.3 Link: https://pip.pypa.io/en/stable/topics/dependency-resolution/#handling-resolution-too-deep-errors

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: dependency resolution About choosing which dependencies to install C: error messages Improving error messages
Projects
None yet
Development

No branches or pull requests

3 participants