pymor-oldest-supported-numpy


Namepymor-oldest-supported-numpy JSON
Version 2023.1.4 PyPI version JSON
download
home_pagehttps://github.com/pymor/pymor-oldest-supported-numpy
SummaryMeta-package that provides the oldest NumPy that supports a given Python version and platform. If wheels for the platform became available on PyPI only for a more recent NumPy version, then that NumPy version is specified.
upload_time2023-01-24 10:10:19
maintainer
docs_urlNone
authorRené Fritze
requires_python>=3.7
licenseBSD
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: https://img.shields.io/pypi/v/pymor-oldest-supported-numpy
   :target: https://pypi.org/project/pymor-oldest-supported-numpy/
   :alt: PyPI

About
-----

~~ Original Readme below of unadapted oldest-supported-numpy ~~

This is a meta-package which can be used in ``pyproject.toml`` files
to automatically provide as a build-time dependency the oldest version
of Numpy that supports the given Python version and platform. In case
of platforms for which Numpy has prebuilt wheels, the provided version
also has a prebuilt Numpy wheel.

The reason to use the oldest available Numpy version as a build-time
dependency is because of ABI compatibility. Binaries compiled with old
Numpy versions are binary compatible with newer Numpy versions, but
not vice versa. This meta-package exists to make dealing with this
more convenient, without having to duplicate the same list manually in
all packages requiring it.

In other words:

.. code:: toml

    [build-system]
    requires = [
        "wheel",
        "setuptools",
        "numpy==1.13.3; python_version=='3.5'",
        "numpy==1.13.3; python_version=='3.6'",
        "numpy==1.14.5; python_version=='3.7'",
        # more numpy requirements...
    ]

can be replaced by:

.. code:: toml

    [build-system]
    requires = ["wheel", "setuptools", "oldest-supported-numpy"]

And as new Python versions are released, the ``pyproject.toml`` file does not
need to be updated.

Q&A
---

Why define the Numpy pinnings using install_requires in this repository?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The Numpy version pinnings are defined inside the ``setup.cfg`` file as
``install_requires`` dependencies, rather than as build-time dependencies
inside ``pyproject.toml``. This is deliberate, since Numpy is not actually
required to build wheels of **oldest-supported-numpy**. What we need here
is to make sure that when **oldest-supported-numpy** is installed into
the build environment of a package using it, Numpy gets installed too
as a **runtime** dependency inside the build environment.

Another way to think about this is that since we only publish (universal)
wheels of **oldest-supported-numpy**, the wheel contains no ``pyproject.toml``,
``setup.cfg``, or ``setup.py`` code - it only contains metadata including
dependencies which get installed by pip when **oldest-supported-numpy** is
installed.

Can I use this if my package requires a recent version of Numpy?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In many cases, even though your package may require a version of
Numpy that is more recent than the pinned versions here, this
is often a runtime requirement, i.e. for running (rather than
building) your package. In many cases, unless you use recent
features of the Numpy C API, you will still be able to build your
package with an older version of Numpy and therefore you will still
be able to use **oldest-supported-numpy**. You can still impose a
more recent Numpy requirement in ``install_requires``

What about having a catchier name for this package?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The current name is not very catchy as package names go, but it
is very descriptive. This package is only meant to be used in
``pyproject.toml`` files for defining build-time dependencies,
so it's more important to have a descriptive than a catchy name!

What if I think that one of the pinnings is wrong or out of date?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Please feel free to `open an issue <https://github.com/scipy/oldest-supported-numpy/issues/new>`_
or a pull request if you think something is wrong or could be improved!

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pymor/pymor-oldest-supported-numpy",
    "name": "pymor-oldest-supported-numpy",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "",
    "author": "Ren\u00e9 Fritze",
    "author_email": "rene.fritze@wwu.de",
    "download_url": "https://files.pythonhosted.org/packages/7b/08/10b519896a46d5cf4177d8dc80465a66c17c46b9aeff0ba7543adf0caa7b/pymor-oldest-supported-numpy-2023.1.4.tar.gz",
    "platform": null,
    "description": ".. image:: https://img.shields.io/pypi/v/pymor-oldest-supported-numpy\n   :target: https://pypi.org/project/pymor-oldest-supported-numpy/\n   :alt: PyPI\n\nAbout\n-----\n\n~~ Original Readme below of unadapted oldest-supported-numpy ~~\n\nThis is a meta-package which can be used in ``pyproject.toml`` files\nto automatically provide as a build-time dependency the oldest version\nof Numpy that supports the given Python version and platform. In case\nof platforms for which Numpy has prebuilt wheels, the provided version\nalso has a prebuilt Numpy wheel.\n\nThe reason to use the oldest available Numpy version as a build-time\ndependency is because of ABI compatibility. Binaries compiled with old\nNumpy versions are binary compatible with newer Numpy versions, but\nnot vice versa. This meta-package exists to make dealing with this\nmore convenient, without having to duplicate the same list manually in\nall packages requiring it.\n\nIn other words:\n\n.. code:: toml\n\n    [build-system]\n    requires = [\n        \"wheel\",\n        \"setuptools\",\n        \"numpy==1.13.3; python_version=='3.5'\",\n        \"numpy==1.13.3; python_version=='3.6'\",\n        \"numpy==1.14.5; python_version=='3.7'\",\n        # more numpy requirements...\n    ]\n\ncan be replaced by:\n\n.. code:: toml\n\n    [build-system]\n    requires = [\"wheel\", \"setuptools\", \"oldest-supported-numpy\"]\n\nAnd as new Python versions are released, the ``pyproject.toml`` file does not\nneed to be updated.\n\nQ&A\n---\n\nWhy define the Numpy pinnings using install_requires in this repository?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe Numpy version pinnings are defined inside the ``setup.cfg`` file as\n``install_requires`` dependencies, rather than as build-time dependencies\ninside ``pyproject.toml``. This is deliberate, since Numpy is not actually\nrequired to build wheels of **oldest-supported-numpy**. What we need here\nis to make sure that when **oldest-supported-numpy** is installed into\nthe build environment of a package using it, Numpy gets installed too\nas a **runtime** dependency inside the build environment.\n\nAnother way to think about this is that since we only publish (universal)\nwheels of **oldest-supported-numpy**, the wheel contains no ``pyproject.toml``,\n``setup.cfg``, or ``setup.py`` code - it only contains metadata including\ndependencies which get installed by pip when **oldest-supported-numpy** is\ninstalled.\n\nCan I use this if my package requires a recent version of Numpy?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn many cases, even though your package may require a version of\nNumpy that is more recent than the pinned versions here, this\nis often a runtime requirement, i.e. for running (rather than\nbuilding) your package. In many cases, unless you use recent\nfeatures of the Numpy C API, you will still be able to build your\npackage with an older version of Numpy and therefore you will still\nbe able to use **oldest-supported-numpy**. You can still impose a\nmore recent Numpy requirement in ``install_requires``\n\nWhat about having a catchier name for this package?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe current name is not very catchy as package names go, but it\nis very descriptive. This package is only meant to be used in\n``pyproject.toml`` files for defining build-time dependencies,\nso it's more important to have a descriptive than a catchy name!\n\nWhat if I think that one of the pinnings is wrong or out of date?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPlease feel free to `open an issue <https://github.com/scipy/oldest-supported-numpy/issues/new>`_\nor a pull request if you think something is wrong or could be improved!\n",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "Meta-package that provides the oldest NumPy that supports a given Python version and platform. If wheels for the platform became available on PyPI only for a more recent NumPy version, then that NumPy version is specified.",
    "version": "2023.1.4",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f139bc0038224d248f646c927ae17fabf23ff92449224bb005a712eea1416d81",
                "md5": "77fe91106352c338d07e50a903297965",
                "sha256": "c6c77c3784c2c98ba3267c15ccb2703db0981c60e8bbc92774792ea010469bf8"
            },
            "downloads": -1,
            "filename": "pymor_oldest_supported_numpy-2023.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "77fe91106352c338d07e50a903297965",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 3911,
            "upload_time": "2023-01-24T10:10:17",
            "upload_time_iso_8601": "2023-01-24T10:10:17.622536Z",
            "url": "https://files.pythonhosted.org/packages/f1/39/bc0038224d248f646c927ae17fabf23ff92449224bb005a712eea1416d81/pymor_oldest_supported_numpy-2023.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7b0810b519896a46d5cf4177d8dc80465a66c17c46b9aeff0ba7543adf0caa7b",
                "md5": "f841b58cd136e02c127d46d08d79c591",
                "sha256": "b99301a2074c2cc66fd486e75ac61c71336d121cc86db570bb19eb9199fc4b20"
            },
            "downloads": -1,
            "filename": "pymor-oldest-supported-numpy-2023.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "f841b58cd136e02c127d46d08d79c591",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 3829,
            "upload_time": "2023-01-24T10:10:19",
            "upload_time_iso_8601": "2023-01-24T10:10:19.152452Z",
            "url": "https://files.pythonhosted.org/packages/7b/08/10b519896a46d5cf4177d8dc80465a66c17c46b9aeff0ba7543adf0caa7b/pymor-oldest-supported-numpy-2023.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-01-24 10:10:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "pymor",
    "github_project": "pymor-oldest-supported-numpy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pymor-oldest-supported-numpy"
}
        
Elapsed time: 0.07116s