diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 06cac42..4fe030e 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -316,7 +316,7 @@ jobs: wheelhouse/*.json retention-days: 1 - commit: + release: if: ${{ needs.meta.outputs.matrix != 'null' }} needs: [meta, build] @@ -327,7 +327,8 @@ jobs: contents: write steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - name: Checkout main branch + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: # Explicitly set ref to include commits from the meta job. # https://github.com/actions/checkout/issues/439#issuecomment-830862188 @@ -335,37 +336,49 @@ jobs: path: main persist-credentials: true # Need credentials to push. - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - name: Checkout deployment branch + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: - ref: wheelhouse - path: wheelhouse + ref: pypi + path: pypi persist-credentials: true # Need credentials to push. - - name: Create directory - run: | - mkdir -p wheelhouse/${{ inputs.name }} + - name: Install uv + uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1 + with: + version-file: "pyproject.toml" + enable-cache: true + cache-dependency-glob: | + **/pyproject.toml + **/uv.lock + + # - name: Create directory for wheels + # run: | + # mkdir wheelhouse - - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + - name: Fetch wheels + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 with: pattern: ${{ inputs.name }}-* - path: wheelhouse/${{ inputs.name }} + path: wheelhouse merge-multiple: true - - name: Update index + - name: Bump project version run: | - main/tools/make_index wheelhouse/${{ inputs.name}}/ --package ${{ inputs.name }} + uv version --bump patch + echo "VERSION=$(uv version --short)" >>$GITHUB_ENV - - name: Update build data + - name: Store build metadata run: | main/tools/store_info.py wheelhouse/${{ inputs.name }}/*.json --store main/build.json rm wheelhouse/${{ inputs.name }}/*.json - - name: Update version icons + - name: Update badges run: | main/tools/update_icons --store main/build.json --readme main/README.md - - name: Commit wheels - working-directory: wheelhouse + - name: Commit release data + working-directory: main run: | if [[ -z "$(git status --porcelain)" ]]; then echo "No changes to commit" @@ -374,11 +387,25 @@ jobs: git config user.name github-actions[bot] git config user.email 41898282+github-actions[bot]@users.noreply.github.com git add . - git commit -m "ci: Add wheels for ${{ inputs.name }}-${{ needs.meta.outputs.version }}" - git push origin HEAD:wheelhouse + git commit -m "ci: Prepare release for ${{ inputs.name }}-${{ needs.meta.outputs.version }}" + git push origin HEAD:main - - name: Commit build data - working-directory: main + - name: Release wheels + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + NOTES=$(uv run main/tools/release_notes --store main/build.json \ + --template main/templates/release.md) + gh release create "${VERSION}" --title "${VERSION}" --notes "${NOTES}" wheelhouse/* + + - name: Generate index + run: | + # Wait 10s for release to get finished. + sleep 10 + uv run main/tools/make_index2 pypi/${{ inputs.name}}/index.html + + - name: Deploy index + working-directory: pypi run: | if [[ -z "$(git status --porcelain)" ]]; then echo "No changes to commit" @@ -386,9 +413,9 @@ jobs: fi git config user.name github-actions[bot] git config user.email 41898282+github-actions[bot]@users.noreply.github.com - git add build.json README.md - git commit -m "ci: Store info for ${{ inputs.name }}-${{ needs.meta.outputs.version }}" - git push origin HEAD:main + git add . + git commit -m "ci: Add wheels for ${{ inputs.name }}-${{ needs.meta.outputs.version }}" + git push origin HEAD:pypi ... # vim: set tw=98: diff --git a/pypi/simple/.nojekyll b/pypi/simple/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/pypi/simple/index.html b/pypi/simple/index.html new file mode 100644 index 0000000..2f55bf4 --- /dev/null +++ b/pypi/simple/index.html @@ -0,0 +1,18 @@ + + + + Simple index + + +

Packages marked with (*) are custom compiled. The rest are unmodified dependencies and redirect to PyPI.

+intel-cmplr-lib-ur
+intel-openmp
+mkl
+mkl-service (*)
+numpy (*)
+scipy (*)
+tbb
+tcmlib
+umf
+ + diff --git a/pypi/simple/intel-cmplr-lib-ur/index.html b/pypi/simple/intel-cmplr-lib-ur/index.html new file mode 100644 index 0000000..1be1012 --- /dev/null +++ b/pypi/simple/intel-cmplr-lib-ur/index.html @@ -0,0 +1,35 @@ + + + + + Links for intel-cmplr-lib-ur + + +

Links for intel-cmplr-lib-ur

+intel_cmplr_lib_ur-2024.2.0-py2.py3-none-manylinux1_x86_64.whl
+intel_cmplr_lib_ur-2024.2.0-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2024.2.1-py2.py3-none-manylinux1_x86_64.whl
+intel_cmplr_lib_ur-2024.2.1-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.0.0-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.0.1-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.0.1-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.0.2-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.0.2-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.0.3-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.0.3-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.0.4-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.0.4-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.0.5-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.0.5-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.1.0-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.1.0-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.1.1-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.1.1-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.2.0-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.2.0-py2.py3-none-win_amd64.whl
+intel_cmplr_lib_ur-2025.2.1-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_cmplr_lib_ur-2025.2.1-py2.py3-none-win_amd64.whl
+ + + \ No newline at end of file diff --git a/pypi/simple/intel-openmp/index.html b/pypi/simple/intel-openmp/index.html new file mode 100644 index 0000000..577514a --- /dev/null +++ b/pypi/simple/intel-openmp/index.html @@ -0,0 +1,147 @@ + + + + + Links for intel-openmp + + +

Links for intel-openmp

+intel_openmp-2018.0.0-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+intel_openmp-2018.0.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2018.0.0-py2.py3-none-win_amd64.whl
+intel_openmp-2018.0.3-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+intel_openmp-2018.0.3-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2018.0.3-py2.py3-none-win_amd64.whl
+intel_openmp-2019.0-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+intel_openmp-2019.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2019.0-py2.py3-none-win_amd64.whl
+intel_openmp-2020.0.133-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2021.1.1-py2.py3-none-macosx_10_15_x86_64.whl
+intel_openmp-2021.1.1-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2021.1.1-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2021.1.1-py2.py3-none-win32.whl
+intel_openmp-2021.1.1-py2.py3-none-win_amd64.whl
+intel_openmp-2021.1.2-py2.py3-none-macosx_10_15_x86_64.whl
+intel_openmp-2021.1.2-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2021.1.2-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2021.1.2-py2.py3-none-win32.whl
+intel_openmp-2021.1.2-py2.py3-none-win_amd64.whl
+intel_openmp-2021.2.0-py2.py3-none-macosx_10_15_x86_64.whl
+intel_openmp-2021.2.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2021.2.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2021.2.0-py2.py3-none-win32.whl
+intel_openmp-2021.2.0-py2.py3-none-win_amd64.whl
+intel_openmp-2021.3.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2021.3.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2021.3.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2021.3.0-py2.py3-none-win32.whl
+intel_openmp-2021.3.0-py2.py3-none-win_amd64.whl
+intel_openmp-2021.4.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2021.4.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2021.4.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2021.4.0-py2.py3-none-win32.whl
+intel_openmp-2021.4.0-py2.py3-none-win_amd64.whl
+intel_openmp-2022.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2022.0.0-py2.py3-none-win32.whl
+intel_openmp-2022.0.0-py2.py3-none-win_amd64.whl
+intel_openmp-2022.0.1-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2022.0.1-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2022.0.2-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2022.0.2-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2022.0.2-py2.py3-none-win32.whl
+intel_openmp-2022.0.2-py2.py3-none-win_amd64.whl
+intel_openmp-2022.0.3-py2.py3-none-win32.whl
+intel_openmp-2022.0.3-py2.py3-none-win_amd64.whl
+intel_openmp-2022.1.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2022.1.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2022.1.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2022.1.0-py2.py3-none-win32.whl
+intel_openmp-2022.1.0-py2.py3-none-win_amd64.whl
+intel_openmp-2022.2.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2022.2.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2022.2.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2022.2.0-py2.py3-none-win32.whl
+intel_openmp-2022.2.0-py2.py3-none-win_amd64.whl
+intel_openmp-2022.2.1-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2022.2.1-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2022.2.1-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2022.2.1-py2.py3-none-win32.whl
+intel_openmp-2022.2.1-py2.py3-none-win_amd64.whl
+intel_openmp-2023.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2023.0.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2023.0.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2023.1.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2023.1.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2023.1.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2023.1.0-py2.py3-none-win32.whl
+intel_openmp-2023.1.0-py2.py3-none-win_amd64.whl
+intel_openmp-2023.2.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+intel_openmp-2023.2.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2023.2.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2023.2.0-py2.py3-none-win32.whl
+intel_openmp-2023.2.0-py2.py3-none-win_amd64.whl
+intel_openmp-2023.2.2-py2.py3-none-win32.whl
+intel_openmp-2023.2.2-py2.py3-none-win_amd64.whl
+intel_openmp-2023.2.3-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2023.2.3-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2023.2.3-py2.py3-none-win32.whl
+intel_openmp-2023.2.3-py2.py3-none-win_amd64.whl
+intel_openmp-2023.2.4-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2023.2.4-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2023.2.4-py2.py3-none-win32.whl
+intel_openmp-2023.2.4-py2.py3-none-win_amd64.whl
+intel_openmp-2024.0.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.0.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.0.0-py2.py3-none-win32.whl
+intel_openmp-2024.0.0-py2.py3-none-win_amd64.whl
+intel_openmp-2024.0.1-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.0.1-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.0.1-py2.py3-none-win32.whl
+intel_openmp-2024.0.1-py2.py3-none-win_amd64.whl
+intel_openmp-2024.0.2-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.0.2-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.0.2-py2.py3-none-win32.whl
+intel_openmp-2024.0.2-py2.py3-none-win_amd64.whl
+intel_openmp-2024.0.3-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.0.3-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.0.3-py2.py3-none-win32.whl
+intel_openmp-2024.0.3-py2.py3-none-win_amd64.whl
+intel_openmp-2024.1.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.1.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.1.0-py2.py3-none-win32.whl
+intel_openmp-2024.1.0-py2.py3-none-win_amd64.whl
+intel_openmp-2024.1.2-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.1.2-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.1.2-py2.py3-none-win32.whl
+intel_openmp-2024.1.2-py2.py3-none-win_amd64.whl
+intel_openmp-2024.2.0-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.2.0-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.2.0-py2.py3-none-win32.whl
+intel_openmp-2024.2.0-py2.py3-none-win_amd64.whl
+intel_openmp-2024.2.1-py2.py3-none-manylinux1_i686.whl
+intel_openmp-2024.2.1-py2.py3-none-manylinux1_x86_64.whl
+intel_openmp-2024.2.1-py2.py3-none-win32.whl
+intel_openmp-2024.2.1-py2.py3-none-win_amd64.whl
+intel_openmp-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.0.0-py2.py3-none-win_amd64.whl
+intel_openmp-2025.0.1-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.0.1-py2.py3-none-win_amd64.whl
+intel_openmp-2025.0.2-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.0.2-py2.py3-none-win_amd64.whl
+intel_openmp-2025.0.3-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.0.3-py2.py3-none-win_amd64.whl
+intel_openmp-2025.0.4-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.0.4-py2.py3-none-win_amd64.whl
+intel_openmp-2025.0.5-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.0.5-py2.py3-none-win_amd64.whl
+intel_openmp-2025.1.0-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.1.0-py2.py3-none-win_amd64.whl
+intel_openmp-2025.1.1-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.1.1-py2.py3-none-win_amd64.whl
+intel_openmp-2025.2.0-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.2.0-py2.py3-none-win_amd64.whl
+intel_openmp-2025.2.1-py2.py3-none-manylinux_2_28_x86_64.whl
+intel_openmp-2025.2.1-py2.py3-none-win_amd64.whl
+ + + \ No newline at end of file diff --git a/pypi/simple/mkl-service/index.html b/pypi/simple/mkl-service/index.html new file mode 100644 index 0000000..ba33308 --- /dev/null +++ b/pypi/simple/mkl-service/index.html @@ -0,0 +1,45 @@ + + + + Links for mkl-service + + +

Links for mkl-service

+
+mkl_service-2.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   30-Apr-2025
+mkl_service-2.4.2-cp310-cp310-win_amd64.whl                                                           0.1 MB   30-Apr-2025
+mkl_service-2.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   30-Apr-2025
+mkl_service-2.4.2-cp311-cp311-win_amd64.whl                                                           0.1 MB   30-Apr-2025
+mkl_service-2.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   30-Apr-2025
+mkl_service-2.4.2-cp312-cp312-win_amd64.whl                                                           0.1 MB   30-Apr-2025
+mkl_service-2.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   30-Apr-2025
+mkl_service-2.4.2-cp313-cp313-win_amd64.whl                                                           0.1 MB   30-Apr-2025
+mkl_service-2.5.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   24-Jun-2025
+mkl_service-2.5.0-cp310-cp310-win_amd64.whl                                                           0.1 MB   24-Jun-2025
+mkl_service-2.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   24-Jun-2025
+mkl_service-2.5.0-cp311-cp311-win_amd64.whl                                                           0.1 MB   24-Jun-2025
+mkl_service-2.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   24-Jun-2025
+mkl_service-2.5.0-cp312-cp312-win_amd64.whl                                                           0.1 MB   24-Jun-2025
+mkl_service-2.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   24-Jun-2025
+mkl_service-2.5.0-cp313-cp313-win_amd64.whl                                                           0.1 MB   24-Jun-2025
+mkl_service-2.5.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   06-Jul-2025
+mkl_service-2.5.2-cp310-cp310-win_amd64.whl                                                           0.1 MB   06-Jul-2025
+mkl_service-2.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   06-Jul-2025
+mkl_service-2.5.2-cp311-cp311-win_amd64.whl                                                           0.1 MB   06-Jul-2025
+mkl_service-2.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   06-Jul-2025
+mkl_service-2.5.2-cp312-cp312-win_amd64.whl                                                           0.1 MB   06-Jul-2025
+mkl_service-2.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   06-Jul-2025
+mkl_service-2.5.2-cp313-cp313-win_amd64.whl                                                           0.1 MB   06-Jul-2025
+mkl_service-2.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp310-cp310-win_amd64.whl                                                           0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp311-cp311-win_amd64.whl                                                           0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp312-cp312-win_amd64.whl                                                           0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp313-cp313-win_amd64.whl                                                           0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl    0.1 MB   17-Oct-2025
+mkl_service-2.6.0-cp314-cp314-win_amd64.whl                                                           0.1 MB   17-Oct-2025
+    
+ + diff --git a/pypi/simple/mkl/index.html b/pypi/simple/mkl/index.html new file mode 100644 index 0000000..7a85306 --- /dev/null +++ b/pypi/simple/mkl/index.html @@ -0,0 +1,109 @@ + + + + + Links for mkl + + +

Links for mkl

+mkl-2018.0.0-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+mkl-2018.0.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2018.0.0-py2.py3-none-win_amd64.whl
+mkl-2018.0.3-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+mkl-2018.0.3-py2.py3-none-manylinux1_x86_64.whl
+mkl-2018.0.3-py2.py3-none-win_amd64.whl
+mkl-2019.0-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+mkl-2019.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2019.0-py2.py3-none-win_amd64.whl
+mkl-2021.1.1-py2.py3-none-macosx_10_15_x86_64.whl
+mkl-2021.1.1-py2.py3-none-manylinux1_i686.whl
+mkl-2021.1.1-py2.py3-none-manylinux1_x86_64.whl
+mkl-2021.1.1-py2.py3-none-win32.whl
+mkl-2021.1.1-py2.py3-none-win_amd64.whl
+mkl-2021.2.0-py2.py3-none-macosx_10_15_x86_64.whl
+mkl-2021.2.0-py2.py3-none-manylinux1_i686.whl
+mkl-2021.2.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2021.2.0-py2.py3-none-win32.whl
+mkl-2021.2.0-py2.py3-none-win_amd64.whl
+mkl-2021.3.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2021.3.0-py2.py3-none-manylinux1_i686.whl
+mkl-2021.3.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2021.3.0-py2.py3-none-win32.whl
+mkl-2021.3.0-py2.py3-none-win_amd64.whl
+mkl-2021.4.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2021.4.0-py2.py3-none-manylinux1_i686.whl
+mkl-2021.4.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2021.4.0-py2.py3-none-win32.whl
+mkl-2021.4.0-py2.py3-none-win_amd64.whl
+mkl-2022.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2022.0.0-py2.py3-none-win32.whl
+mkl-2022.0.0-py2.py3-none-win_amd64.whl
+mkl-2022.0.1-py2.py3-none-manylinux1_i686.whl
+mkl-2022.0.1-py2.py3-none-manylinux1_x86_64.whl
+mkl-2022.0.2-py2.py3-none-manylinux1_i686.whl
+mkl-2022.0.2-py2.py3-none-manylinux1_x86_64.whl
+mkl-2022.0.2-py2.py3-none-win32.whl
+mkl-2022.0.2-py2.py3-none-win_amd64.whl
+mkl-2022.0.3-py2.py3-none-win32.whl
+mkl-2022.0.3-py2.py3-none-win_amd64.whl
+mkl-2022.1.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2022.1.0-py2.py3-none-manylinux1_i686.whl
+mkl-2022.1.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2022.1.0-py2.py3-none-win32.whl
+mkl-2022.1.0-py2.py3-none-win_amd64.whl
+mkl-2022.2.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2022.2.0-py2.py3-none-manylinux1_i686.whl
+mkl-2022.2.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2022.2.0-py2.py3-none-win32.whl
+mkl-2022.2.0-py2.py3-none-win_amd64.whl
+mkl-2022.2.1-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2022.2.1-py2.py3-none-manylinux1_i686.whl
+mkl-2022.2.1-py2.py3-none-manylinux1_x86_64.whl
+mkl-2022.2.1-py2.py3-none-win32.whl
+mkl-2022.2.1-py2.py3-none-win_amd64.whl
+mkl-2023.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2023.0.0-py2.py3-none-manylinux1_i686.whl
+mkl-2023.0.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2023.1.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2023.1.0-py2.py3-none-manylinux1_i686.whl
+mkl-2023.1.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2023.1.0-py2.py3-none-win32.whl
+mkl-2023.1.0-py2.py3-none-win_amd64.whl
+mkl-2023.2.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2023.2.0-py2.py3-none-manylinux1_i686.whl
+mkl-2023.2.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2023.2.0-py2.py3-none-win32.whl
+mkl-2023.2.0-py2.py3-none-win_amd64.whl
+mkl-2023.2.1-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2023.2.2-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+mkl-2024.0.0-py2.py3-none-manylinux1_i686.whl
+mkl-2024.0.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2024.0.0-py2.py3-none-win32.whl
+mkl-2024.0.0-py2.py3-none-win_amd64.whl
+mkl-2024.1.0-py2.py3-none-manylinux1_i686.whl
+mkl-2024.1.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2024.1.0-py2.py3-none-win32.whl
+mkl-2024.1.0-py2.py3-none-win_amd64.whl
+mkl-2024.2.0-py2.py3-none-manylinux1_i686.whl
+mkl-2024.2.0-py2.py3-none-manylinux1_x86_64.whl
+mkl-2024.2.0-py2.py3-none-win32.whl
+mkl-2024.2.0-py2.py3-none-win_amd64.whl
+mkl-2024.2.1-py2.py3-none-manylinux1_i686.whl
+mkl-2024.2.1-py2.py3-none-manylinux1_x86_64.whl
+mkl-2024.2.1-py2.py3-none-win32.whl
+mkl-2024.2.1-py2.py3-none-win_amd64.whl
+mkl-2024.2.2-py2.py3-none-manylinux1_i686.whl
+mkl-2024.2.2-py2.py3-none-manylinux1_x86_64.whl
+mkl-2024.2.2-py2.py3-none-win32.whl
+mkl-2024.2.2-py2.py3-none-win_amd64.whl
+mkl-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl
+mkl-2025.0.0-py2.py3-none-win_amd64.whl
+mkl-2025.0.1-py2.py3-none-manylinux_2_28_x86_64.whl
+mkl-2025.0.1-py2.py3-none-win_amd64.whl
+mkl-2025.1.0-py2.py3-none-manylinux_2_28_x86_64.whl
+mkl-2025.1.0-py2.py3-none-win_amd64.whl
+mkl-2025.2.0-py2.py3-none-manylinux_2_28_x86_64.whl
+mkl-2025.2.0-py2.py3-none-win_amd64.whl
+ + + \ No newline at end of file diff --git a/pypi/simple/numpy/index.html b/pypi/simple/numpy/index.html new file mode 100644 index 0000000..762616a --- /dev/null +++ b/pypi/simple/numpy/index.html @@ -0,0 +1,75 @@ + + + + Links for numpy + + +

Links for numpy

+
+numpy-2.1.3-cp310-cp310-manylinux_2_35_x86_64.whl                          7.9 MB   04-Apr-2025
+numpy-2.1.3-cp310-cp310-win_amd64.whl                                      6.0 MB   04-Apr-2025
+numpy-2.1.3-cp311-cp311-manylinux_2_35_x86_64.whl                          7.9 MB   04-Apr-2025
+numpy-2.1.3-cp311-cp311-win_amd64.whl                                      6.0 MB   04-Apr-2025
+numpy-2.1.3-cp312-cp312-manylinux_2_35_x86_64.whl                          7.7 MB   04-Apr-2025
+numpy-2.1.3-cp312-cp312-win_amd64.whl                                      5.7 MB   04-Apr-2025
+numpy-2.1.3-cp313-cp313-manylinux_2_35_x86_64.whl                          7.7 MB   04-Apr-2025
+numpy-2.1.3-cp313-cp313-win_amd64.whl                                      5.7 MB   04-Apr-2025
+numpy-2.2.4-cp310-cp310-manylinux_2_35_x86_64.whl                          8.0 MB   31-Mar-2025
+numpy-2.2.4-cp310-cp310-win_amd64.whl                                      6.0 MB   31-Mar-2025
+numpy-2.2.4-cp311-cp311-manylinux_2_35_x86_64.whl                          8.0 MB   31-Mar-2025
+numpy-2.2.4-cp311-cp311-win_amd64.whl                                      6.0 MB   31-Mar-2025
+numpy-2.2.4-cp312-cp312-manylinux_2_35_x86_64.whl                          7.7 MB   31-Mar-2025
+numpy-2.2.4-cp312-cp312-win_amd64.whl                                      5.7 MB   31-Mar-2025
+numpy-2.2.4-cp313-cp313-manylinux_2_35_x86_64.whl                          7.7 MB   31-Mar-2025
+numpy-2.2.4-cp313-cp313-win_amd64.whl                                      5.7 MB   31-Mar-2025
+numpy-2.2.5-cp310-cp310-manylinux_2_35_x86_64.whl                          8.0 MB   20-Apr-2025
+numpy-2.2.5-cp310-cp310-win_amd64.whl                                      6.0 MB   30-Apr-2025
+numpy-2.2.5-cp311-cp311-manylinux_2_35_x86_64.whl                          8.0 MB   20-Apr-2025
+numpy-2.2.5-cp311-cp311-win_amd64.whl                                      6.0 MB   30-Apr-2025
+numpy-2.2.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.9 MB   30-Apr-2025
+numpy-2.2.5-cp312-cp312-win_amd64.whl                                      5.7 MB   30-Apr-2025
+numpy-2.2.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.9 MB   30-Apr-2025
+numpy-2.2.5-cp313-cp313-win_amd64.whl                                      5.7 MB   30-Apr-2025
+numpy-2.2.6-cp310-cp310-manylinux_2_35_x86_64.whl                          7.9 MB   18-May-2025
+numpy-2.2.6-cp310-cp310-win_amd64.whl                                      6.0 MB   18-May-2025
+numpy-2.2.6-cp311-cp311-manylinux_2_35_x86_64.whl                          7.9 MB   18-May-2025
+numpy-2.2.6-cp311-cp311-win_amd64.whl                                      6.0 MB   18-May-2025
+numpy-2.2.6-cp312-cp312-manylinux_2_35_x86_64.whl                          7.7 MB   18-May-2025
+numpy-2.2.6-cp312-cp312-win_amd64.whl                                      5.7 MB   18-May-2025
+numpy-2.2.6-cp313-cp313-manylinux_2_35_x86_64.whl                          7.7 MB   18-May-2025
+numpy-2.2.6-cp313-cp313-win_amd64.whl                                      5.7 MB   18-May-2025
+numpy-2.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    8.0 MB   10-Jun-2025
+numpy-2.3.0-cp311-cp311-win_amd64.whl                                      5.3 MB   09-Jun-2025
+numpy-2.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   09-Jun-2025
+numpy-2.3.0-cp312-cp312-win_amd64.whl                                      5.1 MB   09-Jun-2025
+numpy-2.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   09-Jun-2025
+numpy-2.3.0-cp313-cp313-win_amd64.whl                                      5.1 MB   09-Jun-2025
+numpy-2.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    8.0 MB   24-Jun-2025
+numpy-2.3.1-cp311-cp311-win_amd64.whl                                      6.1 MB   24-Jun-2025
+numpy-2.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   24-Jun-2025
+numpy-2.3.1-cp312-cp312-win_amd64.whl                                      5.8 MB   24-Jun-2025
+numpy-2.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   24-Jun-2025
+numpy-2.3.1-cp313-cp313-win_amd64.whl                                      5.8 MB   24-Jun-2025
+numpy-2.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    8.0 MB   27-Jul-2025
+numpy-2.3.2-cp311-cp311-win_amd64.whl                                      6.1 MB   27-Jul-2025
+numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   27-Jul-2025
+numpy-2.3.2-cp312-cp312-win_amd64.whl                                      5.8 MB   27-Jul-2025
+numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   27-Jul-2025
+numpy-2.3.2-cp313-cp313-win_amd64.whl                                      5.8 MB   27-Jul-2025
+numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    8.0 MB   14-Sep-2025
+numpy-2.3.3-cp311-cp311-win_amd64.whl                                      6.1 MB   14-Sep-2025
+numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   14-Sep-2025
+numpy-2.3.3-cp312-cp312-win_amd64.whl                                      5.8 MB   14-Sep-2025
+numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   14-Sep-2025
+numpy-2.3.3-cp313-cp313-win_amd64.whl                                      5.8 MB   14-Sep-2025
+numpy-2.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    8.0 MB   16-Oct-2025
+numpy-2.3.4-cp311-cp311-win_amd64.whl                                      6.1 MB   16-Oct-2025
+numpy-2.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   16-Oct-2025
+numpy-2.3.4-cp312-cp312-win_amd64.whl                                      5.8 MB   16-Oct-2025
+numpy-2.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   16-Oct-2025
+numpy-2.3.4-cp313-cp313-win_amd64.whl                                      5.8 MB   16-Oct-2025
+numpy-2.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl    7.8 MB   17-Oct-2025
+numpy-2.3.4-cp314-cp314-win_amd64.whl                                      5.9 MB   17-Oct-2025
+    
+ + diff --git a/pypi/simple/scipy/index.html b/pypi/simple/scipy/index.html new file mode 100644 index 0000000..5878ae8 --- /dev/null +++ b/pypi/simple/scipy/index.html @@ -0,0 +1,47 @@ + + + + Links for scipy + + +

Links for scipy

+
+scipy-1.15.2-cp310-cp310-manylinux_2_35_x86_64.whl                         27.5 MB   31-Mar-2025
+scipy-1.15.2-cp310-cp310-win_amd64.whl                                     45.6 MB   30-Apr-2025
+scipy-1.15.2-cp311-cp311-manylinux_2_35_x86_64.whl                         27.5 MB   31-Mar-2025
+scipy-1.15.2-cp311-cp311-win_amd64.whl                                     45.6 MB   30-Apr-2025
+scipy-1.15.2-cp312-cp312-manylinux_2_28_x86_64.whl                         27.9 MB   30-Apr-2025
+scipy-1.15.2-cp312-cp312-manylinux_2_35_x86_64.whl                         27.2 MB   31-Mar-2025
+scipy-1.15.2-cp312-cp312-win_amd64.whl                                     45.3 MB   30-Apr-2025
+scipy-1.15.2-cp313-cp313-manylinux_2_28_x86_64.whl                         27.9 MB   30-Apr-2025
+scipy-1.15.2-cp313-cp313-manylinux_2_35_x86_64.whl                         27.1 MB   31-Mar-2025
+scipy-1.15.2-cp313-cp313-win_amd64.whl                                     45.3 MB   30-Apr-2025
+scipy-1.15.3-cp310-cp310-manylinux_2_35_x86_64.whl                         27.5 MB   11-May-2025
+scipy-1.15.3-cp310-cp310-win_amd64.whl                                     45.6 MB   11-May-2025
+scipy-1.15.3-cp311-cp311-manylinux_2_35_x86_64.whl                         27.5 MB   11-May-2025
+scipy-1.15.3-cp311-cp311-win_amd64.whl                                     45.6 MB   11-May-2025
+scipy-1.15.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   28.0 MB   10-Jun-2025
+scipy-1.15.3-cp312-cp312-win_amd64.whl                                     45.3 MB   11-May-2025
+scipy-1.15.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   27.9 MB   10-Jun-2025
+scipy-1.15.3-cp313-cp313-win_amd64.whl                                     45.3 MB   11-May-2025
+scipy-1.16.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.5 MB   22-Jun-2025
+scipy-1.16.0-cp311-cp311-win_amd64.whl                                     42.6 MB   22-Jun-2025
+scipy-1.16.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.3 MB   22-Jun-2025
+scipy-1.16.0-cp312-cp312-win_amd64.whl                                     42.4 MB   22-Jun-2025
+scipy-1.16.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.3 MB   22-Jun-2025
+scipy-1.16.0-cp313-cp313-win_amd64.whl                                     42.4 MB   22-Jun-2025
+scipy-1.16.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.6 MB   27-Jul-2025
+scipy-1.16.1-cp311-cp311-win_amd64.whl                                     42.7 MB   27-Jul-2025
+scipy-1.16.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.4 MB   27-Jul-2025
+scipy-1.16.1-cp312-cp312-win_amd64.whl                                     42.5 MB   27-Jul-2025
+scipy-1.16.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.4 MB   27-Jul-2025
+scipy-1.16.1-cp313-cp313-win_amd64.whl                                     42.5 MB   27-Jul-2025
+scipy-1.16.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.6 MB   14-Sep-2025
+scipy-1.16.2-cp311-cp311-win_amd64.whl                                     42.7 MB   14-Sep-2025
+scipy-1.16.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.4 MB   14-Sep-2025
+scipy-1.16.2-cp312-cp312-win_amd64.whl                                     42.6 MB   14-Sep-2025
+scipy-1.16.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl   25.4 MB   14-Sep-2025
+scipy-1.16.2-cp313-cp313-win_amd64.whl                                     42.5 MB   14-Sep-2025
+    
+ + diff --git a/pypi/simple/tbb/index.html b/pypi/simple/tbb/index.html new file mode 100644 index 0000000..5d52e62 --- /dev/null +++ b/pypi/simple/tbb/index.html @@ -0,0 +1,101 @@ + + + + + Links for tbb + + +

Links for tbb

+tbb-2018.0.4-cp27-cp27m-win_amd64.whl
+tbb-2018.0.4-cp36-cp36m-win_amd64.whl
+tbb-2018.0.4-py2.py3-none-manylinux1_x86_64.whl
+tbb-2018.0.4.1-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+tbb-2019.0-py2-none-win_amd64.whl
+tbb-2019.0-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl
+tbb-2019.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2019.0-py3-none-win_amd64.whl
+tbb-2020.0.133-py2.py3-none-manylinux1_x86_64.whl
+tbb-2020.3.254-py2.py3-none-manylinux1_x86_64.whl
+tbb-2020.3.254-py3-none-win_amd64.whl
+tbb-2021.1.1-py2.py3-none-macosx_10_15_x86_64.whl
+tbb-2021.1.1-py2.py3-none-manylinux1_i686.whl
+tbb-2021.1.1-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.1.1-py3-none-win32.whl
+tbb-2021.1.1-py3-none-win_amd64.whl
+tbb-2021.2.0-py2.py3-none-macosx_10_15_x86_64.whl
+tbb-2021.2.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.2.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.2.0-py3-none-win32.whl
+tbb-2021.2.0-py3-none-win_amd64.whl
+tbb-2021.3.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.3.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.3.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.3.0-py3-none-win32.whl
+tbb-2021.3.0-py3-none-win_amd64.whl
+tbb-2021.4.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.4.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.4.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.4.0-py3-none-win32.whl
+tbb-2021.4.0-py3-none-win_amd64.whl
+tbb-2021.5.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.5.0-py3-none-win32.whl
+tbb-2021.5.0-py3-none-win_amd64.whl
+tbb-2021.5.1-py2.py3-none-manylinux1_i686.whl
+tbb-2021.5.1-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.5.1-py3-none-win32.whl
+tbb-2021.5.1-py3-none-win_amd64.whl
+tbb-2021.5.2-py3-none-win32.whl
+tbb-2021.5.2-py3-none-win_amd64.whl
+tbb-2021.6.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.6.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.6.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.6.0-py3-none-win32.whl
+tbb-2021.6.0-py3-none-win_amd64.whl
+tbb-2021.7.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.7.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.7.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.7.0-py3-none-win32.whl
+tbb-2021.7.0-py3-none-win_amd64.whl
+tbb-2021.7.1-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.7.1-py2.py3-none-manylinux1_i686.whl
+tbb-2021.7.1-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.7.1-py3-none-win32.whl
+tbb-2021.7.1-py3-none-win_amd64.whl
+tbb-2021.8.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.8.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.8.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.9.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.9.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.9.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.9.0-py3-none-win32.whl
+tbb-2021.9.0-py3-none-win_amd64.whl
+tbb-2021.10.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl
+tbb-2021.10.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.10.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.10.0-py3-none-win32.whl
+tbb-2021.10.0-py3-none-win_amd64.whl
+tbb-2021.11.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.11.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.11.0-py3-none-win32.whl
+tbb-2021.11.0-py3-none-win_amd64.whl
+tbb-2021.12.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.12.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.12.0-py3-none-win32.whl
+tbb-2021.12.0-py3-none-win_amd64.whl
+tbb-2021.13.0-py2.py3-none-manylinux1_i686.whl
+tbb-2021.13.0-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.13.0-py3-none-win32.whl
+tbb-2021.13.0-py3-none-win_amd64.whl
+tbb-2021.13.1-py2.py3-none-manylinux1_i686.whl
+tbb-2021.13.1-py2.py3-none-manylinux1_x86_64.whl
+tbb-2021.13.1-py3-none-win32.whl
+tbb-2021.13.1-py3-none-win_amd64.whl
+tbb-2022.0.0-py2.py3-none-manylinux_2_28_x86_64.whl
+tbb-2022.0.0-py3-none-win_amd64.whl
+tbb-2022.1.0-py2.py3-none-manylinux_2_28_x86_64.whl
+tbb-2022.1.0-py3-none-win_amd64.whl
+tbb-2022.2.0-py2.py3-none-manylinux_2_28_x86_64.whl
+tbb-2022.2.0-py3-none-win_amd64.whl
+ + + \ No newline at end of file diff --git a/pypi/simple/tcmlib/index.html b/pypi/simple/tcmlib/index.html new file mode 100644 index 0000000..d59633f --- /dev/null +++ b/pypi/simple/tcmlib/index.html @@ -0,0 +1,17 @@ + + + + + Links for tcmlib + + +

Links for tcmlib

+tcmlib-1.2.0-py2.py3-none-manylinux_2_28_x86_64.whl
+tcmlib-1.2.0-py2.py3-none-win_amd64.whl
+tcmlib-1.3.0-py2.py3-none-manylinux_2_28_x86_64.whl
+tcmlib-1.3.0-py2.py3-none-win_amd64.whl
+tcmlib-1.4.0-py2.py3-none-manylinux_2_28_x86_64.whl
+tcmlib-1.4.0-py2.py3-none-win_amd64.whl
+ + + \ No newline at end of file diff --git a/pypi/simple/umf/index.html b/pypi/simple/umf/index.html new file mode 100644 index 0000000..5f77f2c --- /dev/null +++ b/pypi/simple/umf/index.html @@ -0,0 +1,19 @@ + + + + + Links for umf + + +

Links for umf

+umf-0.9.0-py2.py3-none-manylinux_2_28_x86_64.whl
+umf-0.9.0-py2.py3-none-win_amd64.whl
+umf-0.9.1-py2.py3-none-manylinux_2_28_x86_64.whl
+umf-0.9.1-py2.py3-none-win_amd64.whl
+umf-0.10.0-py2.py3-none-manylinux_2_28_x86_64.whl
+umf-0.10.0-py2.py3-none-win_amd64.whl
+umf-0.11.0-py2.py3-none-manylinux_2_28_x86_64.whl
+umf-0.11.0-py2.py3-none-win_amd64.whl
+ + + \ No newline at end of file diff --git a/templates/release.md b/templates/release.md new file mode 100644 index 0000000..9d5ecc4 --- /dev/null +++ b/templates/release.md @@ -0,0 +1,12 @@ +Released on {date}. + +### Latest builds + +{latest} + +### Usage + +Attached below are *newly* built wheels only. Wheels for all packages and all versions can be +[downloaded here](https://urob.github.io/numpy-mkl/). The [setup +guide](https://github.com/urob/numpy-mkl#installation) explains how to automatically install the +most compatible version using `pip` or `uv`. diff --git a/tools/make_index2 b/tools/make_index2 new file mode 100755 index 0000000..7cfe026 --- /dev/null +++ b/tools/make_index2 @@ -0,0 +1,131 @@ +#!/usr/bin/env python + +import argparse +import re +from datetime import datetime +from pathlib import Path + +import requests + +REQUESTS_TIMEOUT = 45 + +TEMPLATE = """ + + + Links for %NAME% + + +

Links for %NAME%

+
+%LINKS%
+    
+ + +""" + +PACKAGE_URL = ( + '{name}' + '{pad} {size} {timestamp}' +) + + +class Wheel: + def __init__(self, asset): + self.asset = asset + self.name = asset['name'] + self.url = asset['browser_download_url'] + self.size = self.size() + self.sha256 = self.sha256sum() + self.timestamp = self.timestamp() + + def __str__(self): + return PACKAGE_URL.format( + url=self.url, + name=self.name, + sha256=self.sha256, + size=self.size, + timestamp=self.timestamp, + pad=' ' * (width - len(self.name)), + ) + + def sha256sum(self): + digest = self.asset['digest'].split(':') + if digest[0] != 'sha256': + raise ValueError(f'Expected sha256 digest, got {digest[0]}') + return digest[1] + + def size(self): + mb = self.asset['size'] / 1024**2 + return f'{mb:4,.1f} MB' + + def timestamp(self): + if self.name in old_wheels and self.sha256 == old_wheels[self.name]['sha256']: + print(f'No change in {self.name}, applying old timestamp') + return old_wheels[self.name]['timestamp'] + + created = datetime.fromisoformat(self.asset['created_at']) + return created.strftime('%d-%b-%Y') + + +class ParseIndex: + def __init__(self, path): + self.wheels = dict(self.parse(path)) + + def parse(self, path): + # Remove duplicate {name} groups from PACKAGE_URL and convert to regex string. + pattern = re.sub(r'{name}', r'.*?', PACKAGE_URL, count=1) + regex = re.sub(r'{(.+?)}', r'(?P<\1>.*)', pattern) + + lines = path.read_text().splitlines() if path.exists() else [] + for line in lines: + if m := re.match(regex, line): + yield m['name'], m.groupdict() + + +class Wheels: + def __init__(self, package): + self.package = package.replace('-', '_') + self.url = 'https://api.github.com/repos/urob/numpy-mkl/releases' + + def fetch_releases(self): + response = requests.get(self.url, timeout=REQUESTS_TIMEOUT) + if (rc := response.status_code) != 200: # noqa: PLR2004 + raise FetchReleaseDataError(f'Download failed with status code {rc}') + return response.json() + + def get_wheels(self): + wheels = [] + for release in self.fetch_releases(): + assets = release['assets'] + filtered = [ + a + for a in assets + if a['name'].startswith(self.package) and a['name'].endswith('.whl') + ] + wheels += [Wheel(a) for a in filtered] + return sorted(wheels, key=lambda w: w.name) + + +class FetchReleaseDataError(Exception): + pass + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Create a custom Python package index') + + parser.add_argument('indexfile', type=str, help='path to index') + parser.add_argument('-p', '--package', type=str, help='name of the package') + + args = parser.parse_args() + indexfile = Path(args.indexfile).resolve() + package = args.package if args.package else indexfile.parent.name + + old_wheels = ParseIndex(indexfile).wheels # Global: used in Wheel.timestamp. + + wheels = Wheels(package).get_wheels() + names = [w.name for w in wheels] + width = len(max(names, key=len)) # Global: used in Wheel.__str__. + + index = TEMPLATE.replace('%LINKS%', '\n'.join(str(w) for w in wheels)) + index = index.replace('%NAME%', package) + indexfile.write_text(index) diff --git a/tools/release_notes b/tools/release_notes new file mode 100755 index 0000000..015723d --- /dev/null +++ b/tools/release_notes @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +import argparse +import json +import time +from pathlib import Path + +from packaging.version import Version + +PACKAGES = ('numpy', 'scipy', 'mkl_service') + +ICONS = { + 'numpy': '[![NumPy](https://img.shields.io/badge/NumPy-{0}-013243)](https://urob.github.io/numpy-mkl/numpy/)', + 'scipy': '[![SciPy](https://img.shields.io/badge/SciPy-{0}-8caae6)](https://urob.github.io/numpy-mkl/scipy/)', + 'mkl_service': '[![mkl-service](https://img.shields.io/badge/mkl--service-{0}-3b5526)](https://urob.github.io/numpy-mkl/mkl-service/)', +} + + +def fetch_builds(path): + if isinstance(path, str): + path = Path(path) + store = json.loads(path.read_text()) if path.exists() else {} + return list(store.keys()) + + +def fetch_latest_build(package, builds): + versions = [_.split('-')[1] for _ in builds if _.startswith(package)] + return max(Version(_) for _ in versions) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Update version icons') + parser.add_argument('-s', '--store', required=True, type=str, help='store file') + parser.add_argument( + '-t', '--template', required=True, type=str, help='template file' + ) + + args = parser.parse_args() + builds = fetch_builds(Path(args.store)) + template = Path(args.template).read_text() + + latest = '' + for p in PACKAGES: + latest_ = fetch_latest_build(p, builds) + latest += f'- {p}: `{latest_}`\n' + + notes = template.format(date=time.strftime('%Y-%m-%d'), latest=latest) + print(notes)