{"id":13503230,"url":"https://github.com/pypa/manylinux","last_synced_at":"2025-05-13T16:12:33.914Z","repository":{"id":3416994,"uuid":"49401134","full_name":"pypa/manylinux","owner":"pypa","description":"Python wheels that work on any linux (almost)","archived":false,"fork":false,"pushed_at":"2025-04-19T04:51:50.000Z","size":4452,"stargazers_count":1541,"open_issues_count":25,"forks_count":225,"subscribers_count":41,"default_branch":"main","last_synced_at":"2025-04-19T10:25:36.182Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pypa.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-01-11T04:02:51.000Z","updated_at":"2025-04-19T04:51:54.000Z","dependencies_parsed_at":"2023-10-01T16:08:36.605Z","dependency_job_id":"ee4eb77e-2d81-40b2-a812-eea6fdc320fd","html_url":"https://github.com/pypa/manylinux","commit_stats":{"total_commits":1010,"total_committers":63,"mean_commits":16.03174603174603,"dds":0.7059405940594059,"last_synced_commit":"409125c00c29b4a6ecf5ff5f32129823165780a8"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fmanylinux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fmanylinux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fmanylinux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fmanylinux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pypa","download_url":"https://codeload.github.com/pypa/manylinux/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250529549,"owners_count":21445639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T22:02:42.828Z","updated_at":"2025-05-13T16:12:33.908Z","avatar_url":"https://github.com/pypa.png","language":"Shell","funding_links":[],"categories":["Shell","Containers \u0026 Language Extentions \u0026 Linting"],"sub_categories":["For Python"],"readme":"manylinux\n=========\n\nOlder archives: https://groups.google.com/forum/#!forum/manylinux-discuss\n\nThe goal of the manylinux project is to provide a convenient way to\ndistribute binary Python extensions as wheels on Linux.\nThis effort has produced `PEP 513 \u003chttps://www.python.org/dev/peps/pep-0513/\u003e`_ (manylinux1),\n`PEP 571 \u003chttps://www.python.org/dev/peps/pep-0571/\u003e`_ (manylinux2010),\n`PEP 599 \u003chttps://www.python.org/dev/peps/pep-0599/\u003e`_ (manylinux2014),\n`PEP 600 \u003chttps://www.python.org/dev/peps/pep-0600/\u003e`_ (manylinux_x_y) and\n`PEP 656 \u003chttps://www.python.org/dev/peps/pep-0656/\u003e`_ (musllinux_x_y).\n\nPEP 513 defined ``manylinux1_x86_64`` and ``manylinux1_i686`` platform tags\nand the wheels were built on Centos5. Centos5 reached End of Life (EOL) on\nMarch 31st, 2017.\n\nPEP 571 defined ``manylinux2010_x86_64`` and ``manylinux2010_i686`` platform\ntags and the wheels were built on Centos6. Centos6 reached End of Life (EOL)\non November 30th, 2020.\n\nPEP 599 defines the following platform tags: ``manylinux2014_x86_64``,\n``manylinux2014_i686``, ``manylinux2014_aarch64``, ``manylinux2014_armv7l``,\n``manylinux2014_ppc64``, ``manylinux2014_ppc64le`` and ``manylinux2014_s390x``.\nWheels are built on CentOS 7. CentOS 7 reached End of Life (EOL) on June 30th, 2024.\n\nPEP 600 has been designed to be \"future-proof\" and does not enforce specific symbols and a specific distro to build.\nIt only states that a wheel tagged ``manylinux_x_y`` shall work on any distro based on ``glibc\u003e=x.y``. PEP 656 added\n``musllinux_x_y`` tags for ``musl\u003e=x.y``.\n\nAn overview of distros per glibc version is available at `pep600_compliance \u003chttps://github.com/mayeut/pep600_compliance?tab=readme-ov-file#distro-compatibility\u003e`_.\n\nThe manylinux project supports:\n\n- ``manylinux2014`` images for ``x86_64``, ``i686``, ``aarch64``, ``ppc64le`` and ``s390x``.\n\n- ``manylinux_2_28`` images for ``x86_64``, ``aarch64``, ``ppc64le`` and ``s390x``.\n\n- ``manylinux_2_34`` images for ``x86_64``, ``aarch64``, ``ppc64le`` and ``s390x``.\n\n- ``musllinux_1_2`` images for ``x86_64``, ``i686``, ``aarch64``, ``ppc64le``, ``s390x`` and ``armv7l``.\n\n\nWheel packages compliant with those tags can be uploaded to\n`PyPI \u003chttps://pypi.python.org\u003e`_ (for instance with `twine\n\u003chttps://pypi.python.org/pypi/twine\u003e`_) and can be installed with\npip:\n\n+-------------------+------------------+----------------------------+-------------------------------------------+\n| ``manylinux`` tag | Client-side pip  | CPython (sources) version  | Distribution default pip compatibility    |\n|                   | version required | embedding a compatible pip |                                           |\n+===================+==================+============================+===========================================+\n| ``manylinux_x_y`` | pip \u003e= 20.3      | 3.8.10+, 3.9.5+, 3.10.0+   | ALT Linux 10+, RHEL 9+, Debian 11+,       |\n|                   |                  |                            | Fedora 34+, Mageia 8+,                    |\n|                   |                  |                            | Photon OS 3.0 with updates,               |\n|                   |                  |                            | Ubuntu 21.04+                             |\n+-------------------+------------------+----------------------------+-------------------------------------------+\n| ``manylinux2014`` | pip \u003e= 19.3      | 3.7.8+, 3.8.4+, 3.9.0+     | CentOS 7 rh-python38, CentOS 8 python38,  |\n|                   |                  |                            | Fedora 32+, Mageia 8+, openSUSE 15.3+,    |\n|                   |                  |                            | Photon OS 4.0+ (3.0+ with updates),       |\n|                   |                  |                            | Ubuntu 20.04+                             |\n+-------------------+------------------+----------------------------+-------------------------------------------+\n| ``manylinux2010`` | pip \u003e= 19.0      | 3.7.3+, 3.8.0+             | ALT Linux 9+, CentOS 7 rh-python38,       |\n|                   |                  |                            | CentOS 8 python38, Fedora 30+, Mageia 7+, |\n|                   |                  |                            | openSUSE 15.3+,                           |\n|                   |                  |                            | Photon OS 4.0+ (3.0+ with updates),       |\n|                   |                  |                            | Ubuntu 20.04+                             |\n+-------------------+------------------+----------------------------+-------------------------------------------+\n| ``manylinux1``    | pip \u003e= 8.1.0     | 3.5.2+, 3.6.0+             | ALT Linux 8+, Amazon Linux 1+, CentOS 7+, |\n|                   |                  |                            | Debian 9+, Fedora 25+, openSUSE 15.2+,    |\n|                   |                  |                            | Mageia 7+, Photon OS 1.0+, Ubuntu 16.04+  |\n+-------------------+------------------+----------------------------+-------------------------------------------+\n\nThe various manylinux tags allow projects to distribute wheels that are\nautomatically installed (and work!) on the vast majority of desktop\nand server Linux distributions.\n\nThis repository hosts several manylinux-related things:\n\n\nDocker images\n-------------\n\nBuilding manylinux-compatible wheels is not trivial; as a general\nrule, binaries built on one Linux distro will only work on other Linux\ndistros that are the same age or newer. Therefore, if we want to make\nbinaries that run on most Linux distros, we have to use an old enough\ndistro.\n\n\nRather than forcing you to install an old distro yourself, install Python,\netc., we provide `Docker \u003chttps://docker.com/\u003e`_ images where we've\ndone the work for you. The images are uploaded to `quay.io`_ and are tagged\nfor repeatable builds.\n\nmanylinux_2_34 (AlmaLinux 9 based) - ALPHA\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCaveat:\nOn x86_64, RHEL 9+ derivatives are using x86-64-v2 target architecture.\nWhile manylinux worked around that when building from sources by intercepting compiler calls to target\nx86_64 instead, every library installed with dnf will most likely target the more recent x86-64-v2 which, if\ngrafted into a wheel, will fail to run on older hardware. There's no PEP to handle micro-architecture variants\nyet when it comes to packaging or installing wheels. Auditwheel doesn't detect this either.\nSee https://github.com/pypa/manylinux/issues/1725\n\nToolchain: GCC 14\n\n- x86_64 image: ``quay.io/pypa/manylinux_2_34_x86_64``\n- aarch64 image: ``quay.io/pypa/manylinux_2_34_aarch64``\n- ppc64le image: ``quay.io/pypa/manylinux_2_34_ppc64le``\n- s390x image: ``quay.io/pypa/manylinux_2_34_s390x``\n\nBuilt wheels are also expected to be compatible with other\ndistros using glibc 2.34 or later, including:\n\n- Debian 12+\n- Ubuntu 21.10+\n- Fedora 35+\n- CentOS/RHEL 9+\n\n\n\nmanylinux_2_31 (Ubuntu 20.04 based) - armv7l only - BETA\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCaveat:\n\nOnly Debian derivatives are available for armv7l. They do not provide recent builds of the GCC toolchain\ncompatible with a vanilla install of the distribution. As such, we only get the GCC toolchain shipped with\nthe base distribution.\n\nThe package manager \u0026 packages names are different than what is found on other manylinux images.\nOther images are using RHEL derivatives only for now so using yum/dnf as a package manager and RHEL like\npackages names this image is using apt and Debian like packages names.\n\nIf one depends on let's say OpenSSL development package, then, the commands to issue to install it are a bit different:\n\n- ``dnf -y install openssl-devel`` on RHEL derivatives\n- ``apt-get update \u0026\u0026 apt-get install -y libssl-dev`` on Debian derivatives\n\n\nToolchain: GCC 9\n\n- armv7l image: ``quay.io/pypa/manylinux_2_31_armv7l``\n\nBuilt wheels are also expected to be compatible with other\ndistros using glibc 2.31 or later, including:\n\n- Debian 11+\n- Ubuntu 20.04+\n\n\nmanylinux_2_28 (AlmaLinux 8 based)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nToolchain: GCC 14\n\n- x86_64 image: ``quay.io/pypa/manylinux_2_28_x86_64``\n- aarch64 image: ``quay.io/pypa/manylinux_2_28_aarch64``\n- ppc64le image: ``quay.io/pypa/manylinux_2_28_ppc64le``\n- s390x image: ``quay.io/pypa/manylinux_2_28_s390x``\n\nBuilt wheels are also expected to be compatible with other\ndistros using glibc 2.28 or later, including:\n\n- Debian 10+\n- Ubuntu 18.10+\n- Fedora 29+\n- CentOS/RHEL 8+\n\n\nmanylinux2014 (CentOS 7 based, glibc 2.17)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nToolchain: GCC 10\n\n- x86_64 image: ``quay.io/pypa/manylinux2014_x86_64``\n- i686 image: ``quay.io/pypa/manylinux2014_i686``\n- aarch64 image: ``quay.io/pypa/manylinux2014_aarch64``\n- ppc64le image: ``quay.io/pypa/manylinux2014_ppc64le``\n- s390x image: ``quay.io/pypa/manylinux2014_s390x``\n\nBuilt wheels are also expected to be compatible with other\ndistros using glibc 2.17 or later, including:\n\n- Debian 8+\n- Ubuntu 13.10+\n- Fedora 19+\n- RHEL 7+\n\n\nmanylinux_2_24 (Debian 9 based) - EOL\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSupport for ``manylinux_2_24`` has `ended on January 1st, 2023 \u003chttps://github.com/pypa/manylinux/issues/1332\u003e`_.\n\nThese images have some caveats mentioned in different issues.\n\nToolchain: GCC 6\n\n- x86_64 image: ``quay.io/pypa/manylinux_2_24_x86_64``\n- i686 image: ``quay.io/pypa/manylinux_2_24_i686``\n- aarch64 image: ``quay.io/pypa/manylinux_2_24_aarch64``\n- ppc64le image: ``quay.io/pypa/manylinux_2_24_ppc64le``\n- s390x image: ``quay.io/pypa/manylinux_2_24_s390x``\n\n\nmanylinux2010 (CentOS 6 based, glibc 2.12 - EOL)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSupport for ``manylinux2010`` has `ended on August 1st, 2022 \u003chttps://github.com/pypa/manylinux/issues/1281\u003e`_.\n\nToolchain: GCC 8\n\n- x86-64 image: ``quay.io/pypa/manylinux2010_x86_64``\n- i686 image: ``quay.io/pypa/manylinux2010_i686``\n\n\nmanylinux1 (CentOS 5 based, glibc 2.5 - EOL)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCode and details regarding ``manylinux1`` can be found in the `manylinux1 tag \u003chttps://github.com/pypa/manylinux/tree/v2024.04.29-manylinux1\u003e`_.\n\nSupport for ``manylinux1`` has `ended on January 1st, 2022 \u003chttps://github.com/pypa/manylinux/issues/994\u003e`_.\n\nToolchain: GCC 4.8\n\n- x86-64 image: ``quay.io/pypa/manylinux1_x86_64``\n- i686 image: ``quay.io/pypa/manylinux1_i686``\n\n\nmusllinux_1_2 (Alpine Linux 3.21 based, 3.13+ compatible)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nToolchain: GCC 14\n\n- x86_64 image: ``quay.io/pypa/musllinux_1_2_x86_64``\n- i686 image: ``quay.io/pypa/musllinux_1_2_i686``\n- aarch64 image: ``quay.io/pypa/musllinux_1_2_aarch64``\n- ppc64le image: ``quay.io/pypa/musllinux_1_2_ppc64le``\n- s390x image: ``quay.io/pypa/musllinux_1_2_s390x``\n- armv7l image: ``quay.io/pypa/musllinux_1_2_armv7l``\n\n\nmusllinux_1_1 (Alpine Linux 3.12 based - EOL)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSupport for ``musllinux_1_1`` has `ended on November 1st, 2024 \u003chttps://github.com/pypa/manylinux/issues/1629\u003e`_.\n\nToolchain: GCC 9\n\n- x86_64 image: ``quay.io/pypa/musllinux_1_1_x86_64``\n- i686 image: ``quay.io/pypa/musllinux_1_1_i686``\n- aarch64 image: ``quay.io/pypa/musllinux_1_1_aarch64``\n- ppc64le image: ``quay.io/pypa/musllinux_1_1_ppc64le``\n- s390x image: ``quay.io/pypa/musllinux_1_1_s390x``\n\n\nAll supported images are rebuilt using GitHub Actions / Travis-CI on every commit to this\nrepository; see the\n`docker/ \u003chttps://github.com/pypa/manylinux/tree/main/docker\u003e`_\ndirectory for source code.\n\n\nImage content\n~~~~~~~~~~~~~\n\nAll supported images currently contain:\n\n- CPython 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t and PyPy 3.8, 3.9, 3.10 installed in\n  ``/opt/python/\u003cpython tag\u003e-\u003cabi tag\u003e``. The directories are named\n  after the PEP 425 tags for each environment --\n  e.g. ``/opt/python/cp313-cp313`` contains a CPython 3.13 build, and\n  can be used to produce wheels named like\n  ``\u003cpkg\u003e-\u003cversion\u003e-cp313-cp313-\u003carch\u003e.whl``.\n\n- Development packages for all the libraries that PEP 571/599 list. One should not assume the presence of any other development package.\n\n- The following development tools, installed via `pipx \u003chttps://pypi.org/p/pipx\u003e`_ (which is also available):\n   - `auditwheel \u003chttps://pypi.org/p/auditwheel\u003e`_\n   - `cmake \u003chttps://pypi.org/p/cmake\u003e`_\n   - `patchelf \u003chttps://pypi.org/p/patchelf\u003e`_\n   - `swig \u003chttps://pypi.org/p/swig\u003e`_\n   - `uv \u003chttps://pypi.org/p/uv\u003e`_ (not available on ``musllinux ppc64le`` \u0026 ``musllinux s390x`` yet due to Rust limitations)\n\n- All Python interpreters have the following packages pre-installed:\n   - `pip \u003chttps://pypi.org/p/pip\u003e`_\n   - `build \u003chttps://pypi.org/p/build\u003e`_\n   - `packaging \u003chttps://pypi.org/p/packaging\u003e`_\n   - Before Python 3.12, `setuptools \u003chttps://pypi.org/p/setuptools\u003e`_ and `wheel \u003chttps://pypi.org/p/wheel\u003e`_ are also available.\n\n- The manylinux-interpreters tool which allows to list all available interpreters \u0026 install ones missing from the image\n\n  3 commands are available:\n\n  - ``manylinux-interpreters list``\n\n    .. code-block:: bash\n\n      usage: manylinux-interpreters list [-h] [-v] [-i] [--format {text,json}]\n\n      list available or installed interpreters\n\n      options:\n        -h, --help            show this help message and exit\n        -v, --verbose         display additional information (--format=text only, ignored for --format=json)\n        -i, --installed       only list installed interpreters\n        --format {text,json}  text is not meant to be machine readable (i.e. the format is not stable)\n\n  - ``manylinux-interpreters ensure-all``\n\n    .. code-block:: bash\n\n      usage: manylinux-interpreters ensure-all [-h]\n\n      make sure all interpreters are installed\n\n      options:\n        -h, --help  show this help message and exit\n\n  - ``manylinux-interpreters ensure``\n\n    .. code-block:: bash\n\n      usage: manylinux-interpreters ensure [-h] TAG [TAG ...]\n\n      make sure a list of interpreters are installed\n\n      positional arguments:\n        TAG         tag with format '\u003cpython tag\u003e-\u003cabi tag\u003e' e.g. 'pp310-pypy310_pp73'\n\n      options:\n        -h, --help  show this help message and exit\n\nNote that less common or virtually unheard of flag combinations\n(such as ``--with-pydebug`` (``d``) and ``--without-pymalloc`` (absence of ``m``)) are not provided.\n\nNote that `starting with CPython 3.8 \u003chttps://docs.python.org/dev/whatsnew/3.8.html#build-and-c-api-changes\u003e`_,\ndefault ``sys.abiflags`` became an empty string: the ``m`` flag for pymalloc\nbecame useless (builds with and without pymalloc are ABI compatible) and so has\nbeen removed. (e.g. ``/opt/python/cp38-cp38``)\n\nNote that PyPy is not available on ppc64le \u0026 s390x or on the musllinux images.\n\nBuilding Docker images\n----------------------\n\nTo build the Docker images, please run the following command from the\ncurrent (root) directory:\n\n    $ PLATFORM=$(uname -m) POLICY=manylinux2014 COMMIT_SHA=latest ./build.sh\n\nPlease note that the default Docker build is using `buildx \u003chttps://github.com/docker/buildx\u003e`_.\nOther frontends can be selected by defining `MANYLINUX_BUILD_FRONTEND`. See `build.sh` for\ndetails.\n\nUpdating the requirements\n-------------------------\n\nThe requirement files are pinned and controlled by uv compile. To update\nthe pins, run:\n\n    $ nox -s update_python_dependencies\n\nUpdating the native dependencies\n--------------------------------\n\nNative dependencies are all pinned in the Dockerfile. To update the pins, run the dedicated\nnox session. This will add a commit for each update. If you only want to see what would be\nupdated, you can do a dry run:\n\n    $ nox -s update_native_dependencies [-- --dry-run]\n\n\n\nExample\n-------\n\nAn example project which builds x86_64 wheels for each Python interpreter\nversion can be found here: https://github.com/pypa/python-manylinux-demo. The\nrepository also contains demo to build i686 and x86_64 wheels with ``manylinux1``\ntags.\n\nThis demonstrates how to use these docker images in conjunction with auditwheel\nto build manylinux-compatible wheels using the free `travis ci \u003chttps://travis-ci.org/\u003e`_\ncontinuous integration service.\n\n(NB: for the i686 images running on a x86_64 host machine, it's necessary to run\neverything under the command line program `linux32`, which changes reported architecture\nin new program environment. See `this example invocation\n\u003chttps://github.com/pypa/python-manylinux-demo/blob/master/.travis.yml#L14\u003e`_)\n\nThe PEP itself\n--------------\n\nThe official version of `PEP 513\n\u003chttps://www.python.org/dev/peps/pep-0513/\u003e`_ is stored in the `PEP\nrepository \u003chttps://github.com/python/peps\u003e`_, but we also have our\n`own copy here\n\u003chttps://github.com/pypa/manylinux/tree/main/pep-513.rst\u003e`_. This is\nwhere the PEP was originally written, so if for some reason you really\nwant to see the full history of edits it went through, then this is\nthe place to look.\n\nThe proposal to upgrade ``manylinux1`` to ``manylinux2010`` after Centos5\nreached EOL was discussed in `PEP 571 \u003chttps://www.python.org/dev/peps/pep-0571/\u003e`_.\n\nThe proposal to upgrade ``manylinux2010`` to ``manylinux2014`` was\ndiscussed in `PEP 599 \u003chttps://www.python.org/dev/peps/pep-0599/\u003e`_.\n\nThe proposal for a \"future-proof\" ``manylinux_x_y`` definition was\ndiscussed in `PEP 600 \u003chttps://www.python.org/dev/peps/pep-0600/\u003e`_.\n\nThis repo also has some analysis code that was used when putting\ntogether the original proposal in the ``policy-info/`` directory.\n\nIf you want to read the full discussion that led to the original\npolicy, then lots of that is here:\nhttps://groups.google.com/forum/#!forum/manylinux-discuss\n\nThe distutils-sig archives for January 2016 also contain several\nthreads.\n\n\nCode of Conduct\n===============\n\nEveryone interacting in the manylinux project's codebases, issue\ntrackers, chat rooms, and mailing lists is expected to follow the\n`PSF Code of Conduct`_.\n\n.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md\n.. _`quay.io`: https://quay.io/organization/pypa\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpypa%2Fmanylinux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpypa%2Fmanylinux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpypa%2Fmanylinux/lists"}