You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Attempt at #15199 by adding an incompatibility that lets pubgrub skip of marker packages when the base package already has an incompatible version.
There are some false positives we still need to figure out, specifically around conflicts.
The change looks perf neutral for the one case I tried:
```
$ hyperfine --warmup 2 "target/release/uv pip compile --universal scripts/requirements/airflow.in" "target/release/uv pip compile --universal scripts/requirements/airflow.in"
Benchmark 1: target/release/uv pip compile --universal scripts/requirements/airflow.in
Time (mean ± σ): 482.5 ms ± 12.8 ms [User: 602.7 ms, System: 205.2 ms]
Range (min … max): 468.7 ms … 503.2 ms 10 runs
Benchmark 2: target/release/uv pip compile --universal scripts/requirements/airflow.in
Time (mean ± σ): 479.3 ms ± 21.0 ms [User: 604.0 ms, System: 200.5 ms]
Range (min … max): 464.1 ms … 537.5 ms 10 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.
Summary
target/release/uv pip compile --universal scripts/requirements/airflow.in ran
1.01 ± 0.05 times faster than target/release/uv pip compile --universal scripts/requirements/airflow.in
```
which = { version = "8.0.0", features = ["regex"] }
193
193
windows = { version = "0.59.0", features = ["Win32_Globalization", "Win32_System_Console", "Win32_System_Kernel", "Win32_System_Diagnostics_Debug", "Win32_Storage_FileSystem"] }
╰─▶ Because only datasets<=2.18.0 is available and your project depends on datasets>=2.19, we can conclude that your project's requirements are unsatisfiable.
13093
+
╰─▶ Because your project depends on datasets<2.19 and datasets>=2.19, we can conclude that your project's requirements are unsatisfiable.
╰─▶ Because only project{sys_platform == 'win32'}<=0.1 is available and your project depends on itself at an incompatible version (project{sys_platform == 'win32'}>0.1), we can conclude that your project's requirements are unsatisfiable.
26761
+
╰─▶ Because your project depends on itself at an incompatible version (project{sys_platform == 'win32'}>0.1), we can conclude that your project's requirements are unsatisfiable.
26762
26762
26763
26763
hint: The project `project` depends on itself at an incompatible version. This is likely a mistake. If you intended to depend on a third-party package named `project`, consider renaming the project `project` to avoid creating a conflict.
× No solution found when resolving dependencies for split (markers: python_full_version >= '3.11'):
29860
-
╰─▶ Because only the following versions of numpy{python_full_version >= '3.10'} are available:
29861
-
numpy{python_full_version >= '3.10'}<=1.21.0
29862
-
numpy{python_full_version >= '3.10'}==1.21.1
29863
-
numpy{python_full_version >= '3.10'}==1.21.2
29864
-
numpy{python_full_version >= '3.10'}==1.21.3
29865
-
numpy{python_full_version >= '3.10'}==1.21.4
29866
-
numpy{python_full_version >= '3.10'}==1.21.5
29867
-
numpy{python_full_version >= '3.10'}==1.21.6
29868
-
numpy{python_full_version >= '3.10'}==1.22.0
29869
-
numpy{python_full_version >= '3.10'}==1.22.1
29870
-
numpy{python_full_version >= '3.10'}==1.22.2
29871
-
numpy{python_full_version >= '3.10'}==1.22.3
29872
-
numpy{python_full_version >= '3.10'}==1.22.4
29873
-
numpy{python_full_version >= '3.10'}==1.23.0
29874
-
numpy{python_full_version >= '3.10'}==1.23.1
29875
-
numpy{python_full_version >= '3.10'}==1.23.2
29876
-
numpy{python_full_version >= '3.10'}==1.23.3
29877
-
numpy{python_full_version >= '3.10'}==1.23.4
29878
-
numpy{python_full_version >= '3.10'}==1.23.5
29879
-
numpy{python_full_version >= '3.10'}==1.24.0
29880
-
numpy{python_full_version >= '3.10'}==1.24.1
29881
-
numpy{python_full_version >= '3.10'}==1.24.2
29882
-
numpy{python_full_version >= '3.10'}==1.24.3
29883
-
numpy{python_full_version >= '3.10'}==1.24.4
29884
-
numpy{python_full_version >= '3.10'}==1.25.0
29885
-
numpy{python_full_version >= '3.10'}==1.25.1
29886
-
numpy{python_full_version >= '3.10'}==1.25.2
29887
-
numpy{python_full_version >= '3.10'}==1.26.0
29888
-
numpy{python_full_version >= '3.10'}==1.26.1
29889
-
numpy{python_full_version >= '3.10'}==1.26.2
29890
-
numpy{python_full_version >= '3.10'}==1.26.3
29891
-
numpy{python_full_version >= '3.10'}==1.26.4
29892
-
and pandas==1.5.3 depends on numpy{python_full_version >= '3.10'}>=1.21.0, we can conclude that pandas==1.5.3 depends on numpy>=1.21.0.
29893
-
And because your project depends on numpy==1.20.3 and pandas==1.5.3, we can conclude that your project's requirements are unsatisfiable.
29860
+
╰─▶ Because pandas==1.5.3 depends on numpy{python_full_version >= '3.10'}>=1.21.0 and your project depends on numpy==1.20.3, we can conclude that your project and pandas==1.5.3 are incompatible.
29861
+
And because your project depends on pandas==1.5.3, we can conclude that your project's requirements are unsatisfiable.
29894
29862
29895
29863
hint: While the active Python version is 3.9, the resolution failed for other Python versions supported by your project. Consider limiting your project's supported Python versions using `requires-python`.
× No solution found when resolving dependencies for split (markers: sys_platform == 'exotic'):
30114
-
╰─▶ Because only the following versions of numpy{sys_platform == 'exotic'} are available:
30115
-
numpy{sys_platform == 'exotic'}<=1.24.0
30116
-
numpy{sys_platform == 'exotic'}==1.24.1
30117
-
numpy{sys_platform == 'exotic'}==1.24.2
30118
-
numpy{sys_platform == 'exotic'}==1.24.3
30119
-
numpy{sys_platform == 'exotic'}==1.24.4
30120
-
numpy{sys_platform == 'exotic'}==1.25.0
30121
-
numpy{sys_platform == 'exotic'}==1.25.1
30122
-
numpy{sys_platform == 'exotic'}==1.25.2
30123
-
numpy{sys_platform == 'exotic'}>1.26
30124
-
and your project depends on numpy{sys_platform == 'exotic'}>=1.24,<1.26, we can conclude that your project depends on numpy>=1.24.0,<=1.25.2.
30125
-
And because your project depends on numpy>=1.26, we can conclude that your project's requirements are unsatisfiable.
30082
+
╰─▶ Because your project depends on numpy{sys_platform == 'exotic'}>=1.24,<1.26 and numpy>=1.26, we can conclude that your project's requirements are unsatisfiable.
30126
30083
30127
30084
hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
× No solution found when resolving dependencies for split (markers: python_full_version < '3.14' and sys_platform == 'other'):
31580
+
╰─▶ Because your project depends on anyio{sys_platform == 'other'} and anyio{python_full_version < '3.14'}>=4.4.0, we can conclude that your project's requirements are unsatisfiable.
31581
+
31582
+
hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
╰─▶ Because package-a==1.0.0 depends on package-c<2.0.0 and package-b==1.0.0 depends on package-c>=2.0.0, we can conclude that package-a{sys_platform == 'linux'}==1.0.0 and package-b{sys_platform == 'darwin'}==1.0.0 are incompatible.
3263
+
╰─▶ Because package-a==1.0.0 depends on package-c<2.0.0 and package-b==1.0.0 depends on package-c>=2.0.0, we can conclude that package-b==1.0.0 and package-a{sys_platform == 'linux'}==1.0.0 are incompatible.
3264
3264
And because your project depends on package-a{sys_platform == 'linux'}==1.0.0 and package-b{sys_platform == 'darwin'}==1.0.0, we can conclude that your project's requirements are unsatisfiable.
╰─▶ Because package-a==1.0.0 depends on package-c{sys_platform == 'linux'}<2.0.0 and only the following versions of package-c{sys_platform == 'linux'} are available:
3340
-
package-c{sys_platform == 'linux'}==1.0.0
3341
-
package-c{sys_platform == 'linux'}>2.0.0
3342
-
we can conclude that package-a==1.0.0 depends on package-c{sys_platform == 'linux'}==1.0.0.
3343
-
And because only package-c{sys_platform == 'darwin'}<=2.0.0 is available and package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}>=2.0.0, we can conclude that package-a==1.0.0 and package-b==1.0.0 are incompatible.
3339
+
╰─▶ Because package-a==1.0.0 depends on package-c{sys_platform == 'linux'}<2.0.0 and package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}>=2.0.0, we can conclude that package-a==1.0.0 and package-b==1.0.0 are incompatible.
3344
3340
And because your project depends on package-a==1.0.0 and package-b==1.0.0, we can conclude that your project's requirements are unsatisfiable.
0 commit comments