pytensor 3.3.0__tar.gz → 3.3.1__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-3.3.0/pytensor.egg-info → pytensor-3.3.1}/PKG-INFO +3 -3
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/index.rst +1 -0
- pytensor-3.3.1/doc/library/graph/traversal.rst +8 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pyproject.toml +7 -3
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/_version.py +3 -3
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/mode.py +3 -1
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/gradient.py +2 -2
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/basic.py +1 -2
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/replace.py +0 -2
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/rewriting/basic.py +20 -10
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/traversal.py +3 -2
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/linalg/solvers.py +20 -0
- pytensor-3.3.1/pytensor/link/mlx/dispatch/scalar/__init__.py +10 -0
- pytensor-3.3.1/pytensor/link/mlx/dispatch/scalar/beta.py +1124 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/scalar/erf.py +14 -21
- pytensor-3.3.1/pytensor/link/mlx/dispatch/scalar/gammainc.py +549 -0
- pytensor-3.3.1/pytensor/link/mlx/dispatch/scalar/helpers.py +136 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/__init__.py +3 -0
- pytensor-3.3.1/pytensor/link/numba/dispatch/_patch_list_to_tuple.py +330 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/_patch_pointer_add.py +8 -5
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/elemwise.py +87 -7
- pytensor-3.3.1/pytensor/link/numba/dispatch/linalg/_BLAS.py +74 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +0 -44
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/dispatch.py +1 -1
- pytensor-3.3.1/pytensor/link/numba/dispatch/linalg/solvers/triangular.py +134 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/subtensor.py +100 -38
- pytensor-3.3.1/pytensor/link/numba/dispatch/tensor_basic.py +445 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/basic.py +11 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/math.py +3 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/basic.py +6 -6
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blockwise.py +20 -5
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/linalg/summary.py +4 -7
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/math.py +37 -12
- pytensor-3.3.1/pytensor/tensor/rewriting/ofg.py +83 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/subtensor.py +48 -22
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/subtensor.py +14 -15
- {pytensor-3.3.0 → pytensor-3.3.1/pytensor.egg-info}/PKG-INFO +3 -3
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor.egg-info/SOURCES.txt +5 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor.egg-info/requires.txt +2 -2
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/__init__.py +0 -1
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/helpers.py +0 -62
- pytensor-3.3.0/pytensor/link/numba/dispatch/linalg/solvers/triangular.py +0 -113
- pytensor-3.3.0/pytensor/link/numba/dispatch/tensor_basic.py +0 -257
- pytensor-3.3.0/pytensor/tensor/rewriting/ofg.py +0 -34
- {pytensor-3.3.0 → pytensor-3.3.1}/LICENSE.txt +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/MANIFEST.in +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/README.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/.templates/layout.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/.templates/nb-badges.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/.templates/rendered_citation.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/LICENSE.txt +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/README.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/_drafts/benchmark_mlx_v_jax_corrected.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/_thumbnails/autodiff/vector_jacobian_product.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/acknowledgement.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/bcast.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/bcast.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/blog.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/conf.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/core_development_guide.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/css.inc +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/dev_start_guide.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/environment.yml +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/apply.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/apply.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/apply2.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/ctype.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/extending_faq.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/graphstructures.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/inplace.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/op.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/other_ops.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/pipeline.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/scan.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/tips.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/type.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/unification_kanren.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/unittest.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/extending/using_params.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/faq.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/applications/normalizing_flows_in_pytensor.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/applications/tiny_transformer_llm.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/autodiff/vector_jacobian_product.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/introduction/pytensor_intro.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/optimize/root.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/page_footer.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/glossary.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/Elman_srnn.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/PyTensor.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/PyTensor_logo.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/binder.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/blocksparse.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/colab.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/github.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/lstm.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/talk2010.gif +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/images/talk2010.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/install.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/internal/how_to_release.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/internal/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/introduction.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/function.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/io.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/mode.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/ops.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/compile/shared.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/config.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/features.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/graph.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/op.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/replace.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/type.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/graph/utils.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/printing.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/scalar/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/scan.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/sparse/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/basic.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/bcast.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/fft.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/functional.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/io.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/linalg.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/optimize.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/random.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/tensor/utils.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/typed_list.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/xtensor/index.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/xtensor/linalg.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/xtensor/math.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/xtensor/module_functions.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/xtensor/random.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/xtensor/signal.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/library/xtensor/type.md +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/links.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/optimizations.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/pylintrc +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/robots.txt +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/troubleshooting.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/adding.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/apply.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/apply.svg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/bcast.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/conditions.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/examples.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/gradients.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/index.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/logistic.gp +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/logistic.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/loop.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/modes.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/prng.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/profiling.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/sparse.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/doc/user_guide.rst +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/_sparse_lazy.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/alloc.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/blockwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/core.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/diagonal.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/dimshuffle.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/dot.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/elemwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/orthogonal.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/permutation.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/positive_definite.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/reshape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/selection.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/specify.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/subtensor.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/symmetric.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/assumptions/triangular.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/bin/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/breakpoint.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/aliasing.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/builders.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/compiledir.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/compilelock.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/debug/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/debug/debugmode.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/debug/dump.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/debug/monitormode.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/debug/nanguardmode.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/debug/profiling.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/executor.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/inner_function.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/io.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/maker.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/rebuild.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/rewriting.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/configdefaults.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/configparser.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/html/template.html +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/features.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/fg.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/null_type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/op.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/rewriting/reachability.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/graph/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/ifelse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/ipython.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/cutils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/cvm.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/interface.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/op.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/params_type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/c/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/linalg/constructors.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/linalg/products.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/linalg/solvers.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/linalg/summary.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/linker.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/jax/ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/blas.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/blockwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/einsum.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/elemwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/extra_ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/linalg/products.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/linalg/summary.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/pad.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/scalar/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/scalar/bessel.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/scalar/erfcinv.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/scalar/gamma.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/scalar/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/signal/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/signal/conv.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/sort.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/subtensor.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/dispatch/tensor_basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/mlx/linker.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/cache.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/_llvmlite_self_ref.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/blockwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/compile_ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/constructors.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/dispatch.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/eigen.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/qz.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/schur.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/decomposition/svd.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/products.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/cholesky.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/general.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/hermitian.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/linear_control.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/lu_solve.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/posdef.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/symmetric.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/tridiagonal.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/solvers/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/summary.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/scalar.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/sort.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/sparse/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/sparse/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/sparse/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/sparse/variable.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/string_codegen.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/typed_list.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/numba/linker.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/linalg/products.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/linalg/summary.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/pytorch/linker.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/link/vm.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/check_blas.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/frozendict.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/npy_2_compat.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/printing.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/py.typed +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/raise_op.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/loop.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/op.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/db.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/inner_graph.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/inplace.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/io.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/merge.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/push_out.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/trace.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/rewriting/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/scan/views.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/linalg.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/sparse/variable.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/_core.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/batched.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/blas_c.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/c_code/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/c_code/alt_blas_common.h +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/c_code/alt_blas_template.c +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/c_code/blas_headers.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/c_code/codegen.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/gemm.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/gemv.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/blas/ger.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/einsum.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/extra_ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/fft.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/fourier.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/functional.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/interpolate.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/_lazy.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/constructors.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/decomposition/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/decomposition/cholesky.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/decomposition/eigen.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/decomposition/lu.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/decomposition/qr.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/decomposition/schur.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/decomposition/svd.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/dtype_utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/inverse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/products.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/core.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/general.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/linear_control.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/lstsq.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/psd.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/triangular.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/solvers/tridiagonal.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/linalg/summary.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/nlinalg.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/optimize.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/pad.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/op.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/rewriting/numba.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/random/variable.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/reshape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/assumptions.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/elemwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/fused_elemwise.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/linalg/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/linalg/decomposition.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/linalg/inverse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/linalg/products.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/linalg/solvers.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/linalg/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/numba.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/optimize.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/reshape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/subtensor_lift.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/signal/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/signal/conv.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/slinalg.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/sort.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/special.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/symbolic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/type_other.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/var.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/variable.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/typed_list/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/typed_list/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/indexing.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/linalg.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/random/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/random/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/random/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/random/variable.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/reduction.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/__init__.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/indexing.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/math.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/reduction.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/utils.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/rewriting/vectorization.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/shape.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/signal.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/type.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor/xtensor/vectorization.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/scripts/mypy-failing.txt +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/setup.cfg +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/setup.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_basic.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_breakpoint.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_config.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_gradient.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_ifelse.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_printing.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_raise_op.py +0 -0
- {pytensor-3.3.0 → pytensor-3.3.1}/tests/test_rop.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pytensor
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.1
|
|
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
|
|
@@ -31,7 +31,7 @@ License-File: LICENSE.txt
|
|
|
31
31
|
Requires-Dist: setuptools>=59.0.0
|
|
32
32
|
Requires-Dist: scipy<2,>=1
|
|
33
33
|
Requires-Dist: numpy>=2.0
|
|
34
|
-
Requires-Dist: numba<=0.
|
|
34
|
+
Requires-Dist: numba<=0.67.0,>=0.58
|
|
35
35
|
Requires-Dist: filelock>=3.15
|
|
36
36
|
Provides-Extra: complete
|
|
37
37
|
Requires-Dist: pytensor[jax]; extra == "complete"
|
|
@@ -57,7 +57,7 @@ Provides-Extra: jax
|
|
|
57
57
|
Requires-Dist: jax; extra == "jax"
|
|
58
58
|
Requires-Dist: jaxlib; extra == "jax"
|
|
59
59
|
Provides-Extra: numba
|
|
60
|
-
Requires-Dist: numba<=0.
|
|
60
|
+
Requires-Dist: numba<=0.67.0,>=0.58; extra == "numba"
|
|
61
61
|
Requires-Dist: llvmlite; extra == "numba"
|
|
62
62
|
Provides-Extra: kanren
|
|
63
63
|
Requires-Dist: etuples; extra == "kanren"
|
|
@@ -50,7 +50,7 @@ dependencies = [
|
|
|
50
50
|
"setuptools>=59.0.0",
|
|
51
51
|
"scipy>=1,<2",
|
|
52
52
|
"numpy>=2.0",
|
|
53
|
-
"numba>=0.58,<=0.
|
|
53
|
+
"numba>=0.58,<=0.67.0",
|
|
54
54
|
"filelock>=3.15",
|
|
55
55
|
]
|
|
56
56
|
|
|
@@ -78,7 +78,7 @@ tests = [
|
|
|
78
78
|
]
|
|
79
79
|
rtd = ["sphinx>=5.1.0,<6", "pygments", "pydot"]
|
|
80
80
|
jax = ["jax", "jaxlib"]
|
|
81
|
-
numba = ["numba>=0.58,<=0.
|
|
81
|
+
numba = ["numba>=0.58,<=0.67.0", "llvmlite"]
|
|
82
82
|
kanren = [
|
|
83
83
|
"etuples",
|
|
84
84
|
"logical-unification",
|
|
@@ -131,7 +131,11 @@ filterwarnings =[
|
|
|
131
131
|
|
|
132
132
|
[tool.ruff]
|
|
133
133
|
line-length = 88
|
|
134
|
-
|
|
134
|
+
# _patch_list_to_tuple.py is copied verbatim from numba; keep it diffable upstream
|
|
135
|
+
exclude = [
|
|
136
|
+
"pytensor/_version.py",
|
|
137
|
+
"pytensor/link/numba/dispatch/_patch_list_to_tuple.py",
|
|
138
|
+
]
|
|
135
139
|
|
|
136
140
|
[tool.ruff.format]
|
|
137
141
|
docstring-code-format = true
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-
|
|
11
|
+
"date": "2026-09-07T16:04:36+0200",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "3.3.
|
|
14
|
+
"full-revisionid": "bb5967ab72cfc29ee9f47c4a2fd0aaeeb1695268",
|
|
15
|
+
"version": "3.3.1"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -524,7 +524,9 @@ JAX = Mode(
|
|
|
524
524
|
)
|
|
525
525
|
PYTORCH = Mode(
|
|
526
526
|
PytorchLinker(),
|
|
527
|
-
|
|
527
|
+
# `Composite` has no PyTorch dispatch (it has no `nfunc_spec` to look up in torch),
|
|
528
|
+
# and torch fuses its own kernels anyway.
|
|
529
|
+
RewriteDatabaseQuery(include=["fast_run"], exclude=["fusion"]),
|
|
528
530
|
)
|
|
529
531
|
|
|
530
532
|
MLX = Mode(
|
|
@@ -1335,8 +1335,8 @@ def _populate_grad_dict(var_to_app_to_idx, grad_dict, wrt, cost_name=None):
|
|
|
1335
1335
|
raise ValueError(
|
|
1336
1336
|
f"{node.op} returned the wrong number of gradient terms."
|
|
1337
1337
|
)
|
|
1338
|
-
# We can not enforce this, as
|
|
1339
|
-
#
|
|
1338
|
+
# We can not enforce this, as sparse Ops have an option to return a
|
|
1339
|
+
# structured grad for optimization reason.
|
|
1340
1340
|
|
|
1341
1341
|
# for ig, i in zip(input_grads, inputs):
|
|
1342
1342
|
# if (not isinstance(ig.type, (DisconnectedType, NullType)) and
|
|
@@ -45,13 +45,12 @@ _MOVED_FUNCTIONS = {
|
|
|
45
45
|
"graph_inputs",
|
|
46
46
|
"explicit_graph_inputs",
|
|
47
47
|
"vars_between",
|
|
48
|
-
"
|
|
48
|
+
"orphans_between",
|
|
49
49
|
"applys_between",
|
|
50
50
|
"apply_depends_on",
|
|
51
51
|
"truncated_graph_inputs",
|
|
52
52
|
"general_toposort",
|
|
53
53
|
"io_toposort",
|
|
54
|
-
"list_of_nodes",
|
|
55
54
|
"get_var_by_name",
|
|
56
55
|
}
|
|
57
56
|
|
|
@@ -43,7 +43,6 @@ from pytensor.graph.traversal import (
|
|
|
43
43
|
)
|
|
44
44
|
from pytensor.graph.utils import AssocList, InconsistencyError
|
|
45
45
|
from pytensor.misc.ordered_set import OrderedSet
|
|
46
|
-
from pytensor.utils import flatten
|
|
47
46
|
|
|
48
47
|
|
|
49
48
|
_logger = logging.getLogger("pytensor.graph.rewriting.basic")
|
|
@@ -705,6 +704,15 @@ class MergeOptimizer(GraphRewriter):
|
|
|
705
704
|
fgraph.attach_feature(MergeFeature())
|
|
706
705
|
|
|
707
706
|
def apply(self, fgraph):
|
|
707
|
+
def has_direct_destroyer(var):
|
|
708
|
+
"""Whether any direct client destroys `var` (view-chain destroyers not seen)."""
|
|
709
|
+
return any(
|
|
710
|
+
i in destroyed_idxs
|
|
711
|
+
for client, i in fgraph.clients[var]
|
|
712
|
+
if client.op.destroy_map
|
|
713
|
+
for destroyed_idxs in client.op.destroy_map.values()
|
|
714
|
+
)
|
|
715
|
+
|
|
708
716
|
sched = fgraph.merge_feature.scheduled
|
|
709
717
|
nb_fail = 0
|
|
710
718
|
t0 = time.perf_counter()
|
|
@@ -755,15 +763,17 @@ class MergeOptimizer(GraphRewriter):
|
|
|
755
763
|
continue
|
|
756
764
|
|
|
757
765
|
if hasattr(fgraph, "destroy_handler"):
|
|
758
|
-
#
|
|
759
|
-
#
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
766
|
+
# Merging two variables that both have a destroyer is
|
|
767
|
+
# always rejected by `DestroyHandler` validation
|
|
768
|
+
# ("multiple destroyers") -- skip those outright
|
|
769
|
+
# instead of paying a checkpoint + failed validate +
|
|
770
|
+
# revert per scheduled pair. A single-destroyer merge
|
|
771
|
+
# may still be feasible, and destroyers reachable only
|
|
772
|
+
# through view chains are rare: both are left to
|
|
773
|
+
# validation, keeping this check O(clients) with no
|
|
774
|
+
# droot recomputation.
|
|
775
|
+
if has_direct_destroyer(pairs[0][0]) and has_direct_destroyer(
|
|
776
|
+
pairs[0][1]
|
|
767
777
|
):
|
|
768
778
|
continue
|
|
769
779
|
|
|
@@ -145,12 +145,13 @@ def apply_ancestors(
|
|
|
145
145
|
graphs: Iterable[Variable],
|
|
146
146
|
blockers: Iterable[Variable] | None = None,
|
|
147
147
|
) -> Generator[Apply, None, None]:
|
|
148
|
-
"""Return the Apply nodes that contribute to those in given graphs
|
|
148
|
+
"""Return the Apply nodes that contribute to those in given graphs, excluding the owners of the blockers."""
|
|
149
149
|
seen = {None} # This filters out Variables without an owner
|
|
150
|
+
blockers = frozenset(blockers or ())
|
|
150
151
|
for var in ancestors(graphs, blockers):
|
|
151
152
|
# For multi-output nodes, we'll see multiple variables
|
|
152
153
|
# but we should only yield the Apply once
|
|
153
|
-
if (apply := var.owner) not in seen:
|
|
154
|
+
if var not in blockers and (apply := var.owner) not in seen:
|
|
154
155
|
yield apply
|
|
155
156
|
seen.add(apply)
|
|
156
157
|
return
|
|
@@ -4,6 +4,7 @@ import mlx.core as mx
|
|
|
4
4
|
|
|
5
5
|
from pytensor.link.mlx.dispatch.basic import mlx_funcify
|
|
6
6
|
from pytensor.tensor.linalg.solvers.general import Solve
|
|
7
|
+
from pytensor.tensor.linalg.solvers.psd import CholeskySolve
|
|
7
8
|
from pytensor.tensor.linalg.solvers.triangular import SolveTriangular
|
|
8
9
|
|
|
9
10
|
|
|
@@ -44,3 +45,22 @@ def mlx_funcify_SolveTriangular(op, node, **kwargs):
|
|
|
44
45
|
)
|
|
45
46
|
|
|
46
47
|
return solve_triangular
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@mlx_funcify.register(CholeskySolve)
|
|
51
|
+
def mlx_funcify_CholeskySolve(op, node, **kwargs):
|
|
52
|
+
lower = op.lower
|
|
53
|
+
c_dtype = getattr(mx, node.inputs[0].dtype)
|
|
54
|
+
b_dtype = getattr(mx, node.inputs[1].dtype)
|
|
55
|
+
|
|
56
|
+
# MLX has no cho_solve, so with A = L L.T we solve L y = b then L.T x = y.
|
|
57
|
+
def cho_solve(c, b):
|
|
58
|
+
c = c.astype(stream=mx.cpu, dtype=c_dtype)
|
|
59
|
+
b = b.astype(stream=mx.cpu, dtype=b_dtype)
|
|
60
|
+
c_T = mx.swapaxes(c, -1, -2, stream=mx.cpu)
|
|
61
|
+
L, L_T = (c, c_T) if lower else (c_T, c)
|
|
62
|
+
|
|
63
|
+
y = mx.linalg.solve_triangular(L, b, upper=False, stream=mx.cpu)
|
|
64
|
+
return mx.linalg.solve_triangular(L_T, y, upper=True, stream=mx.cpu)
|
|
65
|
+
|
|
66
|
+
return cho_solve
|