pytensor


Namepytensor JSON
Version 2.22.0 PyPI version JSON
download
home_pageNone
SummaryOptimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
upload_time2024-05-22 12:33:10
maintainerNone
docs_urlNone
authorNone
requires_python<3.13,>=3.10
license.. _license: LICENSE ======= Copyright (c) 2008-2019, Theano Development Team Copyright (c) 2020-2021, PyMC Development team Copyright (c) 2021-2022, Aesara Development Team Copyright (c) 2022, PyMC Development team All rights reserved. Contains code from NumPy, Copyright (c) 2005-2016, NumPy Developers. Contains code from Aesara, Copyright (c) 2021-2022, Aesara Developers. All rights reserved. theano/scan/*.py[c]: Razvan Pascanu, Frederic Bastien, James Bergstra, Pascal Lamblin, Arnaud Bergeron, PyMC Developers, PyTensor Developers, (c) 2010, Universite de Montreal theano/tensor/sharedvar.py: James Bergstra, (c) 2010, Universite de Montreal, 3-clause BSD License theano/gradient.py: James Bergstra, Razvan Pascanu, Arnaud Bergeron, Ian Goodfellow, PyMC Developers, PyTensor Developers, (c) 2011, Universite de Montreal, 3-clause BSD License theano/compile/monitormode.py: this code was initially copied from the 'pyutools' package by its original author, and re-licensed under Theano's license. Contains frozendict code from slezica’s python-frozendict(https://github.com/slezica/python-frozendict/blob/master/frozendict/__init__.py), Copyright (c) 2012 Santiago Lezica. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of PyTensor, Theano, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords pytensor math numerical symbolic blas numpy autodiff differentiation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: https://cdn.rawgit.com/pymc-devs/pytensor/main/doc/images/PyTensor_RGB.svg
    :height: 100px
    :alt: PyTensor logo
    :align: center

|Tests Status| |Coverage|

|Project Name| is a Python library that allows one to define, optimize, and
efficiently evaluate mathematical expressions involving multi-dimensional arrays.
It provides the computational backend for `PyMC <https://github.com/pymc-devs/pymc>`__.

Features
========

- A hackable, pure-Python codebase
- Extensible graph framework suitable for rapid development of custom operators and symbolic optimizations
- Implements an extensible graph transpilation framework that currently provides
  compilation via C, `JAX <https://github.com/google/jax>`__, and `Numba <https://github.com/numba/numba>`__
- Contrary to PyTorch and TensorFlow, PyTensor maintains a static graph which can be modified in-place to
  allow for advanced optimizations

Getting started
===============

.. code-block:: python

    import pytensor
    from pytensor import tensor as pt

    # Declare two symbolic floating-point scalars
    a = pt.dscalar("a")
    b = pt.dscalar("b")

    # Create a simple example expression
    c = a + b

    # Convert the expression into a callable object that takes `(a, b)`
    # values as input and computes the value of `c`.
    f_c = pytensor.function([a, b], c)

    assert f_c(1.5, 2.5) == 4.0

    # Compute the gradient of the example expression with respect to `a`
    dc = pytensor.grad(c, a)

    f_dc = pytensor.function([a, b], dc)

    assert f_dc(1.5, 2.5) == 1.0

    # Compiling functions with `pytensor.function` also optimizes
    # expression graphs by removing unnecessary operations and
    # replacing computations with more efficient ones.

    v = pt.vector("v")
    M = pt.matrix("M")

    d = a/a + (M + a).dot(v)

    pytensor.dprint(d)
    #  Add [id A]
    #  ├─ ExpandDims{axis=0} [id B]
    #  │  └─ True_div [id C]
    #  │     ├─ a [id D]
    #  │     └─ a [id D]
    #  └─ dot [id E]
    #     ├─ Add [id F]
    #     │  ├─ M [id G]
    #     │  └─ ExpandDims{axes=[0, 1]} [id H]
    #     │     └─ a [id D]
    #     └─ v [id I]

    f_d = pytensor.function([a, v, M], d)

    # `a/a` -> `1` and the dot product is replaced with a BLAS function
    # (i.e. CGemv)
    pytensor.dprint(f_d)
    # Add [id A] 5
    #  ├─ [1.] [id B]
    #  └─ CGemv{inplace} [id C] 4
    #     ├─ AllocEmpty{dtype='float64'} [id D] 3
    #     │  └─ Shape_i{0} [id E] 2
    #     │     └─ M [id F]
    #     ├─ 1.0 [id G]
    #     ├─ Add [id H] 1
    #     │  ├─ M [id F]
    #     │  └─ ExpandDims{axes=[0, 1]} [id I] 0
    #     │     └─ a [id J]
    #     ├─ v [id K]
    #     └─ 0.0 [id L]

See `the PyTensor documentation <https://pytensor.readthedocs.io/en/latest/>`__ for in-depth tutorials.


Installation
============

The latest release of |Project Name| can be installed from PyPI using ``pip``:

::

    pip install pytensor


Or via conda-forge:

::

    conda install -c conda-forge pytensor


The current development branch of |Project Name| can be installed from GitHub, also using ``pip``:

::

    pip install git+https://github.com/pymc-devs/pytensor


Background
==========

PyTensor is a fork of `Aesara <https://github.com/aesara-devs/aesara>`__, which is a fork of `Theano <https://github.com/Theano/Theano>`__.

Contributing
============

We welcome bug reports and fixes and improvements to the documentation.

For more information on contributing, please see the
`contributing guide <https://pytensor.readthedocs.io/en/latest/dev_start_guide.html>`__.

A good place to start contributing is by looking through the issues
`here <https://github.com/pymc-devs/pytensor/issues>`__.


.. |Project Name| replace:: PyTensor
.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg
  :target: https://github.com/pymc-devs/pytensor/actions?query=workflow%3ATests
.. |Coverage| image:: https://codecov.io/gh/pymc-devs/pytensor/branch/main/graph/badge.svg?token=WVwr8nZYmc
  :target: https://codecov.io/gh/pymc-devs/pytensor

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pytensor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.10",
    "maintainer_email": null,
    "keywords": "pytensor, math, numerical, symbolic, blas, numpy, autodiff, differentiation",
    "author": null,
    "author_email": "pymc-devs <pymc.devs@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/a1/0e/98960954350ed4b6dcaeaa781c8dfd27568a03141998db76ed51cb44ae72/pytensor-2.22.0.tar.gz",
    "platform": null,
    "description": ".. image:: https://cdn.rawgit.com/pymc-devs/pytensor/main/doc/images/PyTensor_RGB.svg\n    :height: 100px\n    :alt: PyTensor logo\n    :align: center\n\n|Tests Status| |Coverage|\n\n|Project Name| is a Python library that allows one to define, optimize, and\nefficiently evaluate mathematical expressions involving multi-dimensional arrays.\nIt provides the computational backend for `PyMC <https://github.com/pymc-devs/pymc>`__.\n\nFeatures\n========\n\n- A hackable, pure-Python codebase\n- Extensible graph framework suitable for rapid development of custom operators and symbolic optimizations\n- Implements an extensible graph transpilation framework that currently provides\n  compilation via C, `JAX <https://github.com/google/jax>`__, and `Numba <https://github.com/numba/numba>`__\n- Contrary to PyTorch and TensorFlow, PyTensor maintains a static graph which can be modified in-place to\n  allow for advanced optimizations\n\nGetting started\n===============\n\n.. code-block:: python\n\n    import pytensor\n    from pytensor import tensor as pt\n\n    # Declare two symbolic floating-point scalars\n    a = pt.dscalar(\"a\")\n    b = pt.dscalar(\"b\")\n\n    # Create a simple example expression\n    c = a + b\n\n    # Convert the expression into a callable object that takes `(a, b)`\n    # values as input and computes the value of `c`.\n    f_c = pytensor.function([a, b], c)\n\n    assert f_c(1.5, 2.5) == 4.0\n\n    # Compute the gradient of the example expression with respect to `a`\n    dc = pytensor.grad(c, a)\n\n    f_dc = pytensor.function([a, b], dc)\n\n    assert f_dc(1.5, 2.5) == 1.0\n\n    # Compiling functions with `pytensor.function` also optimizes\n    # expression graphs by removing unnecessary operations and\n    # replacing computations with more efficient ones.\n\n    v = pt.vector(\"v\")\n    M = pt.matrix(\"M\")\n\n    d = a/a + (M + a).dot(v)\n\n    pytensor.dprint(d)\n    #  Add [id A]\n    #  \u251c\u2500 ExpandDims{axis=0} [id B]\n    #  \u2502  \u2514\u2500 True_div [id C]\n    #  \u2502     \u251c\u2500 a [id D]\n    #  \u2502     \u2514\u2500 a [id D]\n    #  \u2514\u2500 dot [id E]\n    #     \u251c\u2500 Add [id F]\n    #     \u2502  \u251c\u2500 M [id G]\n    #     \u2502  \u2514\u2500 ExpandDims{axes=[0, 1]} [id H]\n    #     \u2502     \u2514\u2500 a [id D]\n    #     \u2514\u2500 v [id I]\n\n    f_d = pytensor.function([a, v, M], d)\n\n    # `a/a` -> `1` and the dot product is replaced with a BLAS function\n    # (i.e. CGemv)\n    pytensor.dprint(f_d)\n    # Add [id A] 5\n    #  \u251c\u2500 [1.] [id B]\n    #  \u2514\u2500 CGemv{inplace} [id C] 4\n    #     \u251c\u2500 AllocEmpty{dtype='float64'} [id D] 3\n    #     \u2502  \u2514\u2500 Shape_i{0} [id E] 2\n    #     \u2502     \u2514\u2500 M [id F]\n    #     \u251c\u2500 1.0 [id G]\n    #     \u251c\u2500 Add [id H] 1\n    #     \u2502  \u251c\u2500 M [id F]\n    #     \u2502  \u2514\u2500 ExpandDims{axes=[0, 1]} [id I] 0\n    #     \u2502     \u2514\u2500 a [id J]\n    #     \u251c\u2500 v [id K]\n    #     \u2514\u2500 0.0 [id L]\n\nSee `the PyTensor documentation <https://pytensor.readthedocs.io/en/latest/>`__ for in-depth tutorials.\n\n\nInstallation\n============\n\nThe latest release of |Project Name| can be installed from PyPI using ``pip``:\n\n::\n\n    pip install pytensor\n\n\nOr via conda-forge:\n\n::\n\n    conda install -c conda-forge pytensor\n\n\nThe current development branch of |Project Name| can be installed from GitHub, also using ``pip``:\n\n::\n\n    pip install git+https://github.com/pymc-devs/pytensor\n\n\nBackground\n==========\n\nPyTensor is a fork of `Aesara <https://github.com/aesara-devs/aesara>`__, which is a fork of `Theano <https://github.com/Theano/Theano>`__.\n\nContributing\n============\n\nWe welcome bug reports and fixes and improvements to the documentation.\n\nFor more information on contributing, please see the\n`contributing guide <https://pytensor.readthedocs.io/en/latest/dev_start_guide.html>`__.\n\nA good place to start contributing is by looking through the issues\n`here <https://github.com/pymc-devs/pytensor/issues>`__.\n\n\n.. |Project Name| replace:: PyTensor\n.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg\n  :target: https://github.com/pymc-devs/pytensor/actions?query=workflow%3ATests\n.. |Coverage| image:: https://codecov.io/gh/pymc-devs/pytensor/branch/main/graph/badge.svg?token=WVwr8nZYmc\n  :target: https://codecov.io/gh/pymc-devs/pytensor\n",
    "bugtrack_url": null,
    "license": ".. _license:  LICENSE =======  Copyright (c) 2008-2019, Theano Development Team Copyright (c) 2020-2021, PyMC Development team Copyright (c) 2021-2022, Aesara Development Team Copyright (c) 2022, PyMC Development team All rights reserved.  Contains code from NumPy, Copyright (c) 2005-2016, NumPy Developers. Contains code from Aesara, Copyright (c) 2021-2022, Aesara Developers. All rights reserved.  theano/scan/*.py[c]: Razvan Pascanu, Frederic Bastien, James Bergstra, Pascal Lamblin, Arnaud Bergeron, PyMC Developers, PyTensor Developers, (c) 2010, Universite de Montreal theano/tensor/sharedvar.py: James Bergstra, (c) 2010, Universite de Montreal, 3-clause BSD License theano/gradient.py: James Bergstra, Razvan Pascanu, Arnaud Bergeron, Ian Goodfellow, PyMC Developers, PyTensor Developers, (c) 2011, Universite de Montreal, 3-clause BSD License theano/compile/monitormode.py: this code was initially copied from the 'pyutools' package by its original author, and re-licensed under Theano's license.  Contains frozendict code from slezica\u2019s python-frozendict(https://github.com/slezica/python-frozendict/blob/master/frozendict/__init__.py), Copyright (c) 2012 Santiago Lezica. All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of PyTensor, Theano, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
    "summary": "Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.",
    "version": "2.22.0",
    "project_urls": {
        "documentation": "https://pytensor.readthedocs.io/en/latest/",
        "homepage": "https://github.com/pymc-devs/pytensor",
        "repository": "https://github.com/pymc-devs/pytensor"
    },
    "split_keywords": [
        "pytensor",
        " math",
        " numerical",
        " symbolic",
        " blas",
        " numpy",
        " autodiff",
        " differentiation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9e2413a71cdb5b049f7028f2e9b43337f47d520edf5e6d59bc2935eb1c74dfc1",
                "md5": "1130eac48a8499cf5638e9b848a175ae",
                "sha256": "050171c245cb53ea3deca9f15bd35ae9d60452bacbe96c11719ebe409693b69f"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1130eac48a8499cf5638e9b848a175ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.10",
            "size": 1298578,
            "upload_time": "2024-05-22T12:32:40",
            "upload_time_iso_8601": "2024-05-22T12:32:40.457787Z",
            "url": "https://files.pythonhosted.org/packages/9e/24/13a71cdb5b049f7028f2e9b43337f47d520edf5e6d59bc2935eb1c74dfc1/pytensor-2.22.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "35f19d90435ce30fb05c53b9bcc22b08cd2913c4958f06683027a46574329d89",
                "md5": "e453346cc2f1843cba1339ff50db3ebd",
                "sha256": "a01e10144bed623351cb84c95d2cc7d6ea4183932609c5024e7dc1ae38305d7a"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e453346cc2f1843cba1339ff50db3ebd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.10",
            "size": 1755321,
            "upload_time": "2024-05-22T12:32:42",
            "upload_time_iso_8601": "2024-05-22T12:32:42.932937Z",
            "url": "https://files.pythonhosted.org/packages/35/f1/9d90435ce30fb05c53b9bcc22b08cd2913c4958f06683027a46574329d89/pytensor-2.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "63875a30e456410afe600a90319cf4641381492e2ef6fb50954fa94af1eb5604",
                "md5": "3d403237eda3ce96e9cabc38dbe9fbf5",
                "sha256": "a9ecce189189d0d6660efb9947b6698a09455243ea41ede8f9fac14ef78f6061"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp310-cp310-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "3d403237eda3ce96e9cabc38dbe9fbf5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.10",
            "size": 1748738,
            "upload_time": "2024-05-22T12:32:44",
            "upload_time_iso_8601": "2024-05-22T12:32:44.511462Z",
            "url": "https://files.pythonhosted.org/packages/63/87/5a30e456410afe600a90319cf4641381492e2ef6fb50954fa94af1eb5604/pytensor-2.22.0-cp310-cp310-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa5c87f99ddd6221f9076bf44e79d28c8acc466ce913442c4d813501dd48ba83",
                "md5": "b699df684b518f2d9b4c12bcedf23639",
                "sha256": "40e0c7f78ee28823e631a9542d21e14bb11172ad557a909776f38ffb53d3b10d"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b699df684b518f2d9b4c12bcedf23639",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.10",
            "size": 1762450,
            "upload_time": "2024-05-22T12:32:46",
            "upload_time_iso_8601": "2024-05-22T12:32:46.275855Z",
            "url": "https://files.pythonhosted.org/packages/aa/5c/87f99ddd6221f9076bf44e79d28c8acc466ce913442c4d813501dd48ba83/pytensor-2.22.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "90f6d9f73b3658ec45c3debb6beff0b8daa275dff1cac734862de528147bc477",
                "md5": "d84901830b437eb2440af8fe3b15afd9",
                "sha256": "b509354cb70814a17335ddde2a52ff19c5aed7541124ab22762dbc2a64338d41"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d84901830b437eb2440af8fe3b15afd9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.10",
            "size": 1289093,
            "upload_time": "2024-05-22T12:32:49",
            "upload_time_iso_8601": "2024-05-22T12:32:49.063485Z",
            "url": "https://files.pythonhosted.org/packages/90/f6/d9f73b3658ec45c3debb6beff0b8daa275dff1cac734862de528147bc477/pytensor-2.22.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9009432d5581dce4288579aa8f5da22fde7e6c3e48478d023f45cf3e6187b37b",
                "md5": "af96d51779232119819339282279bb72",
                "sha256": "9d0fcd7a27487f4ee83d3ac3eea4918a41dc82a9f2cbaef7a248aea559a95922"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "af96d51779232119819339282279bb72",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.10",
            "size": 1474743,
            "upload_time": "2024-05-22T12:32:50",
            "upload_time_iso_8601": "2024-05-22T12:32:50.836236Z",
            "url": "https://files.pythonhosted.org/packages/90/09/432d5581dce4288579aa8f5da22fde7e6c3e48478d023f45cf3e6187b37b/pytensor-2.22.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ba6df3c40fec4bf065bd432a44c5a4d9b11236648d562e79409b44c12321088f",
                "md5": "ef475a9c3fce5e3c1a8fcaf06d6e10ed",
                "sha256": "60dd0a4ca272b062903a5a7e8d1d4437a78c6966a19179352f27538fd22d7ba4"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ef475a9c3fce5e3c1a8fcaf06d6e10ed",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.10",
            "size": 1968607,
            "upload_time": "2024-05-22T12:32:52",
            "upload_time_iso_8601": "2024-05-22T12:32:52.965019Z",
            "url": "https://files.pythonhosted.org/packages/ba/6d/f3c40fec4bf065bd432a44c5a4d9b11236648d562e79409b44c12321088f/pytensor-2.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "48f048aa8310e2578d780fd19db9342b65822f67c1461ad982bab153892e16cf",
                "md5": "b26ada1491511f5379cd76e691760591",
                "sha256": "0a3b4142034642760e899f2f28f4166f751016c885d06ac67ef00a7dd648ba2e"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp311-cp311-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "b26ada1491511f5379cd76e691760591",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.10",
            "size": 1965208,
            "upload_time": "2024-05-22T12:32:54",
            "upload_time_iso_8601": "2024-05-22T12:32:54.518359Z",
            "url": "https://files.pythonhosted.org/packages/48/f0/48aa8310e2578d780fd19db9342b65822f67c1461ad982bab153892e16cf/pytensor-2.22.0-cp311-cp311-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ac01d00e9793ca3adb44ffb190d66b8da05731790997c45c75f2431e78d7188d",
                "md5": "cd2d4366de556c9b8883e5216d9659b9",
                "sha256": "20cb42eb0433eaaae62013d5695fa2b06f85a631418938b3aa58ae0cde92393c"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cd2d4366de556c9b8883e5216d9659b9",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.10",
            "size": 1984946,
            "upload_time": "2024-05-22T12:32:56",
            "upload_time_iso_8601": "2024-05-22T12:32:56.043112Z",
            "url": "https://files.pythonhosted.org/packages/ac/01/d00e9793ca3adb44ffb190d66b8da05731790997c45c75f2431e78d7188d/pytensor-2.22.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf7249e486c0ddc1f6466e3093cbd42d094d8ee18a2e94922fdfbe273bf441d0",
                "md5": "7808dd2761ef3eb52f995f3053f92a97",
                "sha256": "7b2d476a63faa996ee608e5f60308df67ba357388bce57ca577f44462d29cfe3"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7808dd2761ef3eb52f995f3053f92a97",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.10",
            "size": 1465449,
            "upload_time": "2024-05-22T12:32:58",
            "upload_time_iso_8601": "2024-05-22T12:32:58.147719Z",
            "url": "https://files.pythonhosted.org/packages/bf/72/49e486c0ddc1f6466e3093cbd42d094d8ee18a2e94922fdfbe273bf441d0/pytensor-2.22.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "01c147a3884ea6683ab30c3078cfa538e0f757deb6cc063088717c43390c2632",
                "md5": "291c3b29b17925c5f37c6f0c70db17cc",
                "sha256": "749163855b33aa1a83d1579784ee5228b1f24dd268e5909e539bfd19d40b7f6c"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "291c3b29b17925c5f37c6f0c70db17cc",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.10",
            "size": 1476968,
            "upload_time": "2024-05-22T12:33:00",
            "upload_time_iso_8601": "2024-05-22T12:33:00.117600Z",
            "url": "https://files.pythonhosted.org/packages/01/c1/47a3884ea6683ab30c3078cfa538e0f757deb6cc063088717c43390c2632/pytensor-2.22.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ea5396feb5925ab6dff35a98195ca39a65c88c5cce7b5cf36bf267299b6eddd9",
                "md5": "36dd68f8f40b54d6977f5344e1db8d47",
                "sha256": "05cfc718bbf375d44fcba56a2d23d75e4582a880cc079c6007030778745818ca"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "36dd68f8f40b54d6977f5344e1db8d47",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.10",
            "size": 1962752,
            "upload_time": "2024-05-22T12:33:02",
            "upload_time_iso_8601": "2024-05-22T12:33:02.174590Z",
            "url": "https://files.pythonhosted.org/packages/ea/53/96feb5925ab6dff35a98195ca39a65c88c5cce7b5cf36bf267299b6eddd9/pytensor-2.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de4074809536309ca41ce276f5a248f1466dd7cd06f4028843aa23037c811115",
                "md5": "0a9bd8972e35236ba89f9d19e83b7ad1",
                "sha256": "e9f21ba13a5f77255fcb3896c5503ee25fa0c5227168f69d14b948fc838149b3"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp312-cp312-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "0a9bd8972e35236ba89f9d19e83b7ad1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.10",
            "size": 1959620,
            "upload_time": "2024-05-22T12:33:03",
            "upload_time_iso_8601": "2024-05-22T12:33:03.944042Z",
            "url": "https://files.pythonhosted.org/packages/de/40/74809536309ca41ce276f5a248f1466dd7cd06f4028843aa23037c811115/pytensor-2.22.0-cp312-cp312-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cb0066c295604a3599644972b43f9b233b72b9de9bc852ad0860d6083ffe9028",
                "md5": "20da16acc3cc7fb7c1d47f13258fcaa4",
                "sha256": "21e6941fed937b127ee498be4e11dc765b30b5dd561bb6336239e7c0297016b9"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "20da16acc3cc7fb7c1d47f13258fcaa4",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.10",
            "size": 1982143,
            "upload_time": "2024-05-22T12:33:06",
            "upload_time_iso_8601": "2024-05-22T12:33:06.177786Z",
            "url": "https://files.pythonhosted.org/packages/cb/00/66c295604a3599644972b43f9b233b72b9de9bc852ad0860d6083ffe9028/pytensor-2.22.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d4e815020464e4cfa28d8eb6648a6e79e151a82a1ab3bcb724c42dc3c01a7e01",
                "md5": "9ef00a4d58f241ed56612984b13c18c5",
                "sha256": "9fb476f1ac892791f5cf5e21ca3f37992da73db55f241ad256cd69c4de42cf77"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9ef00a4d58f241ed56612984b13c18c5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.10",
            "size": 1467020,
            "upload_time": "2024-05-22T12:33:08",
            "upload_time_iso_8601": "2024-05-22T12:33:08.338453Z",
            "url": "https://files.pythonhosted.org/packages/d4/e8/15020464e4cfa28d8eb6648a6e79e151a82a1ab3bcb724c42dc3c01a7e01/pytensor-2.22.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a10e98960954350ed4b6dcaeaa781c8dfd27568a03141998db76ed51cb44ae72",
                "md5": "2ae5a029d0e9c92867076aa9ff7611fe",
                "sha256": "d39c15dd75ca2b560a72849372e0d731fb5f7b10b139c1de112cf0ea2183078a"
            },
            "downloads": -1,
            "filename": "pytensor-2.22.0.tar.gz",
            "has_sig": false,
            "md5_digest": "2ae5a029d0e9c92867076aa9ff7611fe",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.10",
            "size": 3559223,
            "upload_time": "2024-05-22T12:33:10",
            "upload_time_iso_8601": "2024-05-22T12:33:10.620477Z",
            "url": "https://files.pythonhosted.org/packages/a1/0e/98960954350ed4b6dcaeaa781c8dfd27568a03141998db76ed51cb44ae72/pytensor-2.22.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-22 12:33:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pymc-devs",
    "github_project": "pytensor",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pytensor"
}
        
Elapsed time: 0.28749s