numexpr


Namenumexpr JSON
Version 2.10.0 PyPI version JSON
download
home_pagehttps://github.com/pydata/numexpr
SummaryFast numerical expression evaluator for NumPy
upload_time2024-04-02 09:12:01
maintainerFrancesc Alted
docs_urlNone
authorDavid M. Cooke, Francesc Alted, and others
requires_python>=3.9
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ======================================================
NumExpr: Fast numerical expression evaluator for NumPy
======================================================

:Author: David M. Cooke, Francesc Alted, and others.
:Maintainer: Francesc Alted
:Contact: faltet@gmail.com
:URL: https://github.com/pydata/numexpr
:Documentation: http://numexpr.readthedocs.io/en/latest/
:GitHub Actions: |actions|
:PyPi: |version|
:DOI: |doi|
:readthedocs: |docs|

.. |actions| image:: https://github.com/pydata/numexpr/workflows/Build/badge.svg
        :target: https://github.com/pydata/numexpr/actions
.. |travis| image:: https://travis-ci.org/pydata/numexpr.png?branch=master
        :target: https://travis-ci.org/pydata/numexpr
.. |docs| image:: https://readthedocs.org/projects/numexpr/badge/?version=latest
        :target: http://numexpr.readthedocs.io/en/latest
.. |doi| image:: https://zenodo.org/badge/doi/10.5281/zenodo.2483274.svg
        :target:  https://doi.org/10.5281/zenodo.2483274
.. |version| image:: https://img.shields.io/pypi/v/numexpr
        :target: https://pypi.python.org/pypi/numexpr


What is NumExpr?
----------------

NumExpr is a fast numerical expression evaluator for NumPy.  With it,
expressions that operate on arrays (like :code:`'3*a+4*b'`) are accelerated
and use less memory than doing the same calculation in Python.

In addition, its multi-threaded capabilities can make use of all your
cores -- which generally results in substantial performance scaling compared
to NumPy.

Last but not least, numexpr can make use of Intel's VML (Vector Math
Library, normally integrated in its Math Kernel Library, or MKL).
This allows further acceleration of transcendent expressions.


How NumExpr achieves high performance
-------------------------------------

The main reason why NumExpr achieves better performance than NumPy is
that it avoids allocating memory for intermediate results. This
results in better cache utilization and reduces memory access in
general. Due to this, NumExpr works best with large arrays.

NumExpr parses expressions into its own op-codes that are then used by
an integrated computing virtual machine. The array operands are split
into small chunks that easily fit in the cache of the CPU and passed
to the virtual machine. The virtual machine then applies the
operations on each chunk. It's worth noting that all temporaries and
constants in the expression are also chunked. Chunks are distributed among
the available cores of the CPU, resulting in highly parallelized code
execution.

The result is that NumExpr can get the most of your machine computing
capabilities for array-wise computations. Common speed-ups with regard
to NumPy are usually between 0.95x (for very simple expressions like
:code:`'a + 1'`) and 4x (for relatively complex ones like :code:`'a*b-4.1*a > 2.5*b'`),
although much higher speed-ups can be achieved for some functions  and complex
math operations (up to 15x in some cases).

NumExpr performs best on matrices that are too large to fit in L1 CPU cache.
In order to get a better idea on the different speed-ups that can be achieved
on your platform, run the provided benchmarks.

Installation
------------

From wheels
^^^^^^^^^^^

NumExpr is available for install via `pip` for a wide range of platforms and
Python versions (which may be browsed at: https://pypi.org/project/numexpr/#files).
Installation can be performed as::

    pip install numexpr

If you are using the Anaconda or Miniconda distribution of Python you may prefer
to use the `conda` package manager in this case::

    conda install numexpr

From Source
^^^^^^^^^^^

On most \*nix systems your compilers will already be present. However if you
are using a virtual environment with a substantially newer version of Python than
your system Python you may be prompted to install a new version of `gcc` or `clang`.

For Windows, you will need to install the Microsoft Visual C++ Build Tools
(which are free) first. The version depends on which version of Python you have
installed:

https://wiki.python.org/moin/WindowsCompilers

For Python 3.6+ simply installing the latest version of MSVC build tools should
be sufficient. Note that wheels found via pip do not include MKL support. Wheels
available via `conda` will have MKL, if the MKL backend is used for NumPy.

See `requirements.txt` for the required version of NumPy.

NumExpr is built in the standard Python way::

  python setup.py build install

You can test `numexpr` with::

  python -c "import numexpr; numexpr.test()"

Do not test NumExpr in the source directory or you will generate import errors.

Enable IntelĀ® MKL support
^^^^^^^^^^^^^^^^^^^^^^^^^

NumExpr includes support for Intel's MKL library. This may provide better
performance on Intel architectures, mainly when evaluating transcendental
functions (trigonometrical, exponential, ...).

If you have Intel's MKL, copy the `site.cfg.example` that comes with the
distribution to `site.cfg` and edit the latter file to provide correct paths to
the MKL libraries in your system.  After doing this, you can proceed with the
usual building instructions listed above.

Pay attention to the messages during the building process in order to know
whether MKL has been detected or not.  Finally, you can check the speed-ups on
your machine by running the `bench/vml_timing.py` script (you can play with
different parameters to the `set_vml_accuracy_mode()` and `set_vml_num_threads()`
functions in the script so as to see how it would affect performance).

Usage
-----

::

  >>> import numpy as np
  >>> import numexpr as ne

  >>> a = np.arange(1e6)   # Choose large arrays for better speedups
  >>> b = np.arange(1e6)

  >>> ne.evaluate("a + 1")   # a simple expression
  array([  1.00000000e+00,   2.00000000e+00,   3.00000000e+00, ...,
           9.99998000e+05,   9.99999000e+05,   1.00000000e+06])

  >>> ne.evaluate("a * b - 4.1 * a > 2.5 * b")   # a more complex one
  array([False, False, False, ...,  True,  True,  True], dtype=bool)

  >>> ne.evaluate("sin(a) + arcsinh(a/b)")   # you can also use functions
  array([        NaN,  1.72284457,  1.79067101, ...,  1.09567006,
          0.17523598, -0.09597844])

  >>> s = np.array([b'abba', b'abbb', b'abbcdef'])
  >>> ne.evaluate("b'abba' == s")   # string arrays are supported too
  array([ True, False, False], dtype=bool)


Documentation
-------------

Please see the official documentation at `numexpr.readthedocs.io <https://numexpr.readthedocs.io>`_.
Included is a user guide, benchmark results, and the reference API.


Authors
-------

Please see `AUTHORS.txt <https://github.com/pydata/numexpr/blob/master/AUTHORS.txt>`_.


License
-------

NumExpr is distributed under the `MIT <http://www.opensource.org/licenses/mit-license.php>`_ license.


.. Local Variables:
.. mode: text
.. coding: utf-8
.. fill-column: 70
.. End:

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pydata/numexpr",
    "name": "numexpr",
    "maintainer": "Francesc Alted",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "faltet@gmail.com",
    "keywords": null,
    "author": "David M. Cooke, Francesc Alted, and others",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/15/a9/02a933790dc184d78a739057b997d3ae60f8b10b5c5d95d28c44c84e51a3/numexpr-2.10.0.tar.gz",
    "platform": null,
    "description": "======================================================\nNumExpr: Fast numerical expression evaluator for NumPy\n======================================================\n\n:Author: David M. Cooke, Francesc Alted, and others.\n:Maintainer: Francesc Alted\n:Contact: faltet@gmail.com\n:URL: https://github.com/pydata/numexpr\n:Documentation: http://numexpr.readthedocs.io/en/latest/\n:GitHub Actions: |actions|\n:PyPi: |version|\n:DOI: |doi|\n:readthedocs: |docs|\n\n.. |actions| image:: https://github.com/pydata/numexpr/workflows/Build/badge.svg\n        :target: https://github.com/pydata/numexpr/actions\n.. |travis| image:: https://travis-ci.org/pydata/numexpr.png?branch=master\n        :target: https://travis-ci.org/pydata/numexpr\n.. |docs| image:: https://readthedocs.org/projects/numexpr/badge/?version=latest\n        :target: http://numexpr.readthedocs.io/en/latest\n.. |doi| image:: https://zenodo.org/badge/doi/10.5281/zenodo.2483274.svg\n        :target:  https://doi.org/10.5281/zenodo.2483274\n.. |version| image:: https://img.shields.io/pypi/v/numexpr\n        :target: https://pypi.python.org/pypi/numexpr\n\n\nWhat is NumExpr?\n----------------\n\nNumExpr is a fast numerical expression evaluator for NumPy.  With it,\nexpressions that operate on arrays (like :code:`'3*a+4*b'`) are accelerated\nand use less memory than doing the same calculation in Python.\n\nIn addition, its multi-threaded capabilities can make use of all your\ncores -- which generally results in substantial performance scaling compared\nto NumPy.\n\nLast but not least, numexpr can make use of Intel's VML (Vector Math\nLibrary, normally integrated in its Math Kernel Library, or MKL).\nThis allows further acceleration of transcendent expressions.\n\n\nHow NumExpr achieves high performance\n-------------------------------------\n\nThe main reason why NumExpr achieves better performance than NumPy is\nthat it avoids allocating memory for intermediate results. This\nresults in better cache utilization and reduces memory access in\ngeneral. Due to this, NumExpr works best with large arrays.\n\nNumExpr parses expressions into its own op-codes that are then used by\nan integrated computing virtual machine. The array operands are split\ninto small chunks that easily fit in the cache of the CPU and passed\nto the virtual machine. The virtual machine then applies the\noperations on each chunk. It's worth noting that all temporaries and\nconstants in the expression are also chunked. Chunks are distributed among\nthe available cores of the CPU, resulting in highly parallelized code\nexecution.\n\nThe result is that NumExpr can get the most of your machine computing\ncapabilities for array-wise computations. Common speed-ups with regard\nto NumPy are usually between 0.95x (for very simple expressions like\n:code:`'a + 1'`) and 4x (for relatively complex ones like :code:`'a*b-4.1*a > 2.5*b'`),\nalthough much higher speed-ups can be achieved for some functions  and complex\nmath operations (up to 15x in some cases).\n\nNumExpr performs best on matrices that are too large to fit in L1 CPU cache.\nIn order to get a better idea on the different speed-ups that can be achieved\non your platform, run the provided benchmarks.\n\nInstallation\n------------\n\nFrom wheels\n^^^^^^^^^^^\n\nNumExpr is available for install via `pip` for a wide range of platforms and\nPython versions (which may be browsed at: https://pypi.org/project/numexpr/#files).\nInstallation can be performed as::\n\n    pip install numexpr\n\nIf you are using the Anaconda or Miniconda distribution of Python you may prefer\nto use the `conda` package manager in this case::\n\n    conda install numexpr\n\nFrom Source\n^^^^^^^^^^^\n\nOn most \\*nix systems your compilers will already be present. However if you\nare using a virtual environment with a substantially newer version of Python than\nyour system Python you may be prompted to install a new version of `gcc` or `clang`.\n\nFor Windows, you will need to install the Microsoft Visual C++ Build Tools\n(which are free) first. The version depends on which version of Python you have\ninstalled:\n\nhttps://wiki.python.org/moin/WindowsCompilers\n\nFor Python 3.6+ simply installing the latest version of MSVC build tools should\nbe sufficient. Note that wheels found via pip do not include MKL support. Wheels\navailable via `conda` will have MKL, if the MKL backend is used for NumPy.\n\nSee `requirements.txt` for the required version of NumPy.\n\nNumExpr is built in the standard Python way::\n\n  python setup.py build install\n\nYou can test `numexpr` with::\n\n  python -c \"import numexpr; numexpr.test()\"\n\nDo not test NumExpr in the source directory or you will generate import errors.\n\nEnable Intel\u00ae MKL support\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\nNumExpr includes support for Intel's MKL library. This may provide better\nperformance on Intel architectures, mainly when evaluating transcendental\nfunctions (trigonometrical, exponential, ...).\n\nIf you have Intel's MKL, copy the `site.cfg.example` that comes with the\ndistribution to `site.cfg` and edit the latter file to provide correct paths to\nthe MKL libraries in your system.  After doing this, you can proceed with the\nusual building instructions listed above.\n\nPay attention to the messages during the building process in order to know\nwhether MKL has been detected or not.  Finally, you can check the speed-ups on\nyour machine by running the `bench/vml_timing.py` script (you can play with\ndifferent parameters to the `set_vml_accuracy_mode()` and `set_vml_num_threads()`\nfunctions in the script so as to see how it would affect performance).\n\nUsage\n-----\n\n::\n\n  >>> import numpy as np\n  >>> import numexpr as ne\n\n  >>> a = np.arange(1e6)   # Choose large arrays for better speedups\n  >>> b = np.arange(1e6)\n\n  >>> ne.evaluate(\"a + 1\")   # a simple expression\n  array([  1.00000000e+00,   2.00000000e+00,   3.00000000e+00, ...,\n           9.99998000e+05,   9.99999000e+05,   1.00000000e+06])\n\n  >>> ne.evaluate(\"a * b - 4.1 * a > 2.5 * b\")   # a more complex one\n  array([False, False, False, ...,  True,  True,  True], dtype=bool)\n\n  >>> ne.evaluate(\"sin(a) + arcsinh(a/b)\")   # you can also use functions\n  array([        NaN,  1.72284457,  1.79067101, ...,  1.09567006,\n          0.17523598, -0.09597844])\n\n  >>> s = np.array([b'abba', b'abbb', b'abbcdef'])\n  >>> ne.evaluate(\"b'abba' == s\")   # string arrays are supported too\n  array([ True, False, False], dtype=bool)\n\n\nDocumentation\n-------------\n\nPlease see the official documentation at `numexpr.readthedocs.io <https://numexpr.readthedocs.io>`_.\nIncluded is a user guide, benchmark results, and the reference API.\n\n\nAuthors\n-------\n\nPlease see `AUTHORS.txt <https://github.com/pydata/numexpr/blob/master/AUTHORS.txt>`_.\n\n\nLicense\n-------\n\nNumExpr is distributed under the `MIT <http://www.opensource.org/licenses/mit-license.php>`_ license.\n\n\n.. Local Variables:\n.. mode: text\n.. coding: utf-8\n.. fill-column: 70\n.. End:\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Fast numerical expression evaluator for NumPy",
    "version": "2.10.0",
    "project_urls": {
        "Homepage": "https://github.com/pydata/numexpr"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "024d5d43cfafee8d9591990baa3a417f920834070514f1713f762f2c99b753c5",
                "md5": "144927006f60752ca81d6388b4cf8b40",
                "sha256": "1af6dc6b3bd2e11a802337b352bf58f30df0b70be16c4f863b70a3af3a8ef95e"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "144927006f60752ca81d6388b4cf8b40",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 103511,
            "upload_time": "2024-04-02T09:10:04",
            "upload_time_iso_8601": "2024-04-02T09:10:04.555621Z",
            "url": "https://files.pythonhosted.org/packages/02/4d/5d43cfafee8d9591990baa3a417f920834070514f1713f762f2c99b753c5/numexpr-2.10.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e5dc005e0b29b7aa51537e0565330133b64d77ae68d4b405fe7b8b0a628d0ffe",
                "md5": "56a6328779e855aa4f405e6f38d7bd40",
                "sha256": "3c66dc0188358cdcc9465b6ee54fd5eef2e83ac64b1d4ba9117c41df59bf6fca"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "56a6328779e855aa4f405e6f38d7bd40",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 92667,
            "upload_time": "2024-04-02T09:10:06",
            "upload_time_iso_8601": "2024-04-02T09:10:06.055462Z",
            "url": "https://files.pythonhosted.org/packages/e5/dc/005e0b29b7aa51537e0565330133b64d77ae68d4b405fe7b8b0a628d0ffe/numexpr-2.10.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2ae356ce75c32c97fd40ddd5b5840814cc0bc72163e707dc3742ae7c4a43fbd5",
                "md5": "36ed6c8fa031875ef2b8926cab4fd20e",
                "sha256": "83f1e7a7f7ee741b8dcd20c56c3f862a3a3ec26fa8b9fcadb7dcd819876d2f35"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "36ed6c8fa031875ef2b8926cab4fd20e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 379558,
            "upload_time": "2024-04-02T09:10:08",
            "upload_time_iso_8601": "2024-04-02T09:10:08.366014Z",
            "url": "https://files.pythonhosted.org/packages/2a/e3/56ce75c32c97fd40ddd5b5840814cc0bc72163e707dc3742ae7c4a43fbd5/numexpr-2.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "828f8a151c40bf5b5713c2abc60a7cac66b285f75a3e61446b9cf96d6e26f406",
                "md5": "5befb8541e4f982f95216b42a78f6458",
                "sha256": "4f0b045e1831953a47cc9fabae76a6794c69cbb60921751a5cf2d555034c55bf"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5befb8541e4f982f95216b42a78f6458",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 376073,
            "upload_time": "2024-04-02T09:10:10",
            "upload_time_iso_8601": "2024-04-02T09:10:10.886845Z",
            "url": "https://files.pythonhosted.org/packages/82/8f/8a151c40bf5b5713c2abc60a7cac66b285f75a3e61446b9cf96d6e26f406/numexpr-2.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e9abec003bb6ea2a487fcdae2e40e355579178afab4bfec9e4508de08e71b329",
                "md5": "7e337468ce57f906c2036d0043b91d57",
                "sha256": "1d8eb88b0ae3d3c609d732a17e71096779b2bf47b3a084320ffa93d9f9132786"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7e337468ce57f906c2036d0043b91d57",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 919207,
            "upload_time": "2024-04-02T09:10:14",
            "upload_time_iso_8601": "2024-04-02T09:10:14.163178Z",
            "url": "https://files.pythonhosted.org/packages/e9/ab/ec003bb6ea2a487fcdae2e40e355579178afab4bfec9e4508de08e71b329/numexpr-2.10.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "82e122ad5ab0a7716fefd28a812d6c6c9a893cc4c76ba423e9f0b79800bd0c8e",
                "md5": "9cc2152d401171ee1a4a6ede36e6845c",
                "sha256": "629b66cc1b750671e7fb396506b3f9410612e5bd8bc1dd55b5a0a0041d839f95"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "9cc2152d401171ee1a4a6ede36e6845c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 103636,
            "upload_time": "2024-04-02T09:10:16",
            "upload_time_iso_8601": "2024-04-02T09:10:16.258575Z",
            "url": "https://files.pythonhosted.org/packages/82/e1/22ad5ab0a7716fefd28a812d6c6c9a893cc4c76ba423e9f0b79800bd0c8e/numexpr-2.10.0-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0446973d49b1c4496849220628a940390b28ab3baa8bc5698cf7de2377cb8c4b",
                "md5": "857094e2a56675c768f80679b07501d2",
                "sha256": "78e0a8bc4417c3dedcbae3c473505b69080535246edc977c7dccf3ec8454a685"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "857094e2a56675c768f80679b07501d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 97040,
            "upload_time": "2024-04-02T09:10:18",
            "upload_time_iso_8601": "2024-04-02T09:10:18.260098Z",
            "url": "https://files.pythonhosted.org/packages/04/46/973d49b1c4496849220628a940390b28ab3baa8bc5698cf7de2377cb8c4b/numexpr-2.10.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d0e90b4935af61ae42caade52f143031b90ce074af0d91a2a1c6ac29b82e2bb5",
                "md5": "b53f71e0638c1c6028e209ece0112ecb",
                "sha256": "a602692cd52ce923ce8a0a90fb1d6cf186ebe8706eed83eee0de685e634b9aa9"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b53f71e0638c1c6028e209ece0112ecb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 103543,
            "upload_time": "2024-04-02T09:10:19",
            "upload_time_iso_8601": "2024-04-02T09:10:19.796081Z",
            "url": "https://files.pythonhosted.org/packages/d0/e9/0b4935af61ae42caade52f143031b90ce074af0d91a2a1c6ac29b82e2bb5/numexpr-2.10.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c3f9c563f5ee109bc994d265e45943020004737d08a0816584369c51c56c2805",
                "md5": "637a205415a9083f55c1064645fcc1f6",
                "sha256": "745b46a1fb76920a3eebfaf26e50bc94a9c13b5aee34b256ab4b2d792dbaa9ca"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "637a205415a9083f55c1064645fcc1f6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 92667,
            "upload_time": "2024-04-02T09:10:21",
            "upload_time_iso_8601": "2024-04-02T09:10:21.266466Z",
            "url": "https://files.pythonhosted.org/packages/c3/f9/c563f5ee109bc994d265e45943020004737d08a0816584369c51c56c2805/numexpr-2.10.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9c4353f73005f8f9fe1c9f705f0ee67c607654642427b38b55362847a96336d9",
                "md5": "9cc7610ae7aa250af3ab650d3b05a7f9",
                "sha256": "10789450032357afaeda4ac4d06da9542d1535c13151e8d32b49ae1a488d1358"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "9cc7610ae7aa250af3ab650d3b05a7f9",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 382114,
            "upload_time": "2024-04-02T09:10:23",
            "upload_time_iso_8601": "2024-04-02T09:10:23.527497Z",
            "url": "https://files.pythonhosted.org/packages/9c/43/53f73005f8f9fe1c9f705f0ee67c607654642427b38b55362847a96336d9/numexpr-2.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "21531b312fd243799c4b080c81692b7bd81c9400a2da12291d0447db70cfd635",
                "md5": "37c673f7915cd2c48fd47ba0fa9cf5e3",
                "sha256": "4feafc65ea3044b8bf8f305b757a928e59167a310630c22b97a57dff07a56490"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "37c673f7915cd2c48fd47ba0fa9cf5e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 378285,
            "upload_time": "2024-04-02T09:10:26",
            "upload_time_iso_8601": "2024-04-02T09:10:26.004723Z",
            "url": "https://files.pythonhosted.org/packages/21/53/1b312fd243799c4b080c81692b7bd81c9400a2da12291d0447db70cfd635/numexpr-2.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aeabf9f7d850240215a89650c344e02fe16d6592c701aec9dd8705f76fdd4b95",
                "md5": "a82bf6d1695e69822e9caf51e5ab7b5d",
                "sha256": "937d36c6d3cf15601f26f84f0f706649f976491e9e0892d16cd7c876d77fa7dc"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a82bf6d1695e69822e9caf51e5ab7b5d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 922390,
            "upload_time": "2024-04-02T09:10:28",
            "upload_time_iso_8601": "2024-04-02T09:10:28.731498Z",
            "url": "https://files.pythonhosted.org/packages/ae/ab/f9f7d850240215a89650c344e02fe16d6592c701aec9dd8705f76fdd4b95/numexpr-2.10.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "281c6823d2ac978ef349f97b7d679e19a4f11ee1ae4376c0c91a34fce2659bbe",
                "md5": "8549491e353cb319566c0585e8b02630",
                "sha256": "03d0ba492e484a5a1aeb24b300c4213ed168f2c246177be5733abb4e18cbb043"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "8549491e353cb319566c0585e8b02630",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 103635,
            "upload_time": "2024-04-02T09:10:30",
            "upload_time_iso_8601": "2024-04-02T09:10:30.949619Z",
            "url": "https://files.pythonhosted.org/packages/28/1c/6823d2ac978ef349f97b7d679e19a4f11ee1ae4376c0c91a34fce2659bbe/numexpr-2.10.0-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ce7e2b1466244ed3e8e5bbb383d505168ef387639973c3b2e2d41eb3acf1ab1",
                "md5": "06614f764df142e366e6a45706d85cd5",
                "sha256": "6b5f8242c075477156d26b3a6b8e0cd0a06d4c8eb68d907bde56dd3c9c683e92"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "06614f764df142e366e6a45706d85cd5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 97031,
            "upload_time": "2024-04-02T09:10:33",
            "upload_time_iso_8601": "2024-04-02T09:10:33.177148Z",
            "url": "https://files.pythonhosted.org/packages/9c/e7/e2b1466244ed3e8e5bbb383d505168ef387639973c3b2e2d41eb3acf1ab1/numexpr-2.10.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7114fbe9f9553c60539a3c8595787e36698f29f0875f88e91f4348e71fec4a0d",
                "md5": "f046fd88cb495dc4ffa05b0c684c5fc4",
                "sha256": "b276e2ba3e87ace9a30fd49078ad5dcdc6a1674d030b1ec132599c55465c0346"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f046fd88cb495dc4ffa05b0c684c5fc4",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 103545,
            "upload_time": "2024-04-02T09:10:35",
            "upload_time_iso_8601": "2024-04-02T09:10:35.392948Z",
            "url": "https://files.pythonhosted.org/packages/71/14/fbe9f9553c60539a3c8595787e36698f29f0875f88e91f4348e71fec4a0d/numexpr-2.10.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7277d319d6fc8b45e8120411392a20746a7cb1f6bdfb00321a327a38e8497544",
                "md5": "eaa48f05390658c3e6f3f013b22017d5",
                "sha256": "cb5e12787101f1216f2cdabedc3417748f2e1f472442e16bbfabf0bab2336300"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "eaa48f05390658c3e6f3f013b22017d5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 92677,
            "upload_time": "2024-04-02T09:10:36",
            "upload_time_iso_8601": "2024-04-02T09:10:36.866228Z",
            "url": "https://files.pythonhosted.org/packages/72/77/d319d6fc8b45e8120411392a20746a7cb1f6bdfb00321a327a38e8497544/numexpr-2.10.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "82eb960c8ed5e4cf4688b77bdb05d94fa2d36d6d125dfbc7d81b48412dfd0862",
                "md5": "270f8f80c2fda4c45c7125b103df64ba",
                "sha256": "05278bad96b5846d712eba58b44e5cec743bdb3e19ca624916c921d049fdbcf6"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "270f8f80c2fda4c45c7125b103df64ba",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 383692,
            "upload_time": "2024-04-02T09:10:39",
            "upload_time_iso_8601": "2024-04-02T09:10:39.422330Z",
            "url": "https://files.pythonhosted.org/packages/82/eb/960c8ed5e4cf4688b77bdb05d94fa2d36d6d125dfbc7d81b48412dfd0862/numexpr-2.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "88fb8653234af551b0f20264600444d8cfedce5fad90e94bef63b373393f0682",
                "md5": "e55919f98ddc3c5ef799f61ca5f35c8d",
                "sha256": "a6cdf9e64c5b3dbb61729edb505ea75ee212fa02b85c5b1d851331381ae3b0e1"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e55919f98ddc3c5ef799f61ca5f35c8d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 380971,
            "upload_time": "2024-04-02T09:10:42",
            "upload_time_iso_8601": "2024-04-02T09:10:42.010632Z",
            "url": "https://files.pythonhosted.org/packages/88/fb/8653234af551b0f20264600444d8cfedce5fad90e94bef63b373393f0682/numexpr-2.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cb0ed07ac7f415f0565b83e2a1a79c74bd1d2cad5d9205054e300d32f88a3eec",
                "md5": "208702569eaf3842ac43631f69a14771",
                "sha256": "e3a973265591b0a875fd1151c4549e468959c7192821aac0bb86937694a08efa"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "208702569eaf3842ac43631f69a14771",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 924553,
            "upload_time": "2024-04-02T09:10:44",
            "upload_time_iso_8601": "2024-04-02T09:10:44.490895Z",
            "url": "https://files.pythonhosted.org/packages/cb/0e/d07ac7f415f0565b83e2a1a79c74bd1d2cad5d9205054e300d32f88a3eec/numexpr-2.10.0-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "468f5a6d20352e2a7f7543768a8cfcd256fe20261efc6cf177dd5891d52755ce",
                "md5": "e565154e82a9a8e84cdda2a02e221a32",
                "sha256": "416e0e9f0fc4cced67767585e44cb6b301728bdb9edbb7c534a853222ec62cac"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "e565154e82a9a8e84cdda2a02e221a32",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 103807,
            "upload_time": "2024-04-02T09:10:46",
            "upload_time_iso_8601": "2024-04-02T09:10:46.771458Z",
            "url": "https://files.pythonhosted.org/packages/46/8f/5a6d20352e2a7f7543768a8cfcd256fe20261efc6cf177dd5891d52755ce/numexpr-2.10.0-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "171b65f9d55031698809d276d43bd624c54898439a61312fdaa05ef7a0b6139a",
                "md5": "0c8e90d61243682a65048609f1d37f91",
                "sha256": "748e8d4cde22d9a5603165293fb293a4de1a4623513299416c64fdab557118c2"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0c8e90d61243682a65048609f1d37f91",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 97117,
            "upload_time": "2024-04-02T09:10:48",
            "upload_time_iso_8601": "2024-04-02T09:10:48.292905Z",
            "url": "https://files.pythonhosted.org/packages/17/1b/65f9d55031698809d276d43bd624c54898439a61312fdaa05ef7a0b6139a/numexpr-2.10.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c45b4c6e3120ffcaaab9a376c1df2ab1a7da5e47b7706e239be7864a795cbbf0",
                "md5": "63fe5ae214dfb0d290591ec17c92b746",
                "sha256": "dc3506c30c03b082da2cadef43747d474e5170c1f58a6dcdf882b3dc88b1e849"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "63fe5ae214dfb0d290591ec17c92b746",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 103510,
            "upload_time": "2024-04-02T09:09:24",
            "upload_time_iso_8601": "2024-04-02T09:09:24.454656Z",
            "url": "https://files.pythonhosted.org/packages/c4/5b/4c6e3120ffcaaab9a376c1df2ab1a7da5e47b7706e239be7864a795cbbf0/numexpr-2.10.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "96ccfb3a6ded632da6f8111dbaed0b2ba4a86d84758de7a83d286517b6886b85",
                "md5": "9bd0c5d9dd8b8c32b72192c1d0e13856",
                "sha256": "efa63ecdc9fcaf582045639ddcf56e9bdc1f4d9a01729be528f62df4db86c9d6"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "9bd0c5d9dd8b8c32b72192c1d0e13856",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 92671,
            "upload_time": "2024-04-02T09:09:27",
            "upload_time_iso_8601": "2024-04-02T09:09:27.768646Z",
            "url": "https://files.pythonhosted.org/packages/96/cc/fb3a6ded632da6f8111dbaed0b2ba4a86d84758de7a83d286517b6886b85/numexpr-2.10.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "36797ab72c40f33205bc72b1f189ab7f629df79e4f39f11ae3a0c3ec3b896e01",
                "md5": "5c7cf514cde7068ec7ec8e056e32a765",
                "sha256": "96a64d0dd8f8e694da3f8582d73d7da8446ff375f6dd239b546010efea371ac3"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "5c7cf514cde7068ec7ec8e056e32a765",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 378700,
            "upload_time": "2024-04-02T09:09:33",
            "upload_time_iso_8601": "2024-04-02T09:09:33.054400Z",
            "url": "https://files.pythonhosted.org/packages/36/79/7ab72c40f33205bc72b1f189ab7f629df79e4f39f11ae3a0c3ec3b896e01/numexpr-2.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ae34e11dffd4cf404985e80bb3e29858e47246da8c20ed9198fd9bdd976f25e0",
                "md5": "e5c44fff72a5a018ad5389676a196ba5",
                "sha256": "d47bb567e330ebe86781864219a36cbccb3a47aec893bd509f0139c6b23e8104"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e5c44fff72a5a018ad5389676a196ba5",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 375554,
            "upload_time": "2024-04-02T09:09:42",
            "upload_time_iso_8601": "2024-04-02T09:09:42.482142Z",
            "url": "https://files.pythonhosted.org/packages/ae/34/e11dffd4cf404985e80bb3e29858e47246da8c20ed9198fd9bdd976f25e0/numexpr-2.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0d87e6046e9734070b7c51b3871693fb687244081a9ec7001582dfb917df3e38",
                "md5": "6a74e7c1ed0dafefc38674a535fe3c3e",
                "sha256": "c7517b774d309b1f0896c89bdd1ddd33c4418a92ecfbe5e1df3ac698698f6fcf"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6a74e7c1ed0dafefc38674a535fe3c3e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 918387,
            "upload_time": "2024-04-02T09:09:57",
            "upload_time_iso_8601": "2024-04-02T09:09:57.153592Z",
            "url": "https://files.pythonhosted.org/packages/0d/87/e6046e9734070b7c51b3871693fb687244081a9ec7001582dfb917df3e38/numexpr-2.10.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d4f36cc0ab49ce39f71451e69c26a16a1145f040afc6a4ca60dfec847816367",
                "md5": "743173f0e012c7d267d6744b7450519f",
                "sha256": "04e8620e7e676504201d4082e7b3ee2d9b561d1cb9470b47a6104e10c1e2870e"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "743173f0e012c7d267d6744b7450519f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 103615,
            "upload_time": "2024-04-02T09:10:00",
            "upload_time_iso_8601": "2024-04-02T09:10:00.006212Z",
            "url": "https://files.pythonhosted.org/packages/1d/4f/36cc0ab49ce39f71451e69c26a16a1145f040afc6a4ca60dfec847816367/numexpr-2.10.0-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3112faee83b73ede33e48a055d897a0db32a0d2b9268f7af91e724e75cdcca12",
                "md5": "22303d36a5ba5ad1487d33e40a4ae9c6",
                "sha256": "56d0d96b130f7cd4d78d0017030d6a0e9d9fc2a717ac51d4cf4860b39637e86a"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "22303d36a5ba5ad1487d33e40a4ae9c6",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 97029,
            "upload_time": "2024-04-02T09:10:02",
            "upload_time_iso_8601": "2024-04-02T09:10:02.097861Z",
            "url": "https://files.pythonhosted.org/packages/31/12/faee83b73ede33e48a055d897a0db32a0d2b9268f7af91e724e75cdcca12/numexpr-2.10.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15a902a933790dc184d78a739057b997d3ae60f8b10b5c5d95d28c44c84e51a3",
                "md5": "56df18afc0b5f47b6bf981a4b2a36fdc",
                "sha256": "c89e930752639df040539160326d8f99a84159bbea41943ab8e960591edaaef0"
            },
            "downloads": -1,
            "filename": "numexpr-2.10.0.tar.gz",
            "has_sig": false,
            "md5_digest": "56df18afc0b5f47b6bf981a4b2a36fdc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 103563,
            "upload_time": "2024-04-02T09:12:01",
            "upload_time_iso_8601": "2024-04-02T09:12:01.237172Z",
            "url": "https://files.pythonhosted.org/packages/15/a9/02a933790dc184d78a739057b997d3ae60f8b10b5c5d95d28c44c84e51a3/numexpr-2.10.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-02 09:12:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pydata",
    "github_project": "numexpr",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "numexpr"
}
        
Elapsed time: 0.24980s