pytensor 2.36.0__tar.gz → 2.36.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-2.36.0/pytensor.egg-info → pytensor-2.36.1}/PKG-INFO +1 -1
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/_version.py +3 -3
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/cache.py +1 -1
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/scalar.py +9 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/basic.py +17 -57
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/math.py +21 -70
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/__init__.py +7 -0
- pytensor-2.36.1/pytensor/tensor/reshape.py +524 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/__init__.py +1 -0
- pytensor-2.36.1/pytensor/tensor/rewriting/reshape.py +49 -0
- {pytensor-2.36.0 → pytensor-2.36.1/pytensor.egg-info}/PKG-INFO +1 -1
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/SOURCES.txt +2 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/LICENSE.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/MANIFEST.in +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/README.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/layout.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/nb-badges.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/rendered_citation.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/LICENSE.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/README.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/_drafts/benchmark_mlx_v_jax_corrected.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/_thumbnails/autodiff/vector_jacobian_product.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/acknowledgement.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/bcast.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/bcast.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/blog.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/conf.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/core_development_guide.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/css.inc +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/dev_start_guide.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/environment.yml +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/apply.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/apply.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/apply2.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/ctype.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/extending_faq.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/graphstructures.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/inplace.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/op.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/other_ops.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/pipeline.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/scan.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/tips.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/type.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/unittest.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/using_params.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/faq.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/applications/normalizing_flows_in_pytensor.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/autodiff/vector_jacobian_product.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/introduction/pytensor_intro.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/optimize/root.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/page_footer.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/glossary.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/Elman_srnn.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/PyTensor.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/PyTensor_logo.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/binder.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/blocksparse.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/colab.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/github.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/lstm.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/talk2010.gif +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/talk2010.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/install.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/internal/how_to_release.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/internal/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/introduction.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/function.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/io.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/mode.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/ops.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/shared.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/config.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/features.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/graph.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/op.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/replace.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/type.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/utils.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/printing.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/scalar/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/scan.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/sparse/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/basic.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/bcast.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/conv.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/fft.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/functional.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/io.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/optimize.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/random/distributions.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/random/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/utils.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/typed_list.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/index.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/linalg.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/math.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/module_functions.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/random.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/type.md +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/links.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/optimizations.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/pylintrc +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/robots.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/troubleshooting.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/adding.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/apply.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/apply.svg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/bcast.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/conditions.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/examples.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/gradients.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/index.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/logistic.gp +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/logistic.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/loop.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/modes.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/prng.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/profiling.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/sparse.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/doc/user_guide.rst +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pyproject.toml +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/bin/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/breakpoint.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/builders.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/compiledir.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/compilelock.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/debugmode.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/function/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/function/pfunc.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/function/types.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/io.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/mode.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/monitormode.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/nanguardmode.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/profiling.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/configdefaults.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/configparser.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/html/template.html +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/gradient.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/features.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/fg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/null_type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/op.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/replace.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/traversal.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/ifelse.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/ipython.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/cutils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/cvm.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/interface.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/op.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/params_type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/slinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/linker.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/blockwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/core.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/elemwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/extra_ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/nlinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/signal/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/signal/conv.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/slinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/sort.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/subtensor.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/linker.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/blockwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/compile_ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/cholesky.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/general.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/lu_solve.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/norm.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/posdef.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/symmetric.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/triangular.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/tridiagonal.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/scalar.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/slinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/sort.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/sparse.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/subtensor.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/typed_list.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/linker.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/slinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/linker.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/vm.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/check_blas.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/frozendict.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/npy_2_compat.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/printing.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/py.typed +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/raise_op.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/loop.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/op.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/rewriting.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/views.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/linalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/variable.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/solve/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/solve/rewriting.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/solve/tridiagonal.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blas.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blas_c.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blas_headers.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blockwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/c_code/dimshuffle.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/conv/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/conv/abstract_conv.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/einsum.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/extra_ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/fft.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/fourier.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/functional.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/interpolate.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/linalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/nlinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/optimize.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/pad.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/op.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/numba.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/var.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/elemwise.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/linalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/numba.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/ofg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/subtensor.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/subtensor_lift.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/signal/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/signal/conv.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/slinalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/sort.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/special.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/subtensor.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/type_other.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/var.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/variable.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/updates.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/indexing.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/linalg.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/random.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/reduction.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/__init__.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/basic.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/indexing.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/math.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/reduction.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/utils.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/vectorization.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/shape.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/type.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/vectorization.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/requires.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/scripts/mypy-failing.txt +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/setup.cfg +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/setup.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_breakpoint.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_config.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_gradient.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_ifelse.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_printing.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_raise_op.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_rop.py +0 -0
- {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_updates.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-12-
|
|
11
|
+
"date": "2025-12-21T14:56:52+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.36.
|
|
14
|
+
"full-revisionid": "409a4b2a02e64acc0ca12cd0e046e99fd6f535b9",
|
|
15
|
+
"version": "2.36.1"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -11,7 +11,7 @@ from pytensor.configdefaults import config
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
NUMBA_CACHE_PATH = config.base_compiledir / "numba"
|
|
14
|
-
NUMBA_CACHE_PATH.mkdir(exist_ok=True)
|
|
14
|
+
NUMBA_CACHE_PATH.mkdir(parents=True, exist_ok=True)
|
|
15
15
|
CACHED_SRC_FUNCTIONS: WeakKeyDictionary[Callable, str] = WeakKeyDictionary()
|
|
16
16
|
|
|
17
17
|
|
|
@@ -5,6 +5,7 @@ import torch
|
|
|
5
5
|
from pytensor.link.pytorch.dispatch.basic import pytorch_funcify
|
|
6
6
|
from pytensor.scalar.basic import (
|
|
7
7
|
Cast,
|
|
8
|
+
Clip,
|
|
8
9
|
Invert,
|
|
9
10
|
ScalarOp,
|
|
10
11
|
)
|
|
@@ -71,6 +72,14 @@ def pytorch_funcify_Softplus(op, node, **kwargs):
|
|
|
71
72
|
return torch.nn.Softplus()
|
|
72
73
|
|
|
73
74
|
|
|
75
|
+
@pytorch_funcify.register(Clip)
|
|
76
|
+
def pytorch_funcify_Clip(op, node, **kwargs):
|
|
77
|
+
def clip(x, min_val, max_val):
|
|
78
|
+
return torch.where(x < min_val, min_val, torch.where(x > max_val, max_val, x))
|
|
79
|
+
|
|
80
|
+
return clip
|
|
81
|
+
|
|
82
|
+
|
|
74
83
|
@pytorch_funcify.register(ScalarLoop)
|
|
75
84
|
def pytorch_funicify_ScalarLoop(op, node, **kwargs):
|
|
76
85
|
update = pytorch_funcify(op.fgraph, **kwargs)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import warnings
|
|
3
|
+
from functools import reduce
|
|
3
4
|
from itertools import chain
|
|
4
5
|
|
|
5
6
|
import numpy as np
|
|
@@ -16,7 +17,6 @@ from pytensor.graph.type import HasShape
|
|
|
16
17
|
from pytensor.graph.utils import MissingInputError, TestValueError
|
|
17
18
|
from pytensor.scan.op import Scan, ScanInfo
|
|
18
19
|
from pytensor.scan.utils import expand_empty, safe_new, until
|
|
19
|
-
from pytensor.tensor.basic import get_underlying_scalar_constant_value
|
|
20
20
|
from pytensor.tensor.exceptions import NotScalarConstantError
|
|
21
21
|
from pytensor.tensor.math import minimum
|
|
22
22
|
from pytensor.tensor.shape import shape_padleft
|
|
@@ -143,31 +143,6 @@ def get_updates_and_outputs(ls):
|
|
|
143
143
|
raise ValueError(error_msg)
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
def isNaN_or_Inf_or_None(x):
|
|
147
|
-
isNone = x is None
|
|
148
|
-
try:
|
|
149
|
-
isNaN = np.isnan(x)
|
|
150
|
-
isInf = np.isinf(x)
|
|
151
|
-
isStr = isinstance(x, str)
|
|
152
|
-
except Exception:
|
|
153
|
-
isNaN = False
|
|
154
|
-
isInf = False
|
|
155
|
-
isStr = False
|
|
156
|
-
if not isNaN and not isInf:
|
|
157
|
-
try:
|
|
158
|
-
val = get_underlying_scalar_constant_value(x)
|
|
159
|
-
isInf = np.isinf(val)
|
|
160
|
-
isNaN = np.isnan(val)
|
|
161
|
-
except Exception:
|
|
162
|
-
isNaN = False
|
|
163
|
-
isInf = False
|
|
164
|
-
if isinstance(x, Constant) and isinstance(x.data, str):
|
|
165
|
-
isStr = True
|
|
166
|
-
else:
|
|
167
|
-
isStr = False
|
|
168
|
-
return isNone or isNaN or isInf or isStr
|
|
169
|
-
|
|
170
|
-
|
|
171
146
|
def _manage_output_api_change(outputs, updates, return_updates):
|
|
172
147
|
if return_updates:
|
|
173
148
|
warnings.warn(
|
|
@@ -505,7 +480,7 @@ def scan(
|
|
|
505
480
|
|
|
506
481
|
# This helper eagerly skips the Scan if n_steps is known to be 1
|
|
507
482
|
single_step_requested = False
|
|
508
|
-
if isinstance(n_steps,
|
|
483
|
+
if isinstance(n_steps, int | float):
|
|
509
484
|
single_step_requested = n_steps == 1
|
|
510
485
|
else:
|
|
511
486
|
try:
|
|
@@ -676,33 +651,20 @@ def scan(
|
|
|
676
651
|
if nw_name is not None:
|
|
677
652
|
nw_seq.name = nw_name
|
|
678
653
|
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
if len(lengths_vec) == 0:
|
|
688
|
-
# ^ No information about the number of steps
|
|
689
|
-
raise ValueError(
|
|
690
|
-
"No information about the number of steps "
|
|
691
|
-
"provided. Either provide a value for "
|
|
692
|
-
"n_steps argument of scan or provide an input "
|
|
693
|
-
"sequence"
|
|
694
|
-
)
|
|
695
|
-
|
|
696
|
-
# If the user has provided the number of steps, do that regardless ( and
|
|
697
|
-
# raise an error if the sequences are not long enough )
|
|
698
|
-
if isNaN_or_Inf_or_None(n_steps):
|
|
699
|
-
actual_n_steps = lengths_vec[0]
|
|
700
|
-
for contestant in lengths_vec[1:]:
|
|
701
|
-
actual_n_steps = minimum(actual_n_steps, contestant)
|
|
654
|
+
if n_steps is None:
|
|
655
|
+
if not scan_seqs:
|
|
656
|
+
raise ValueError(
|
|
657
|
+
"No information about the number of steps provided. "
|
|
658
|
+
"Either provide a value for n_steps argument of scan or provide an input sequence."
|
|
659
|
+
)
|
|
660
|
+
actual_n_steps = reduce(minimum, [seq.shape[0] for seq in scan_seqs])
|
|
702
661
|
else:
|
|
703
|
-
actual_n_steps = pt.as_tensor(n_steps)
|
|
662
|
+
actual_n_steps = pt.as_tensor(n_steps, dtype="int64", ndim=0)
|
|
704
663
|
|
|
664
|
+
# Since we've added all sequences now we need to level them off based on
|
|
665
|
+
# n_steps or their different shapes
|
|
705
666
|
scan_seqs = [seq[:actual_n_steps] for seq in scan_seqs]
|
|
667
|
+
|
|
706
668
|
# Conventions :
|
|
707
669
|
# mit_mot = multiple input taps, multiple output taps ( only provided
|
|
708
670
|
# by the gradient function )
|
|
@@ -899,10 +861,8 @@ def scan(
|
|
|
899
861
|
raw_inner_outputs = fn(*args)
|
|
900
862
|
|
|
901
863
|
condition, outputs, updates = get_updates_and_outputs(raw_inner_outputs)
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
else:
|
|
905
|
-
as_while = False
|
|
864
|
+
as_while = condition is not None
|
|
865
|
+
|
|
906
866
|
##
|
|
907
867
|
# Step 3. Check if we actually need scan and remove it if we don't
|
|
908
868
|
##
|
|
@@ -934,7 +894,7 @@ def scan(
|
|
|
934
894
|
|
|
935
895
|
# extract still missing inputs (there still might be so) and add them
|
|
936
896
|
# as non sequences at the end of our args
|
|
937
|
-
if
|
|
897
|
+
if as_while:
|
|
938
898
|
outputs.append(condition)
|
|
939
899
|
fake_nonseqs = [x.type() for x in non_seqs]
|
|
940
900
|
fake_outputs = clone_replace(
|
|
@@ -1252,8 +1212,8 @@ def scan(
|
|
|
1252
1212
|
rightOrder = (
|
|
1253
1213
|
mit_sot_rightOrder
|
|
1254
1214
|
+ sit_sot_rightOrder
|
|
1255
|
-
+ untraced_sit_sot_rightOrder
|
|
1256
1215
|
+ nit_sot_rightOrder
|
|
1216
|
+
+ untraced_sit_sot_rightOrder
|
|
1257
1217
|
)
|
|
1258
1218
|
scan_out_list = [None] * len(rightOrder)
|
|
1259
1219
|
for idx, pos in enumerate(rightOrder):
|
|
@@ -41,7 +41,7 @@ def structured_elemwise(tensor_op):
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
@structured_elemwise(ptm.abs)
|
|
44
|
-
def
|
|
44
|
+
def abs(x):
|
|
45
45
|
"""
|
|
46
46
|
Compute abs(x) for all non-zero elements of x.
|
|
47
47
|
"""
|
|
@@ -61,13 +61,6 @@ def structured_exp(x):
|
|
|
61
61
|
"""
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
@structured_elemwise(ptm.exp2)
|
|
65
|
-
def structured_exp2(x):
|
|
66
|
-
"""
|
|
67
|
-
Compute exp2(x) for all non-zero elements of x.
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
|
|
71
64
|
@structured_elemwise(ptm.log)
|
|
72
65
|
def structured_log(x):
|
|
73
66
|
"""
|
|
@@ -75,20 +68,6 @@ def structured_log(x):
|
|
|
75
68
|
"""
|
|
76
69
|
|
|
77
70
|
|
|
78
|
-
@structured_elemwise(ptm.log2)
|
|
79
|
-
def structured_log2(x):
|
|
80
|
-
"""
|
|
81
|
-
Compute log2(x) for all non-zero elements of x.
|
|
82
|
-
"""
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
@structured_elemwise(ptm.log10)
|
|
86
|
-
def structured_log10(x):
|
|
87
|
-
"""
|
|
88
|
-
Compute log10(x) for all non-zero elements of x.
|
|
89
|
-
"""
|
|
90
|
-
|
|
91
|
-
|
|
92
71
|
@structured_elemwise(ptm.pow)
|
|
93
72
|
def structured_pow(x, y):
|
|
94
73
|
"""
|
|
@@ -118,161 +97,133 @@ def structured_add(x, y):
|
|
|
118
97
|
|
|
119
98
|
|
|
120
99
|
@structured_elemwise(ptm.sin)
|
|
121
|
-
def
|
|
100
|
+
def sin(x):
|
|
122
101
|
"""
|
|
123
102
|
Compute sin(x) for all non-zero elements of x.
|
|
124
103
|
"""
|
|
125
104
|
|
|
126
105
|
|
|
127
106
|
@structured_elemwise(ptm.sinh)
|
|
128
|
-
def
|
|
107
|
+
def sinh(x):
|
|
129
108
|
"""
|
|
130
109
|
Compute sinh(x) for all non-zero elements of x.
|
|
131
110
|
"""
|
|
132
111
|
|
|
133
112
|
|
|
134
113
|
@structured_elemwise(ptm.arcsin)
|
|
135
|
-
def
|
|
114
|
+
def arcsin(x):
|
|
136
115
|
"""
|
|
137
116
|
Compute arcsin(x) for all non-zero elements of x.
|
|
138
117
|
"""
|
|
139
118
|
|
|
140
119
|
|
|
141
120
|
@structured_elemwise(ptm.arcsinh)
|
|
142
|
-
def
|
|
121
|
+
def arcsinh(x):
|
|
143
122
|
"""
|
|
144
123
|
Compute arcsinh(x) for all non-zero elements of x.
|
|
145
124
|
"""
|
|
146
125
|
|
|
147
126
|
|
|
148
|
-
@structured_elemwise(ptm.cos)
|
|
149
|
-
def structured_cos(x):
|
|
150
|
-
"""
|
|
151
|
-
Compute cos(x) for all non-zero elements of x.
|
|
152
|
-
"""
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
@structured_elemwise(ptm.cosh)
|
|
156
|
-
def structured_cosh(x):
|
|
157
|
-
"""
|
|
158
|
-
Compute cosh(x) for all non-zero elements of x.
|
|
159
|
-
"""
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
@structured_elemwise(ptm.arccos)
|
|
163
|
-
def structured_arccos(x):
|
|
164
|
-
"""
|
|
165
|
-
Compute arccos(x) for all non-zero elements of x.
|
|
166
|
-
"""
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
@structured_elemwise(ptm.arccosh)
|
|
170
|
-
def structured_arccosh(x):
|
|
171
|
-
"""
|
|
172
|
-
Compute arccosh(x) for all non-zero elements of x.
|
|
173
|
-
"""
|
|
174
|
-
|
|
175
|
-
|
|
176
127
|
@structured_elemwise(ptm.tan)
|
|
177
|
-
def
|
|
128
|
+
def tan(x):
|
|
178
129
|
"""
|
|
179
130
|
Compute tan(x) for all non-zero elements of x.
|
|
180
131
|
"""
|
|
181
132
|
|
|
182
133
|
|
|
183
134
|
@structured_elemwise(ptm.tanh)
|
|
184
|
-
def
|
|
135
|
+
def tanh(x):
|
|
185
136
|
"""
|
|
186
137
|
Compute tanh(x) for all non-zero elements of x.
|
|
187
138
|
"""
|
|
188
139
|
|
|
189
140
|
|
|
190
141
|
@structured_elemwise(ptm.arctan)
|
|
191
|
-
def
|
|
142
|
+
def arctan(x):
|
|
192
143
|
"""
|
|
193
144
|
Compute arctan(x) for all non-zero elements of x.
|
|
194
145
|
"""
|
|
195
146
|
|
|
196
147
|
|
|
197
148
|
@structured_elemwise(ptm.arctanh)
|
|
198
|
-
def
|
|
149
|
+
def arctanh(x):
|
|
199
150
|
"""
|
|
200
151
|
Compute arctanh(x) for all non-zero elements of x.
|
|
201
152
|
"""
|
|
202
153
|
|
|
203
154
|
|
|
204
155
|
@structured_elemwise(ptm.round_half_to_even)
|
|
205
|
-
def
|
|
156
|
+
def rint(x):
|
|
206
157
|
"""
|
|
207
158
|
Compute round_half_to_even(x) for all non-zero elements of x.
|
|
208
159
|
"""
|
|
209
160
|
|
|
210
161
|
|
|
211
162
|
@structured_elemwise(ptm.sign)
|
|
212
|
-
def
|
|
163
|
+
def sign(x):
|
|
213
164
|
"""
|
|
214
165
|
Compute sign(x) for all non-zero elements of x.
|
|
215
166
|
"""
|
|
216
167
|
|
|
217
168
|
|
|
218
169
|
@structured_elemwise(ptm.ceil)
|
|
219
|
-
def
|
|
170
|
+
def ceil(x):
|
|
220
171
|
"""
|
|
221
172
|
Compute ceil(x) for all non-zero elements of x.
|
|
222
173
|
"""
|
|
223
174
|
|
|
224
175
|
|
|
225
176
|
@structured_elemwise(ptm.floor)
|
|
226
|
-
def
|
|
177
|
+
def floor(x):
|
|
227
178
|
"""
|
|
228
179
|
Compute floor(x) for all non-zero elements of x.
|
|
229
180
|
"""
|
|
230
181
|
|
|
231
182
|
|
|
232
183
|
@structured_elemwise(ptm.log1p)
|
|
233
|
-
def
|
|
184
|
+
def log1p(x):
|
|
234
185
|
"""
|
|
235
186
|
Compute log(1 + x) for all non-zero elements of x.
|
|
236
187
|
"""
|
|
237
188
|
|
|
238
189
|
|
|
239
190
|
@structured_elemwise(ptm.expm1)
|
|
240
|
-
def
|
|
191
|
+
def expm1(x):
|
|
241
192
|
"""
|
|
242
193
|
Compute exp(x) - 1 for all non-zero elements of x.
|
|
243
194
|
"""
|
|
244
195
|
|
|
245
196
|
|
|
246
197
|
@structured_elemwise(ptm.deg2rad)
|
|
247
|
-
def
|
|
198
|
+
def deg2rad(x):
|
|
248
199
|
"""
|
|
249
200
|
Convert degrees to radians for all non-zero elements of x.
|
|
250
201
|
"""
|
|
251
202
|
|
|
252
203
|
|
|
253
204
|
@structured_elemwise(ptm.rad2deg)
|
|
254
|
-
def
|
|
205
|
+
def rad2deg(x):
|
|
255
206
|
"""
|
|
256
207
|
Convert radians to degrees for all non-zero elements of x.
|
|
257
208
|
"""
|
|
258
209
|
|
|
259
210
|
|
|
260
211
|
@structured_elemwise(ptm.trunc)
|
|
261
|
-
def
|
|
212
|
+
def trunc(x):
|
|
262
213
|
"""
|
|
263
214
|
Truncate the decimal part of x for all non-zero elements of x.
|
|
264
215
|
"""
|
|
265
216
|
|
|
266
217
|
|
|
267
218
|
@structured_elemwise(ptm.sqr)
|
|
268
|
-
def
|
|
219
|
+
def sqr(x):
|
|
269
220
|
"""
|
|
270
221
|
Compute sqr(x) for all non-zero elements of x.
|
|
271
222
|
"""
|
|
272
223
|
|
|
273
224
|
|
|
274
225
|
@structured_elemwise(ptm.sqrt)
|
|
275
|
-
def
|
|
226
|
+
def sqrt(x):
|
|
276
227
|
"""
|
|
277
228
|
Compute sqrt(x) for all non-zero elements of x.
|
|
278
229
|
"""
|
|
@@ -292,7 +243,7 @@ def conjugate(x):
|
|
|
292
243
|
return _conj(_x)
|
|
293
244
|
|
|
294
245
|
|
|
295
|
-
structured_conjugate = conjugate
|
|
246
|
+
structured_conjugate = conj = conjugate
|
|
296
247
|
|
|
297
248
|
|
|
298
249
|
class SpSum(Op):
|
|
@@ -133,6 +133,11 @@ from pytensor.tensor.extra_ops import *
|
|
|
133
133
|
from pytensor.tensor.interpolate import interp, interpolate1d
|
|
134
134
|
from pytensor.tensor.math import *
|
|
135
135
|
from pytensor.tensor.pad import pad
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
# isort: off
|
|
139
|
+
# reshape needs to be imported before shape.reshape, otherwise the tensor.reshape imports fail
|
|
140
|
+
from pytensor.tensor.reshape import *
|
|
136
141
|
from pytensor.tensor.shape import (
|
|
137
142
|
reshape,
|
|
138
143
|
shape,
|
|
@@ -143,6 +148,8 @@ from pytensor.tensor.shape import (
|
|
|
143
148
|
specify_shape,
|
|
144
149
|
)
|
|
145
150
|
|
|
151
|
+
# isort: on
|
|
152
|
+
|
|
146
153
|
# We import as `_shared` instead of `shared` to avoid confusion between
|
|
147
154
|
# `pytensor.shared` and `tensor._shared`.
|
|
148
155
|
from pytensor.tensor.sort import argsort, sort
|