pytensor 2.28.2__tar.gz → 2.28.3__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.28.2/pytensor.egg-info → pytensor-2.28.3}/PKG-INFO +1 -1
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/_version.py +3 -3
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/slinalg.py +1 -2
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/slinalg.py +1 -2
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/c_code/dimshuffle.c +7 -2
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/slinalg.py +27 -15
- {pytensor-2.28.2 → pytensor-2.28.3/pytensor.egg-info}/PKG-INFO +1 -1
- {pytensor-2.28.2 → pytensor-2.28.3}/LICENSE.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/MANIFEST.in +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/README.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/.templates/layout.html +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/.templates/nb-badges.html +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/.templates/rendered_citation.html +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/LICENSE.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/README.md +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/acknowledgement.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/bcast.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/bcast.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/blog.md +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/conf.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/core_development_guide.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/css.inc +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/dev_start_guide.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/environment.yml +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/apply.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/apply.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/apply2.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/ctype.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/extending_faq.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/graphstructures.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/inplace.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/op.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/other_ops.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/pipeline.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/scan.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/tips.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/type.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/unittest.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/extending/using_params.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/faq.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/gallery/page_footer.md +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/glossary.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/Elman_srnn.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/PyTensor.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/PyTensor_logo.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/binder.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/blocksparse.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/colab.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/github.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/lstm.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/talk2010.gif +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/images/talk2010.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/install.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/internal/how_to_release.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/internal/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/introduction.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/function.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/io.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/mode.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/ops.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/compile/shared.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/config.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/features.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/graph.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/op.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/replace.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/type.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/graph/utils.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/printing.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/scalar/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/scan.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/sparse/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/basic.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/bcast.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/conv.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/fft.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/functional.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/io.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/random/distributions.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/random/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/tensor/utils.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/library/typed_list.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/links.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/optimizations.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/pylintrc +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/robots.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/troubleshooting.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/adding.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/apply.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/apply.svg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/bcast.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/conditions.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/examples.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/gradients.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/index.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/logistic.gp +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/logistic.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/loop.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/modes.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/prng.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/profiling.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/sparse.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/doc/user_guide.rst +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pyproject.toml +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/bin/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/breakpoint.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/builders.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/compiledir.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/compilelock.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/debugmode.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/function/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/function/pfunc.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/function/types.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/io.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/mode.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/monitormode.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/nanguardmode.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/ops.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/profiling.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/configdefaults.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/configparser.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/gradient.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/features.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/fg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/null_type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/op.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/replace.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/rewriting/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/graph/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/ifelse.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/cutils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/cvm.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/interface.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/op.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/params_type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/c/type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/jax/linker.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/_LAPACK.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/blockwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/scalar.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/sparse.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/subtensor.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/numba/linker.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/shape.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/pytorch/linker.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/link/vm.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/check_blas.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/frozendict.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/npy_2_compat.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/printing.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/py.typed +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/raise_op.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/loop.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/math.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/op.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/rewriting.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/scan/views.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/sandbox/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/sandbox/sp.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/sandbox/sp2.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/sparse/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/blas.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/blas_c.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/blas_headers.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/blas_scipy.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/blockwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/conv/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/conv/abstract_conv.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/einsum.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/extra_ops.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/fft.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/fourier.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/functional.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/inplace.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/interpolate.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/io.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/linalg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/math.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/nlinalg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/pad.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/op.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/rewriting/numba.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/random/var.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/blas_scipy.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/elemwise.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/linalg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/math.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/numba.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/ofg.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/subtensor.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/shape.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/sort.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/special.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/subtensor.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/type_other.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/var.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/variable.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/typed_list/basic.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/typed_list/type.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/updates.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor/utils.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor.egg-info/SOURCES.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor.egg-info/requires.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/scripts/mypy-failing.txt +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/setup.cfg +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/setup.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_breakpoint.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_config.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_gradient.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_ifelse.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_printing.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_raise_op.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_rop.py +0 -0
- {pytensor-2.28.2 → pytensor-2.28.3}/tests/test_updates.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-03-
|
|
11
|
+
"date": "2025-03-05T13:02:56+0100",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.28.
|
|
14
|
+
"full-revisionid": "89d5366c888f430003aa6f16a13ad9cdd2826d95",
|
|
15
|
+
"version": "2.28.3"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -53,7 +53,6 @@ def jax_funcify_Solve(op, **kwargs):
|
|
|
53
53
|
@jax_funcify.register(SolveTriangular)
|
|
54
54
|
def jax_funcify_SolveTriangular(op, **kwargs):
|
|
55
55
|
lower = op.lower
|
|
56
|
-
trans = op.trans
|
|
57
56
|
unit_diagonal = op.unit_diagonal
|
|
58
57
|
check_finite = op.check_finite
|
|
59
58
|
|
|
@@ -62,7 +61,7 @@ def jax_funcify_SolveTriangular(op, **kwargs):
|
|
|
62
61
|
A,
|
|
63
62
|
b,
|
|
64
63
|
lower=lower,
|
|
65
|
-
trans=
|
|
64
|
+
trans=0, # this is handled by explicitly transposing A, so it will always be 0 when we get to here.
|
|
66
65
|
unit_diagonal=unit_diagonal,
|
|
67
66
|
check_finite=check_finite,
|
|
68
67
|
)
|
|
@@ -180,7 +180,6 @@ def solve_triangular_impl(A, B, trans, lower, unit_diagonal, b_ndim, overwrite_b
|
|
|
180
180
|
|
|
181
181
|
@numba_funcify.register(SolveTriangular)
|
|
182
182
|
def numba_funcify_SolveTriangular(op, node, **kwargs):
|
|
183
|
-
trans = bool(op.trans)
|
|
184
183
|
lower = op.lower
|
|
185
184
|
unit_diagonal = op.unit_diagonal
|
|
186
185
|
check_finite = op.check_finite
|
|
@@ -208,7 +207,7 @@ def numba_funcify_SolveTriangular(op, node, **kwargs):
|
|
|
208
207
|
res = _solve_triangular(
|
|
209
208
|
a,
|
|
210
209
|
b,
|
|
211
|
-
trans=
|
|
210
|
+
trans=0, # transposing is handled explicitly on the graph, so we never use this argument
|
|
212
211
|
lower=lower,
|
|
213
212
|
unit_diagonal=unit_diagonal,
|
|
214
213
|
overwrite_b=overwrite_b,
|
|
@@ -33,12 +33,17 @@ int APPLY_SPECIFIC(cpu_dimshuffle)(PyArrayObject *input, PyArrayObject **res, PA
|
|
|
33
33
|
npy_intp original_size = PyArray_SIZE(input);
|
|
34
34
|
npy_intp new_size = 1;
|
|
35
35
|
for (npy_intp i = 0; i < nd_out; ++i) {
|
|
36
|
+
// We set the strides of length 1 dimensions to PyArray_ITEMSIZE(input).
|
|
37
|
+
// The value is arbitrary, because there is never a next element.
|
|
38
|
+
// np.expand_dims(x, 0) and x[None] do different things here.
|
|
39
|
+
// I would prefer zero, but there are some poorly implemented BLAS operations
|
|
40
|
+
// That don't handle zero strides correctly. At least they won't fail because of DimShuffle.
|
|
36
41
|
if (new_order[i] != -1) {
|
|
37
42
|
dimensions[i] = PyArray_DIMS(input)[new_order[i]];
|
|
38
|
-
strides[i] = PyArray_DIMS(input)[new_order[i]] == 1 ?
|
|
43
|
+
strides[i] = PyArray_DIMS(input)[new_order[i]] == 1 ? PyArray_ITEMSIZE(input) : PyArray_STRIDES(input)[new_order[i]];
|
|
39
44
|
} else {
|
|
40
45
|
dimensions[i] = 1;
|
|
41
|
-
strides[i] =
|
|
46
|
+
strides[i] = PyArray_ITEMSIZE(input);
|
|
42
47
|
}
|
|
43
48
|
new_size *= dimensions[i];
|
|
44
49
|
}
|
|
@@ -296,13 +296,12 @@ class SolveBase(Op):
|
|
|
296
296
|
# We need to return (dC/d[inv(A)], dC/db)
|
|
297
297
|
c_bar = output_gradients[0]
|
|
298
298
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
)
|
|
305
|
-
b_bar = trans_solve_op(A.T, c_bar)
|
|
299
|
+
props_dict = self._props_dict()
|
|
300
|
+
props_dict["lower"] = not self.lower
|
|
301
|
+
|
|
302
|
+
solve_op = type(self)(**props_dict)
|
|
303
|
+
|
|
304
|
+
b_bar = solve_op(A.T, c_bar)
|
|
306
305
|
# force outer product if vector second input
|
|
307
306
|
A_bar = -ptm.outer(b_bar, c) if c.ndim == 1 else -b_bar.dot(c.T)
|
|
308
307
|
|
|
@@ -385,7 +384,6 @@ class SolveTriangular(SolveBase):
|
|
|
385
384
|
"""Solve a system of linear equations."""
|
|
386
385
|
|
|
387
386
|
__props__ = (
|
|
388
|
-
"trans",
|
|
389
387
|
"unit_diagonal",
|
|
390
388
|
"lower",
|
|
391
389
|
"check_finite",
|
|
@@ -393,11 +391,10 @@ class SolveTriangular(SolveBase):
|
|
|
393
391
|
"overwrite_b",
|
|
394
392
|
)
|
|
395
393
|
|
|
396
|
-
def __init__(self, *,
|
|
394
|
+
def __init__(self, *, unit_diagonal=False, **kwargs):
|
|
397
395
|
if kwargs.get("overwrite_a", False):
|
|
398
396
|
raise ValueError("overwrite_a is not supported for SolverTriangulare")
|
|
399
397
|
super().__init__(**kwargs)
|
|
400
|
-
self.trans = trans
|
|
401
398
|
self.unit_diagonal = unit_diagonal
|
|
402
399
|
|
|
403
400
|
def perform(self, node, inputs, outputs):
|
|
@@ -406,7 +403,7 @@ class SolveTriangular(SolveBase):
|
|
|
406
403
|
A,
|
|
407
404
|
b,
|
|
408
405
|
lower=self.lower,
|
|
409
|
-
trans=
|
|
406
|
+
trans=0,
|
|
410
407
|
unit_diagonal=self.unit_diagonal,
|
|
411
408
|
check_finite=self.check_finite,
|
|
412
409
|
overwrite_b=self.overwrite_b,
|
|
@@ -445,9 +442,9 @@ def solve_triangular(
|
|
|
445
442
|
|
|
446
443
|
Parameters
|
|
447
444
|
----------
|
|
448
|
-
a
|
|
445
|
+
a: TensorVariable
|
|
449
446
|
Square input data
|
|
450
|
-
b
|
|
447
|
+
b: TensorVariable
|
|
451
448
|
Input data for the right hand side.
|
|
452
449
|
lower : bool, optional
|
|
453
450
|
Use only data contained in the lower triangle of `a`. Default is to use upper triangle.
|
|
@@ -468,10 +465,17 @@ def solve_triangular(
|
|
|
468
465
|
This will influence how batched dimensions are interpreted.
|
|
469
466
|
"""
|
|
470
467
|
b_ndim = _default_b_ndim(b, b_ndim)
|
|
468
|
+
|
|
469
|
+
if trans in [1, "T", True]:
|
|
470
|
+
a = a.mT
|
|
471
|
+
lower = not lower
|
|
472
|
+
if trans in [2, "C"]:
|
|
473
|
+
a = a.conj().mT
|
|
474
|
+
lower = not lower
|
|
475
|
+
|
|
471
476
|
ret = Blockwise(
|
|
472
477
|
SolveTriangular(
|
|
473
478
|
lower=lower,
|
|
474
|
-
trans=trans,
|
|
475
479
|
unit_diagonal=unit_diagonal,
|
|
476
480
|
check_finite=check_finite,
|
|
477
481
|
b_ndim=b_ndim,
|
|
@@ -534,6 +538,7 @@ def solve(
|
|
|
534
538
|
*,
|
|
535
539
|
assume_a="gen",
|
|
536
540
|
lower=False,
|
|
541
|
+
transposed=False,
|
|
537
542
|
check_finite=True,
|
|
538
543
|
b_ndim: int | None = None,
|
|
539
544
|
):
|
|
@@ -564,8 +569,10 @@ def solve(
|
|
|
564
569
|
b : (..., N, NRHS) array_like
|
|
565
570
|
Input data for the right hand side.
|
|
566
571
|
lower : bool, optional
|
|
567
|
-
If True, only the data contained in the lower triangle of `a`. Default
|
|
572
|
+
If True, use only the data contained in the lower triangle of `a`. Default
|
|
568
573
|
is to use upper triangle. (ignored for ``'gen'``)
|
|
574
|
+
transposed: bool, optional
|
|
575
|
+
If True, solves the system A^T x = b. Default is False.
|
|
569
576
|
check_finite : bool, optional
|
|
570
577
|
Whether to check that the input matrices contain only finite numbers.
|
|
571
578
|
Disabling may give a performance gain, but may result in problems
|
|
@@ -577,6 +584,11 @@ def solve(
|
|
|
577
584
|
This will influence how batched dimensions are interpreted.
|
|
578
585
|
"""
|
|
579
586
|
b_ndim = _default_b_ndim(b, b_ndim)
|
|
587
|
+
|
|
588
|
+
if transposed:
|
|
589
|
+
a = a.mT
|
|
590
|
+
lower = not lower
|
|
591
|
+
|
|
580
592
|
return Blockwise(
|
|
581
593
|
Solve(
|
|
582
594
|
lower=lower,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytensor-2.28.2 → pytensor-2.28.3}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|