pytensor 3.2.4__tar.gz → 3.3.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-3.2.4/pytensor.egg-info → pytensor-3.3.0}/PKG-INFO +2 -1
- {pytensor-3.2.4 → pytensor-3.3.0}/pyproject.toml +11 -3
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/_version.py +3 -3
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/subtensor.py +7 -1
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/basic.py +23 -7
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/__init__.py +1 -0
- pytensor-3.2.4/pytensor/link/mlx/dispatch/scalar.py → pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/basic.py +9 -51
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/bessel.py +525 -0
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/erf.py +333 -0
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/erfcinv.py +150 -0
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/gamma.py +56 -0
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/helpers.py +62 -0
- pytensor-3.3.0/pytensor/link/mlx/dispatch/scalar/math.py +174 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/vectorize_codegen.py +6 -11
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/basic.py +6 -6
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/math.py +8 -1
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/extra_ops.py +4 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/pad.py +214 -226
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/math.py +31 -13
- {pytensor-3.2.4 → pytensor-3.3.0/pytensor.egg-info}/PKG-INFO +2 -1
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor.egg-info/SOURCES.txt +8 -1
- {pytensor-3.2.4 → pytensor-3.3.0}/LICENSE.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/MANIFEST.in +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/README.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/.templates/layout.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/.templates/nb-badges.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/.templates/rendered_citation.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/LICENSE.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/README.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/_drafts/benchmark_mlx_v_jax_corrected.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/_thumbnails/autodiff/vector_jacobian_product.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/acknowledgement.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/bcast.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/bcast.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/blog.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/conf.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/core_development_guide.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/css.inc +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/dev_start_guide.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/environment.yml +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/apply.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/apply.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/apply2.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/ctype.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/extending_faq.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/graphstructures.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/inplace.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/op.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/other_ops.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/pipeline.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/scan.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/tips.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/type.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/unification_kanren.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/unittest.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/extending/using_params.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/faq.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/applications/normalizing_flows_in_pytensor.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/applications/tiny_transformer_llm.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/autodiff/vector_jacobian_product.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/introduction/pytensor_intro.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/optimize/root.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/page_footer.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/glossary.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/Elman_srnn.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/PyTensor.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/PyTensor_logo.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/binder.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/blocksparse.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/colab.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/github.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/lstm.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/talk2010.gif +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/images/talk2010.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/install.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/internal/how_to_release.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/internal/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/introduction.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/function.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/io.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/mode.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/ops.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/compile/shared.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/config.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/features.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/graph.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/op.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/replace.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/type.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/graph/utils.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/printing.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/scalar/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/scan.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/sparse/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/basic.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/bcast.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/fft.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/functional.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/io.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/linalg.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/optimize.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/random.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/tensor/utils.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/typed_list.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/xtensor/index.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/xtensor/linalg.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/xtensor/math.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/xtensor/module_functions.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/xtensor/random.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/xtensor/signal.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/library/xtensor/type.md +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/links.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/optimizations.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/pylintrc +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/robots.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/troubleshooting.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/adding.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/apply.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/apply.svg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/bcast.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/conditions.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/examples.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/gradients.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/index.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/logistic.gp +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/logistic.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/loop.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/modes.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/prng.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/profiling.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/sparse.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/doc/user_guide.rst +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/_sparse_lazy.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/alloc.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/blockwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/core.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/diagonal.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/dimshuffle.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/dot.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/orthogonal.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/permutation.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/positive_definite.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/reshape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/selection.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/specify.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/subtensor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/symmetric.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/assumptions/triangular.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/bin/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/breakpoint.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/aliasing.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/builders.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/compiledir.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/compilelock.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/debug/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/debug/debugmode.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/debug/dump.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/debug/monitormode.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/debug/nanguardmode.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/debug/profiling.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/executor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/inner_function.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/io.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/maker.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/mode.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/rebuild.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/rewriting.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/configdefaults.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/configparser.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/html/template.html +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/gradient.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/features.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/fg.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/null_type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/op.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/replace.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/rewriting/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/rewriting/reachability.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/traversal.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/graph/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/ifelse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/ipython.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/cutils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/cvm.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/interface.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/op.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/params_type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/c/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/linalg/constructors.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/linalg/solvers.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/linker.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/jax/ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/blas.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/blockwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/einsum.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/linalg/solvers.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/pad.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/signal/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/signal/conv.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/sort.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/subtensor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/dispatch/tensor_basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/mlx/linker.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/cache.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/_llvmlite_self_ref.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/_patch_pointer_add.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/blockwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/compile_ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/constructors.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/dispatch.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/eigen.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/qz.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/schur.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/decomposition/svd.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/cholesky.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/dispatch.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/general.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/hermitian.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/linear_control.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/lu_solve.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/posdef.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/symmetric.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/triangular.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/tridiagonal.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/solvers/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/scalar.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/sort.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/sparse/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/sparse/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/sparse/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/sparse/variable.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/string_codegen.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/subtensor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/dispatch/typed_list.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/numba/linker.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/pytorch/linker.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/link/vm.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/check_blas.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/frozendict.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/npy_2_compat.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/printing.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/py.typed +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/raise_op.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/loop.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/op.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/db.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/inner_graph.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/inplace.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/io.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/merge.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/push_out.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/trace.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/rewriting/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/scan/views.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/linalg.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/sparse/variable.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/_core.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/batched.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/blas_c.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/c_code/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/c_code/alt_blas_common.h +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/c_code/alt_blas_template.c +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/c_code/blas_headers.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/c_code/codegen.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/gemm.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/gemv.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blas/ger.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/blockwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/einsum.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/fft.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/fourier.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/functional.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/interpolate.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/_lazy.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/constructors.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/decomposition/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/decomposition/cholesky.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/decomposition/eigen.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/decomposition/lu.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/decomposition/qr.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/decomposition/schur.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/decomposition/svd.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/dtype_utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/inverse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/products.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/core.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/general.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/linear_control.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/lstsq.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/psd.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/triangular.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/solvers/tridiagonal.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/linalg/summary.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/nlinalg.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/optimize.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/op.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/rewriting/numba.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/random/variable.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/reshape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/assumptions.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/fused_elemwise.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/linalg/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/linalg/decomposition.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/linalg/inverse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/linalg/products.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/linalg/solvers.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/linalg/summary.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/linalg/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/numba.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/ofg.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/optimize.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/reshape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/subtensor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/subtensor_lift.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/signal/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/signal/conv.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/slinalg.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/sort.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/special.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/subtensor.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/symbolic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/type_other.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/var.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/variable.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/typed_list/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/typed_list/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/indexing.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/linalg.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/random/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/random/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/random/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/random/variable.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/reduction.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/__init__.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/indexing.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/math.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/reduction.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/utils.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/rewriting/vectorization.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/shape.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/signal.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/type.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor/xtensor/vectorization.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor.egg-info/requires.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/scripts/mypy-failing.txt +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/setup.cfg +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/setup.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_basic.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_breakpoint.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_config.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_gradient.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_ifelse.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_printing.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_raise_op.py +0 -0
- {pytensor-3.2.4 → pytensor-3.3.0}/tests/test_rop.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pytensor
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.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
|
|
@@ -24,6 +24,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.13
|
|
26
26
|
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Programming Language :: Python :: Free Threading :: 1 - Unstable
|
|
27
28
|
Requires-Python: <3.15,>=3.12
|
|
28
29
|
Description-Content-Type: text/x-rst
|
|
29
30
|
License-File: LICENSE.txt
|
|
@@ -33,6 +33,7 @@ classifiers = [
|
|
|
33
33
|
"Programming Language :: Python :: 3.12",
|
|
34
34
|
"Programming Language :: Python :: 3.13",
|
|
35
35
|
"Programming Language :: Python :: 3.14",
|
|
36
|
+
"Programming Language :: Python :: Free Threading :: 1 - Unstable",
|
|
36
37
|
]
|
|
37
38
|
|
|
38
39
|
keywords = [
|
|
@@ -185,11 +186,18 @@ files = ["pytensor", "tests"]
|
|
|
185
186
|
build = "*"
|
|
186
187
|
# Uncomment to skip builds that compile but fail when trying to test (maybe due to incompatibility with runner)
|
|
187
188
|
# archs = ["auto64"]
|
|
188
|
-
# Disable any-platform (pp*)
|
|
189
|
+
# Disable any-platform (pp*) and 32-bit builds
|
|
189
190
|
# Additional options to consider: "*musllinux*"
|
|
190
|
-
skip = ["pp*", "*-win32", "*-manylinux_i686"
|
|
191
|
+
skip = ["pp*", "*-win32", "*-manylinux_i686"]
|
|
192
|
+
# Free-threaded (cp*t-*) wheels are built by default. The compiled extensions
|
|
193
|
+
# are not marked free-threading-safe, so importing them re-enables the GIL
|
|
194
|
+
# (with a warning). That's fine: they're no longer loaded by default.
|
|
191
195
|
build-frontend = "build"
|
|
192
|
-
|
|
196
|
+
# Import the compiled extensions and evaluate a function to check the wheel loads and
|
|
197
|
+
# runs everywhere, including free-threaded builds. cxx="" disables the C backend (the
|
|
198
|
+
# minimal wheel-test env has no libpython to link a runtime-compiled thunk against) and
|
|
199
|
+
# FAST_COMPILE avoids numba, which crashes on free-threaded Windows.
|
|
200
|
+
test-command = '''python -c "import pytensor; pytensor.config.cxx = ''; import pytensor.tensor as pt; print(pytensor.__version__); from pytensor.scan import scan_perform; print(scan_perform.get_version()); x = pt.vector(); f = pytensor.function([x], (x * 2).sum(), mode='FAST_COMPILE'); assert float(f([1.0, 2.0, 3.0])) == 12.0"'''
|
|
193
201
|
test-skip = ["*musllinux*", "*i686*"]
|
|
194
202
|
|
|
195
203
|
# Testing seems to be running into issues locating libs where expected
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-08-
|
|
11
|
+
"date": "2026-08-12T10:16:27+0200",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "3.
|
|
14
|
+
"full-revisionid": "aa1bc7772eb11ed8def2814374aeb5da03da590c",
|
|
15
|
+
"version": "3.3.0"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import jax.numpy as jnp
|
|
2
|
+
|
|
1
3
|
from pytensor.link.jax.dispatch.basic import jax_funcify
|
|
2
4
|
from pytensor.tensor.subtensor import (
|
|
3
5
|
AdvancedIncSubtensor,
|
|
@@ -60,7 +62,11 @@ def jax_funcify_IncSubtensor(op, node, **kwargs):
|
|
|
60
62
|
indices = indices[0]
|
|
61
63
|
|
|
62
64
|
if isinstance(op, AdvancedIncSubtensor):
|
|
63
|
-
|
|
65
|
+
# jax_typify downgrades 0d arrays to Python scalars, which have no .shape,
|
|
66
|
+
# so re-arrayify y for a check that is written against array values.
|
|
67
|
+
op._check_runtime_broadcast_of_vector_index(
|
|
68
|
+
node, x, jnp.asarray(y), indices
|
|
69
|
+
)
|
|
64
70
|
|
|
65
71
|
return jax_fn(x, indices, y)
|
|
66
72
|
|
|
@@ -15,25 +15,36 @@ from pytensor.link.utils import fgraph_to_python
|
|
|
15
15
|
from pytensor.raise_op import Assert, CheckAndRaise
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
def float64_supported():
|
|
19
|
+
"""Return whether the current default device can operate on float64.
|
|
20
|
+
|
|
21
|
+
MLX implements float64 on the CPU only; the Metal backend rejects it outright.
|
|
22
|
+
"""
|
|
23
|
+
return mx.default_device() == mx.cpu
|
|
24
|
+
|
|
25
|
+
|
|
18
26
|
def convert_dtype_to_mlx(dtype_str, auto_cast_unsupported=True):
|
|
19
27
|
"""Convert PyTensor dtype strings to MLX dtype objects.
|
|
20
28
|
|
|
21
29
|
MLX expects dtype objects rather than string literals for type conversion.
|
|
22
30
|
This function maps common dtype strings to their MLX equivalents.
|
|
23
31
|
|
|
32
|
+
float64 survives when the default device supports it and is narrowed to float32
|
|
33
|
+
otherwise. complex128 is always narrowed, MLX having no wider complex type.
|
|
34
|
+
|
|
24
35
|
Parameters
|
|
25
36
|
----------
|
|
26
37
|
dtype_str : str or MLX dtype
|
|
27
38
|
The dtype to convert
|
|
28
|
-
auto_cast_unsupported : bool
|
|
29
|
-
If True,
|
|
39
|
+
auto_cast_unsupported : bool, optional
|
|
40
|
+
If True, narrow dtypes the current device cannot handle, warning as it does so.
|
|
41
|
+
If False, return the requested dtype and let any later failure surface. Default
|
|
42
|
+
True.
|
|
30
43
|
|
|
31
44
|
Returns
|
|
32
45
|
-------
|
|
33
46
|
MLX dtype object
|
|
34
47
|
"""
|
|
35
|
-
import warnings
|
|
36
|
-
|
|
37
48
|
if isinstance(dtype_str, str):
|
|
38
49
|
if dtype_str == "bool":
|
|
39
50
|
return mx.bool_
|
|
@@ -58,11 +69,12 @@ def convert_dtype_to_mlx(dtype_str, auto_cast_unsupported=True):
|
|
|
58
69
|
elif dtype_str == "float32":
|
|
59
70
|
return mx.float32
|
|
60
71
|
elif dtype_str == "float64":
|
|
61
|
-
if auto_cast_unsupported:
|
|
72
|
+
if auto_cast_unsupported and not float64_supported():
|
|
62
73
|
warnings.warn(
|
|
63
74
|
"MLX does not support float64 on GPU. Automatically casting to float32. "
|
|
64
|
-
"This may result in reduced precision. To
|
|
65
|
-
"
|
|
75
|
+
"This may result in reduced precision. To keep float64, run on the CPU "
|
|
76
|
+
"device with mx.set_default_device(mx.cpu); to avoid this warning, use "
|
|
77
|
+
"float32 or set floatX='float32' in PyTensor config.",
|
|
66
78
|
UserWarning,
|
|
67
79
|
stacklevel=3,
|
|
68
80
|
)
|
|
@@ -116,6 +128,10 @@ def mlx_typify(data, **kwargs):
|
|
|
116
128
|
|
|
117
129
|
@mlx_typify.register(np.ndarray)
|
|
118
130
|
def mlx_typify_tensor(data, dtype=None, **kwargs):
|
|
131
|
+
# mx.array narrows float64 input to float32 unless the dtype is named explicitly,
|
|
132
|
+
# and it does so on the CPU too, where float64 is perfectly usable
|
|
133
|
+
if dtype is None and data.dtype == np.float64 and float64_supported():
|
|
134
|
+
dtype = mx.float64
|
|
119
135
|
return _nan_safe_constant(data, dtype=dtype)
|
|
120
136
|
|
|
121
137
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from pytensor.link.mlx.dispatch.scalar import basic, bessel, erf, erfcinv, gamma, math
|
|
@@ -5,16 +5,15 @@ import mlx.core as mx
|
|
|
5
5
|
from pytensor.link.mlx.dispatch.basic import convert_dtype_to_mlx, mlx_funcify
|
|
6
6
|
from pytensor.scalar.basic import (
|
|
7
7
|
Cast,
|
|
8
|
+
Clip,
|
|
8
9
|
Composite,
|
|
9
10
|
Identity,
|
|
10
11
|
Mod,
|
|
11
12
|
ScalarOp,
|
|
12
13
|
Second,
|
|
13
14
|
)
|
|
14
|
-
from pytensor.scalar.math import Erfc, Erfcx, Log1mexp, Sigmoid, Softplus
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
# MLX name overrides for nfunc_spec names that don't match mlx.core
|
|
18
17
|
MLX_NFUNC_OVERRIDES = {
|
|
19
18
|
"true_divide": "divide",
|
|
20
19
|
"invert": "bitwise_invert",
|
|
@@ -96,6 +95,14 @@ def mlx_funcify_Mod(op, **kwargs):
|
|
|
96
95
|
return mlx_mod
|
|
97
96
|
|
|
98
97
|
|
|
98
|
+
@mlx_funcify.register(Clip)
|
|
99
|
+
def mlx_funcify_Clip(op, **kwargs):
|
|
100
|
+
def clip(x, min, max):
|
|
101
|
+
return mx.where(x < min, min, mx.where(x > max, max, x))
|
|
102
|
+
|
|
103
|
+
return clip
|
|
104
|
+
|
|
105
|
+
|
|
99
106
|
@mlx_funcify.register(Identity)
|
|
100
107
|
def mlx_funcify_Identity(op, **kwargs):
|
|
101
108
|
def identity(x):
|
|
@@ -115,55 +122,6 @@ def mlx_funcify_Second(op, **kwargs):
|
|
|
115
122
|
return second
|
|
116
123
|
|
|
117
124
|
|
|
118
|
-
@mlx_funcify.register(Sigmoid)
|
|
119
|
-
def mlx_funcify_Sigmoid(op, **kwargs):
|
|
120
|
-
return mx.sigmoid
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
@mlx_funcify.register(Erfc)
|
|
124
|
-
def mlx_funcify_Erfc(op, **kwargs):
|
|
125
|
-
def erfc(x):
|
|
126
|
-
return 1.0 - mx.erf(x)
|
|
127
|
-
|
|
128
|
-
return erfc
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
@mlx_funcify.register(Erfcx)
|
|
132
|
-
def mlx_funcify_Erfcx(op, **kwargs):
|
|
133
|
-
def erfcx(x):
|
|
134
|
-
return mx.exp(x * x) * (1.0 - mx.erf(x))
|
|
135
|
-
|
|
136
|
-
return erfcx
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
@mlx_funcify.register(Softplus)
|
|
140
|
-
def mlx_funcify_Softplus(op, **kwargs):
|
|
141
|
-
def softplus(x):
|
|
142
|
-
return mx.where(
|
|
143
|
-
x < -37.0,
|
|
144
|
-
mx.exp(x),
|
|
145
|
-
mx.where(
|
|
146
|
-
x < 18.0,
|
|
147
|
-
mx.log1p(mx.exp(x)),
|
|
148
|
-
mx.where(
|
|
149
|
-
x < 33.3,
|
|
150
|
-
x + mx.exp(-x),
|
|
151
|
-
x,
|
|
152
|
-
),
|
|
153
|
-
),
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
return softplus
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
@mlx_funcify.register(Log1mexp)
|
|
160
|
-
def mlx_funcify_Log1mexp(op, node, **kwargs):
|
|
161
|
-
def log1mexp(x):
|
|
162
|
-
return mx.where(x < mx.log(0.5), mx.log1p(-mx.exp(x)), mx.log(-mx.expm1(x)))
|
|
163
|
-
|
|
164
|
-
return log1mexp
|
|
165
|
-
|
|
166
|
-
|
|
167
125
|
@mlx_funcify.register(Composite)
|
|
168
126
|
def mlx_funcify_Composite(op, node=None, **kwargs):
|
|
169
127
|
return mlx_funcify(op.fgraph, squeeze_output=True)
|