pytensor 2.31.7__tar.gz → 2.32.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytensor-2.31.7/pytensor.egg-info → pytensor-2.32.0}/PKG-INFO +1 -3
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/type.md +0 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/pyproject.toml +1 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/_version.py +3 -3
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/basic.py +21 -10
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/basic.py +8 -4
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/nlinalg.py +0 -11
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/slinalg.py +11 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/basic.py +9 -11
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +87 -1
- pytensor-2.32.0/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +880 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/nlinalg.py +0 -36
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/scalar.py +60 -70
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/slinalg.py +104 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/__init__.py +1 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/basic.py +10 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -16
- pytensor-2.32.0/pytensor/link/pytorch/dispatch/slinalg.py +23 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/printing.py +12 -36
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/raise_op.py +24 -53
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/__init__.py +0 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/basic.py +13 -2
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blas.py +14 -22
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/extra_ops.py +38 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/math.py +66 -137
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/nlinalg.py +0 -171
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/__init__.py +0 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/basic.py +11 -9
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/blas.py +80 -95
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/elemwise.py +33 -62
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/linalg.py +4 -13
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/math.py +270 -138
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/subtensor.py +108 -64
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/subtensor_lift.py +110 -41
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/slinalg.py +389 -4
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/subtensor.py +6 -2
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/reduction.py +2 -2
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/shape.py +2 -23
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/type.py +156 -27
- {pytensor-2.31.7 → pytensor-2.32.0/pytensor.egg-info}/PKG-INFO +1 -3
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/SOURCES.txt +2 -2
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/requires.txt +0 -2
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_gradient.py +19 -1
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_printing.py +4 -4
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_raise_op.py +12 -5
- pytensor-2.31.7/pytensor/tensor/blas_scipy.py +0 -34
- pytensor-2.31.7/pytensor/tensor/rewriting/blas_scipy.py +0 -37
- {pytensor-2.31.7 → pytensor-2.32.0}/LICENSE.txt +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/MANIFEST.in +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/README.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/layout.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/nb-badges.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/rendered_citation.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/LICENSE.txt +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/README.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/acknowledgement.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/bcast.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/bcast.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/blog.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/conf.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/core_development_guide.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/css.inc +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/dev_start_guide.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/environment.yml +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/apply.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/apply.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/apply2.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/ctype.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/extending_faq.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/graphstructures.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/inplace.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/op.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/other_ops.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/pipeline.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/scan.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/tips.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/type.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/unittest.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/using_params.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/faq.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/optimize/root.ipynb +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/page_footer.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/glossary.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/Elman_srnn.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/PyTensor.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/PyTensor_logo.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/binder.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/blocksparse.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/colab.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/github.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/lstm.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/talk2010.gif +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/talk2010.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/install.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/internal/how_to_release.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/internal/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/introduction.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/function.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/io.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/mode.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/ops.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/shared.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/config.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/features.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/graph.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/op.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/replace.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/type.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/utils.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/printing.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/scalar/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/scan.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/sparse/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/basic.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/bcast.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/conv.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/fft.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/functional.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/io.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/optimize.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/random/distributions.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/random/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/utils.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/typed_list.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/index.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/linalg.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/math.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/module_functions.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/random.md +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/links.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/optimizations.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/pylintrc +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/robots.txt +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/troubleshooting.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/adding.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/apply.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/apply.svg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/bcast.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/conditions.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/examples.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/gradients.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/index.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/logistic.gp +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/logistic.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/loop.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/modes.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/prng.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/profiling.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/sparse.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/doc/user_guide.rst +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/bin/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/breakpoint.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/builders.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/compiledir.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/compilelock.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/debugmode.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/function/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/function/pfunc.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/function/types.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/io.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/mode.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/monitormode.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/nanguardmode.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/ops.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/profiling.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/configdefaults.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/configparser.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/html/template.html +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/gradient.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/features.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/fg.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/null_type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/op.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/replace.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/ifelse.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/ipython.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/cutils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/cvm.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/interface.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/op.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/params_type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/linker.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/blockwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/cholesky.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/general.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/lu_solve.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/norm.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/posdef.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/symmetric.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/triangular.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/tridiagonal.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/sparse.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/subtensor.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/linker.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/shape.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/linker.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/vm.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/check_blas.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/frozendict.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/npy_2_compat.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/py.typed +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/loop.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/math.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/op.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/rewriting.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/views.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sandbox/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sandbox/sp.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sandbox/sp2.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/solve/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/solve/rewriting.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/solve/tridiagonal.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blas_c.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blas_headers.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blockwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/c_code/dimshuffle.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/conv/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/conv/abstract_conv.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/einsum.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/fft.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/fourier.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/functional.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/inplace.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/interpolate.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/io.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/linalg.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/optimize.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/pad.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/op.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/numba.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/var.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/numba.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/ofg.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/shape.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/signal/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/signal/conv.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/sort.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/special.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/type_other.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/var.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/variable.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/type.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/updates.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/indexing.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/linalg.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/math.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/random.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/__init__.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/basic.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/indexing.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/math.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/reduction.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/utils.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/vectorization.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/shape.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/vectorization.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/scripts/mypy-failing.txt +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/setup.cfg +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/setup.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_breakpoint.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_config.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_ifelse.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_rop.py +0 -0
- {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_updates.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pytensor
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.32.0
|
|
4
4
|
Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
|
|
5
5
|
Author-email: pymc-devs <pymc.devs@gmail.com>
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -55,8 +55,6 @@ Provides-Extra: rtd
|
|
|
55
55
|
Requires-Dist: sphinx<6,>=5.1.0; extra == "rtd"
|
|
56
56
|
Requires-Dist: pygments; extra == "rtd"
|
|
57
57
|
Requires-Dist: pydot; extra == "rtd"
|
|
58
|
-
Requires-Dist: pydot2; extra == "rtd"
|
|
59
|
-
Requires-Dist: pydot-ng; extra == "rtd"
|
|
60
58
|
Provides-Extra: jax
|
|
61
59
|
Requires-Dist: jax; extra == "jax"
|
|
62
60
|
Requires-Dist: jaxlib; extra == "jax"
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-07-
|
|
11
|
+
"date": "2025-07-26T12:45:37+0200",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.
|
|
14
|
+
"full-revisionid": "6f8bb55521559b0f5ebb14ef536becca7c70f2a7",
|
|
15
|
+
"version": "2.32.0"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -1550,6 +1550,7 @@ class PatternNodeRewriter(NodeRewriter):
|
|
|
1550
1550
|
tracks=(),
|
|
1551
1551
|
get_nodes=None,
|
|
1552
1552
|
values_eq_approx=None,
|
|
1553
|
+
allow_cast=True,
|
|
1553
1554
|
):
|
|
1554
1555
|
"""
|
|
1555
1556
|
|
|
@@ -1572,6 +1573,10 @@ class PatternNodeRewriter(NodeRewriter):
|
|
|
1572
1573
|
If you provide `tracks`, you must provide this parameter. It must be a
|
|
1573
1574
|
function that takes the tracked node and returns a list of nodes on
|
|
1574
1575
|
which we will try this rewrite.
|
|
1576
|
+
values_eq_approx
|
|
1577
|
+
TODO
|
|
1578
|
+
allow_cast
|
|
1579
|
+
Automatically cast the output of the rewrite whenever new and old types differ
|
|
1575
1580
|
|
|
1576
1581
|
Notes
|
|
1577
1582
|
-----
|
|
@@ -1586,6 +1591,7 @@ class PatternNodeRewriter(NodeRewriter):
|
|
|
1586
1591
|
self.in_pattern = convert_strs_to_vars(in_pattern, var_map=var_map)
|
|
1587
1592
|
self.out_pattern = convert_strs_to_vars(out_pattern, var_map=var_map)
|
|
1588
1593
|
self.values_eq_approx = values_eq_approx
|
|
1594
|
+
self.allow_cast = allow_cast
|
|
1589
1595
|
if isinstance(in_pattern, list | tuple):
|
|
1590
1596
|
self.op = self.in_pattern[0]
|
|
1591
1597
|
elif isinstance(in_pattern, dict):
|
|
@@ -1630,6 +1636,10 @@ class PatternNodeRewriter(NodeRewriter):
|
|
|
1630
1636
|
if node.op != self.op:
|
|
1631
1637
|
return False
|
|
1632
1638
|
|
|
1639
|
+
if len(node.outputs) != 1:
|
|
1640
|
+
# PatternNodeRewriter doesn't support replacing multi-output nodes
|
|
1641
|
+
return False
|
|
1642
|
+
|
|
1633
1643
|
s = unify(self.in_pattern, node.out)
|
|
1634
1644
|
|
|
1635
1645
|
if s is False:
|
|
@@ -1652,19 +1662,20 @@ class PatternNodeRewriter(NodeRewriter):
|
|
|
1652
1662
|
):
|
|
1653
1663
|
return False
|
|
1654
1664
|
|
|
1655
|
-
|
|
1665
|
+
[old_out] = node.outputs
|
|
1666
|
+
if not old_out.type.is_super(ret.type):
|
|
1667
|
+
# Type doesn't match
|
|
1656
1668
|
if not (
|
|
1657
|
-
|
|
1658
|
-
and
|
|
1659
|
-
|
|
1660
|
-
for o, new_o in zip(node.outputs, ret.owner.outputs, strict=True)
|
|
1661
|
-
)
|
|
1669
|
+
self.allow_cast
|
|
1670
|
+
and isinstance(old_out.type, pytensor.tensor.TensorType)
|
|
1671
|
+
and isinstance(ret.type, pytensor.tensor.TensorType)
|
|
1662
1672
|
):
|
|
1663
1673
|
return False
|
|
1664
|
-
|
|
1665
|
-
#
|
|
1666
|
-
|
|
1667
|
-
if not
|
|
1674
|
+
|
|
1675
|
+
# Try to cast tensors
|
|
1676
|
+
ret = ret.astype(old_out.type.dtype)
|
|
1677
|
+
if not old_out.type.is_super(ret.type):
|
|
1678
|
+
# Still doesn't match
|
|
1668
1679
|
return False
|
|
1669
1680
|
|
|
1670
1681
|
return [ret]
|
|
@@ -10,10 +10,11 @@ from pytensor.compile import JAX
|
|
|
10
10
|
from pytensor.compile.builders import OpFromGraph
|
|
11
11
|
from pytensor.compile.ops import DeepCopyOp, TypeCastingOp
|
|
12
12
|
from pytensor.configdefaults import config
|
|
13
|
+
from pytensor.graph import Constant
|
|
13
14
|
from pytensor.graph.fg import FunctionGraph
|
|
14
15
|
from pytensor.ifelse import IfElse
|
|
15
16
|
from pytensor.link.utils import fgraph_to_python
|
|
16
|
-
from pytensor.raise_op import
|
|
17
|
+
from pytensor.raise_op import CheckAndRaise
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
if config.floatX == "float64":
|
|
@@ -73,11 +74,14 @@ def jax_funcify_IfElse(op, **kwargs):
|
|
|
73
74
|
return ifelse
|
|
74
75
|
|
|
75
76
|
|
|
76
|
-
@jax_funcify.register(Assert)
|
|
77
77
|
@jax_funcify.register(CheckAndRaise)
|
|
78
|
-
def jax_funcify_CheckAndRaise(op, **kwargs):
|
|
78
|
+
def jax_funcify_CheckAndRaise(op, node, **kwargs):
|
|
79
|
+
conds = node.inputs[1:]
|
|
80
|
+
if any(isinstance(cond, Constant) and not bool(cond.data) for cond in conds):
|
|
81
|
+
raise op.exc_type(op.msg)
|
|
82
|
+
|
|
79
83
|
warnings.warn(
|
|
80
|
-
f"""Skipping
|
|
84
|
+
f"""Skipping {op} Op (assertion: {op.msg}) as JAX tracing would remove it.""",
|
|
81
85
|
stacklevel=2,
|
|
82
86
|
)
|
|
83
87
|
|
|
@@ -9,7 +9,6 @@ from pytensor.tensor.nlinalg import (
|
|
|
9
9
|
KroneckerProduct,
|
|
10
10
|
MatrixInverse,
|
|
11
11
|
MatrixPinv,
|
|
12
|
-
QRFull,
|
|
13
12
|
SLogDet,
|
|
14
13
|
)
|
|
15
14
|
|
|
@@ -67,16 +66,6 @@ def jax_funcify_MatrixInverse(op, **kwargs):
|
|
|
67
66
|
return matrix_inverse
|
|
68
67
|
|
|
69
68
|
|
|
70
|
-
@jax_funcify.register(QRFull)
|
|
71
|
-
def jax_funcify_QRFull(op, **kwargs):
|
|
72
|
-
mode = op.mode
|
|
73
|
-
|
|
74
|
-
def qr_full(x, mode=mode):
|
|
75
|
-
return jnp.linalg.qr(x, mode=mode)
|
|
76
|
-
|
|
77
|
-
return qr_full
|
|
78
|
-
|
|
79
|
-
|
|
80
69
|
@jax_funcify.register(MatrixPinv)
|
|
81
70
|
def jax_funcify_Pinv(op, **kwargs):
|
|
82
71
|
def pinv(x):
|
|
@@ -5,6 +5,7 @@ import jax
|
|
|
5
5
|
from pytensor.link.jax.dispatch.basic import jax_funcify
|
|
6
6
|
from pytensor.tensor.slinalg import (
|
|
7
7
|
LU,
|
|
8
|
+
QR,
|
|
8
9
|
BlockDiagonal,
|
|
9
10
|
Cholesky,
|
|
10
11
|
CholeskySolve,
|
|
@@ -168,3 +169,13 @@ def jax_funcify_ChoSolve(op, **kwargs):
|
|
|
168
169
|
)
|
|
169
170
|
|
|
170
171
|
return cho_solve
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
@jax_funcify.register(QR)
|
|
175
|
+
def jax_funcify_QR(op, **kwargs):
|
|
176
|
+
mode = op.mode
|
|
177
|
+
|
|
178
|
+
def qr(x, mode=mode):
|
|
179
|
+
return jax.scipy.linalg.qr(x, mode=mode)
|
|
180
|
+
|
|
181
|
+
return qr
|
|
@@ -402,24 +402,22 @@ def numba_funcify_DeepCopyOp(op, node, **kwargs):
|
|
|
402
402
|
return deepcopyop
|
|
403
403
|
|
|
404
404
|
|
|
405
|
-
@numba_njit
|
|
406
|
-
def makeslice(*x):
|
|
407
|
-
return slice(*x)
|
|
408
|
-
|
|
409
|
-
|
|
410
405
|
@numba_funcify.register(MakeSlice)
|
|
411
406
|
def numba_funcify_MakeSlice(op, **kwargs):
|
|
412
|
-
|
|
413
|
-
|
|
407
|
+
@numba_njit
|
|
408
|
+
def makeslice(*x):
|
|
409
|
+
return slice(*x)
|
|
414
410
|
|
|
415
|
-
|
|
416
|
-
def shape(x):
|
|
417
|
-
return np.asarray(np.shape(x))
|
|
411
|
+
return makeslice
|
|
418
412
|
|
|
419
413
|
|
|
420
414
|
@numba_funcify.register(Shape)
|
|
421
415
|
def numba_funcify_Shape(op, **kwargs):
|
|
422
|
-
|
|
416
|
+
@numba_njit
|
|
417
|
+
def shape(x):
|
|
418
|
+
return np.asarray(np.shape(x))
|
|
419
|
+
|
|
420
|
+
return shape
|
|
423
421
|
|
|
424
422
|
|
|
425
423
|
@numba_funcify.register(Shape_i)
|
|
@@ -283,7 +283,6 @@ class _LAPACK:
|
|
|
283
283
|
|
|
284
284
|
Called by scipy.linalg.lu_solve
|
|
285
285
|
"""
|
|
286
|
-
...
|
|
287
286
|
lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "getrs")
|
|
288
287
|
functype = ctypes.CFUNCTYPE(
|
|
289
288
|
None,
|
|
@@ -457,3 +456,90 @@ class _LAPACK:
|
|
|
457
456
|
_ptr_int, # INFO
|
|
458
457
|
)
|
|
459
458
|
return functype(lapack_ptr)
|
|
459
|
+
|
|
460
|
+
@classmethod
|
|
461
|
+
def numba_xgeqrf(cls, dtype):
|
|
462
|
+
"""
|
|
463
|
+
Compute the QR factorization of a general M-by-N matrix A.
|
|
464
|
+
|
|
465
|
+
Used in QR decomposition (no pivoting).
|
|
466
|
+
"""
|
|
467
|
+
lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "geqrf")
|
|
468
|
+
functype = ctypes.CFUNCTYPE(
|
|
469
|
+
None,
|
|
470
|
+
_ptr_int, # M
|
|
471
|
+
_ptr_int, # N
|
|
472
|
+
float_pointer, # A
|
|
473
|
+
_ptr_int, # LDA
|
|
474
|
+
float_pointer, # TAU
|
|
475
|
+
float_pointer, # WORK
|
|
476
|
+
_ptr_int, # LWORK
|
|
477
|
+
_ptr_int, # INFO
|
|
478
|
+
)
|
|
479
|
+
return functype(lapack_ptr)
|
|
480
|
+
|
|
481
|
+
@classmethod
|
|
482
|
+
def numba_xgeqp3(cls, dtype):
|
|
483
|
+
"""
|
|
484
|
+
Compute the QR factorization with column pivoting of a general M-by-N matrix A.
|
|
485
|
+
|
|
486
|
+
Used in QR decomposition with pivoting.
|
|
487
|
+
"""
|
|
488
|
+
lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "geqp3")
|
|
489
|
+
functype = ctypes.CFUNCTYPE(
|
|
490
|
+
None,
|
|
491
|
+
_ptr_int, # M
|
|
492
|
+
_ptr_int, # N
|
|
493
|
+
float_pointer, # A
|
|
494
|
+
_ptr_int, # LDA
|
|
495
|
+
_ptr_int, # JPVT
|
|
496
|
+
float_pointer, # TAU
|
|
497
|
+
float_pointer, # WORK
|
|
498
|
+
_ptr_int, # LWORK
|
|
499
|
+
_ptr_int, # INFO
|
|
500
|
+
)
|
|
501
|
+
return functype(lapack_ptr)
|
|
502
|
+
|
|
503
|
+
@classmethod
|
|
504
|
+
def numba_xorgqr(cls, dtype):
|
|
505
|
+
"""
|
|
506
|
+
Generate the orthogonal matrix Q from a QR factorization (real types).
|
|
507
|
+
|
|
508
|
+
Used in QR decomposition to form Q.
|
|
509
|
+
"""
|
|
510
|
+
lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "orgqr")
|
|
511
|
+
functype = ctypes.CFUNCTYPE(
|
|
512
|
+
None,
|
|
513
|
+
_ptr_int, # M
|
|
514
|
+
_ptr_int, # N
|
|
515
|
+
_ptr_int, # K
|
|
516
|
+
float_pointer, # A
|
|
517
|
+
_ptr_int, # LDA
|
|
518
|
+
float_pointer, # TAU
|
|
519
|
+
float_pointer, # WORK
|
|
520
|
+
_ptr_int, # LWORK
|
|
521
|
+
_ptr_int, # INFO
|
|
522
|
+
)
|
|
523
|
+
return functype(lapack_ptr)
|
|
524
|
+
|
|
525
|
+
@classmethod
|
|
526
|
+
def numba_xungqr(cls, dtype):
|
|
527
|
+
"""
|
|
528
|
+
Generate the unitary matrix Q from a QR factorization (complex types).
|
|
529
|
+
|
|
530
|
+
Used in QR decomposition to form Q for complex types.
|
|
531
|
+
"""
|
|
532
|
+
lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "ungqr")
|
|
533
|
+
functype = ctypes.CFUNCTYPE(
|
|
534
|
+
None,
|
|
535
|
+
_ptr_int, # M
|
|
536
|
+
_ptr_int, # N
|
|
537
|
+
_ptr_int, # K
|
|
538
|
+
float_pointer, # A
|
|
539
|
+
_ptr_int, # LDA
|
|
540
|
+
float_pointer, # TAU
|
|
541
|
+
float_pointer, # WORK
|
|
542
|
+
_ptr_int, # LWORK
|
|
543
|
+
_ptr_int, # INFO
|
|
544
|
+
)
|
|
545
|
+
return functype(lapack_ptr)
|