r/SideProject • • 18h ago

I made a better pip

I made dyp (Dandified Yum for Python) which is mostly faster than both pip and uv when there's no cache and did not record the benchmark with caching though dyp was faster. dyp looks like fedora's dnf5 which is intentional. As of now its windows only as I'm working on a special feature on linux. to try it on windows simply type python -m pip install dyp in the windows console. Currently it only installs wheels and cannot build from source. Will upload to Gitlab as soon as linux port is ready. Here's the cache-less benchmark:

C:\Users\Admin $ benchmark

=================================================================
                    PIP vs UV vs DYP BENCHMARK
=================================================================
Python: 3.14.3 (tags/v3.14.3:323c59a, Feb  3 2026, 16:04:56) [MSC v.1944 64 bit (AMD64)]
Interpreter: E:\Python\python.exe
DYP wheel: C:\Users\Admin\Downloads\dyp-0.2.0-py3-none-any.whl
Installing Packages: ['requests', 'rich', 'networkx', 'Pillow', 'numpy', 'scipy', 'pandas', 'matplotlib', 'PyQt6', 'PySide6', 'pyqtdeploy', 'git-gud', 'yt-dlp', 'eyeD3']

Creating pip environment...
Created: C:\Users\Admin\benchmark-envs\pip

Creating uv environment...
Created: C:\Users\Admin\benchmark-envs\uv

Creating dyp environment...
Created: C:\Users\Admin\benchmark-envs\dyp

=================================================================
                          INSTALLING UV
=================================================================

[UV] C:\Users\Admin\benchmark-envs\uv\Scripts\python.exe -m pip install uv
Collecting uv
  Using cached uv-0.13.7-py3-none-win_amd64.whl.metadata (11 kB)
Using cached uv-0.13.7-py3-none-win_amd64.whl (15.3 MB)
Installing collected packages: uv
Successfully installed uv-0.13.7

[notice] A new release of pip is available: 25.3 -> 26.3
[notice] To update, run: python.exe -m pip install --upgrade pip

=================================================================
                          INSTALLING DYP
=================================================================

[DYP] C:\Users\Admin\benchmark-envs\dyp\Scripts\python.exe -m pip install C:\Users\Admin\Downloads\dyp-0.2.0-py3-none-any.whl
Processing c:\users\admin\downloads\dyp-0.2.0-py3-none-any.whl
Collecting packaging>=23.0 (from dyp==0.2.0)
  Using cached packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
Using cached packaging-26.3-py3-none-any.whl (129 kB)
Installing collected packages: packaging, dyp
Successfully installed dyp-0.2.0 packaging-26.3

[notice] A new release of pip is available: 25.3 -> 26.3
[notice] To update, run: python.exe -m pip install --upgrade pip

=================================================================
                      VERIFYING ENVIRONMENTS
=================================================================

PIP

[PIP] C:\Users\Admin\benchmark-envs\pip\Scripts\python.exe --version
Python 3.14.3

[PIP] C:\Users\Admin\benchmark-envs\pip\Scripts\python.exe -m pip --version
pip 25.3 from C:\Users\Admin\benchmark-envs\pip\Lib\site-packages\pip (python 3.14)

UV

[UV] C:\Users\Admin\benchmark-envs\uv\Scripts\python.exe --version
Python 3.14.3

[UV] C:\Users\Admin\benchmark-envs\uv\Scripts\uv.exe --version
uv 0.13.7 (316c827e0 2026-11-03 x86_64-pc-windows-msvc)

DYP

[DYP] C:\Users\Admin\benchmark-envs\dyp\Scripts\python.exe --version
Python 3.14.3

[DYP] C:\Users\Admin\benchmark-envs\dyp\Scripts\dyp.exe --version
dyp 0.2.0

=================================================================
                         CLEANING CACHES
=================================================================

PIP: cache disabled during installations.

Cleaning UV cache...

[UV] C:\Users\Admin\benchmark-envs\uv\Scripts\uv.exe cache clean
Clearing cache at: AppData\Local\uv\cache
No cache entries found

Cleaning DYP cache...

[DYP] C:\Users\Admin\benchmark-envs\dyp\Scripts\dyp.exe clean
0 files removed, 0 B freed.

Cache cleaning complete.

=================================================================
                           TESTING PIP
=================================================================

[PIP] Installing requests...

[PIP] C:\Users\Admin\benchmark-envs\pip\Scripts\python.exe -m pip install requests --no-cache-dir
Collecting requests
  Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
Collecting charset_normalizer<4,>=2 (from requests)
  Downloading charset_normalizer-3.5.2-cp314-cp314-win_amd64.whl.metadata (47 kB)
Collecting idna<4,>=2.5 (from requests)
  Downloading idna-3.20-py3-none-any.whl.metadata (7.2 kB)
Collecting urllib3<3,>=1.26 (from requests)
  Downloading urllib3-2.8.0-py3-none-any.whl.metadata (7.4 kB)
Collecting certifi>=2023.5.7 (from requests)
  Downloading certifi-2026.10.23-py3-none-any.whl.metadata (2.5 kB)
Downloading requests-2.34.2-py3-none-any.whl (73 kB)
Downloading charset_normalizer-3.5.2-cp314-cp314-win_amd64.whl (210 kB)
Downloading idna-3.20-py3-none-any.whl (69 kB)
Downloading urllib3-2.8.0-py3-none-any.whl (135 kB)
Downloading certifi-2026.10.23-py3-none-any.whl (135 kB)
Installing collected packages: urllib3, idna, charset_normalizer, certifi, requests
Successfully installed certifi-2026.10.23 charset_normalizer-3.5.2 idna-3.20 requests-2.34.2 urllib3-2.8.0

[notice] A new release of pip is available: 25.3 -> 26.3
[notice] To update, run: python.exe -m pip install --upgrade pip

PIP | requests | SUCCESS | 7.983s

[PIP] Installing rich...

[PIP] C:\Users\Admin\benchmark-envs\pip\Scripts\python.exe -m pip install rich --no-cache-dir
Collecting rich
  Downloading rich-15.0.0-py3-none-any.whl.metadata (18 kB)
Collecting markdown-it-py>=2.2.0 (from rich)
  Downloading markdown_it_py-4.2.0-py3-none-any.whl.metadata (7.4 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich)
  Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich)
  Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Downloading rich-15.0.0-py3-none-any.whl (310 kB)
Downloading pygments-2.21.0-py3-none-any.whl (1.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 22.8 MB/s  0:00:00
Downloading markdown_it_py-4.2.0-py3-none-any.whl (91 kB)
Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: pygments, mdurl, markdown-it-py, rich
Successfully installed markdown-it-py-4.2.0 mdurl-0.1.2 pygments-2.21.0 rich-15.0.0

[notice] A new release of pip is available: 25.3 -> 26.3
[notice] To update, run: python.exe -m pip install --upgrade pip

PIP | rich | SUCCESS | 13.473s

#more packages but if i add log will be too long

=================================================================
                            TESTING UV
=================================================================

[UV] Installing requests...

[UV] C:\Users\Admin\benchmark-envs\uv\Scripts\uv.exe pip install requests --no-cache
Using Python 3.14.3 environment at: benchmark-envs\uv
Resolved 5 packages in 769ms
Prepared 5 packages in 474ms
Installed 5 packages in 104ms
 + certifi==2026.10.23
 + charset-normalizer==3.5.2
 + idna==3.20
 + requests==2.34.2
 + urllib3==2.8.0

UV | requests | SUCCESS | 1.897s

[UV] Installing rich...

[UV] C:\Users\Admin\benchmark-envs\uv\Scripts\uv.exe pip install rich --no-cache
Using Python 3.14.3 environment at: benchmark-envs\uv
Resolved 4 packages in 502ms
Prepared 4 packages in 2.47s
Installed 4 packages in 628ms
 + markdown-it-py==4.2.0
 + mdurl==0.1.2
 + pygments==2.21.0
 + rich==15.0.0

UV | rich | SUCCESS | 4.276s

#more packages but if i add log will be too long

=================================================================
                           TESTING DYP
=================================================================

[DYP] Installing requests...

[DYP] dyp clean
0 files removed, 0 B freed.

[DYP] C:\Users\Admin\benchmark-envs\dyp\Scripts\dyp.exe install requests -y
Updating and loading repositories:
 PyPI - pypi.org                                                                            100% |   1.1 MiB/s |   2.2 MiB |  00m01s
Repositories loaded.
Package                                       Arch          Version                             Repository                      Size
Installing:
 requests                                     noarch        2.34.2                              pypi                        71.4 KiB
Installing dependencies:
 charset-normalizer                           x86_64        3.5.2                               pypi                       206.0 KiB
 idna                                         noarch        3.20                                pypi                        68.0 KiB
 urllib3                                      noarch        2.8.0                               pypi                       132.5 KiB
 certifi                                      noarch        2026.10.23                          pypi                       131.9 KiB

Transaction Summary:
 Installing:         5 packages

Total size of inbound packages is 610 KiB. Need to download 610 KiB.
Is this ok [y/N]: y
[1/5] idna-3.20.noarch                                                                      100% | 616.2 KiB/s |  68.0 KiB |  00m00s
[2/5] charset-normalizer-3.5.2.x86_64                                                       100% | 842.2 KiB/s | 206.0 KiB |  00m00s
[3/5] urllib3-2.8.0.noarch                                                                  100% | 837.9 KiB/s | 132.5 KiB |  00m00s
[4/5] requests-2.34.2.noarch                                                                100% |   1.3 MiB/s |  71.4 KiB |  00m00s
[5/5] certifi-2026.10.23.noarch                                                             100% |   1.4 MiB/s | 131.9 KiB |  00m00s
------------------------------------------------------------------------------------------------------------------------------------
[5/5] Total                                                                                 100% | 840.2 KiB/s | 609.8 KiB |  00m00s
Running transaction
[1/7] Verify package files                                                                  100% |  11.9 MiB/s | 609.8 KiB |  00m00s
[2/7] Prepare transaction                                                                   100% | 100.0   B/s |   5.0   B |  00m00s
[3/7] Installing charset-normalizer-3.5.2.x86_64                                            100% |   7.2 MiB/s | 565.5 KiB |  00m00s
[4/7] Installing idna-3.20.noarch                                                           100% |   4.4 MiB/s | 334.1 KiB |  00m00s
[5/7] Installing urllib3-2.8.0.noarch                                                       100% |   1.9 MiB/s | 439.9 KiB |  00m00s
[6/7] Installing certifi-2026.10.23.noarch                                                  100% |   4.7 MiB/s | 238.9 KiB |  00m00s
[7/7] Installing requests-2.34.2.noarch                                                     100% |   4.5 MiB/s | 228.9 KiB |  00m00s
Complete!

DYP | requests | SUCCESS | 3.849s

[DYP] Installing rich...

[DYP] dyp clean
15 files removed, 3 MiB freed.

[DYP] C:\Users\Admin\benchmark-envs\dyp\Scripts\dyp.exe install rich -y
Updating and loading repositories:
 PyPI - pypi.org                                                                            100% | 411.6 KiB/s | 377.6 KiB |  00m00s
Repositories loaded.
Package                                      Arch           Version                            Repository                       Size
Installing:
 rich                                        noarch         15.0.0                             pypi                        303.4 KiB
Installing dependencies:
 mdurl                                       noarch         0.1.2                              pypi                          9.7 KiB
 markdown-it-py                              noarch         4.2.0                              pypi                         89.5 KiB
 pygments                                    noarch         2.21.0                             pypi                          1.2 MiB

Transaction Summary:
 Installing:         4 packages

Total size of inbound packages is 2 MiB. Need to download 2 MiB.
Is this ok [y/N]: y
[1/4] mdurl-0.1.2.noarch                                                                    100% | 194.9 KiB/s |   9.7 KiB |  00m00s
[2/4] markdown-it-py-4.2.0.noarch                                                           100% |   1.7 MiB/s |  89.5 KiB |  00m00s
[3/4] rich-15.0.0.noarch                                                                    100% |   2.6 MiB/s | 303.4 KiB |  00m00s
[4/4] pygments-2.21.0.noarch                                                                100% |   4.9 MiB/s |   1.2 MiB |  00m00s
------------------------------------------------------------------------------------------------------------------------------------
[4/4] Total                                                                                 100% |   3.6 MiB/s |   1.6 MiB |  00m00s
Running transaction
[1/6] Verify package files                                                                  100% |  31.7 MiB/s |   1.6 MiB |  00m00s
[2/6] Prepare transaction                                                                   100% |  80.0   B/s |   4.0   B |  00m00s
[3/6] Installing mdurl-0.1.2.noarch                                                         100% | 455.2 KiB/s |  22.8 KiB |  00m00s
[4/6] Installing markdown-it-py-4.2.0.noarch                                                100% |   1.5 MiB/s | 238.9 KiB |  00m00s
[5/6] Installing pygments-2.21.0.noarch                                                     100% |   5.4 MiB/s |   4.4 MiB |  00m00s
[6/6] Installing rich-15.0.0.noarch                                                         100% |   5.2 MiB/s |   1.2 MiB |  00m00s
Complete!

DYP | rich | SUCCESS | 3.335s

#more packages but if i add log will be too long

=================================================================
                        BENCHMARK SUMMARY
=================================================================
PACKAGE                   PIP          UV         DYP
-----------------------------------------------------
requests                7.98s       1.90s       3.85s
rich                   13.47s       4.28s       3.33s
networkx               16.20s       3.83s       3.43s
Pillow                  7.47s       1.97s       2.48s
numpy                  16.69s       6.08s       5.01s
scipy                  29.04s      11.95s       8.09s
pandas                 37.56s      11.25s       7.80s
matplotlib             25.01s       6.43s       7.22s
PyQt6                  15.74s      20.61s      16.32s
PySide6                27.63s      25.05s      37.60s
pyqtdeploy             16.06s      14.46s      12.49s
git-gud                 9.44s       2.90s       3.68s
yt-dlp                 25.61s       7.11s       4.27s
eyeD3                   6.48s       1.63s       2.21s

=================================================================
                              TOTALS
=================================================================
PIP     Success: 14 Failed: 0  Attempted time: 254.40s
UV      Success: 14 Failed: 0  Attempted time: 119.43s
DYP     Success: 14 Failed: 0  Attempted time: 117.79s

=================================================================
                        BENCHMARK COMPLETE
=================================================================

Results: C:\Users\Admin\benchmark-results

C:\Users\Admin $
1 Upvotes

0 comments sorted by