pytensor 2.28.0__tar.gz → 2.28.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.28.0/pytensor.egg-info → pytensor-2.28.1}/PKG-INFO +2 -2
- {pytensor-2.28.0 → pytensor-2.28.1}/README.rst +1 -1
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/_version.py +3 -3
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/configdefaults.py +1 -1
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/slinalg.py +13 -7
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/printing.py +26 -2
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/shape.py +2 -3
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/type.py +2 -11
- {pytensor-2.28.0 → pytensor-2.28.1/pytensor.egg-info}/PKG-INFO +2 -2
- {pytensor-2.28.0 → pytensor-2.28.1}/scripts/slowest_tests/update-slowest-times-issue.sh +26 -5
- {pytensor-2.28.0 → pytensor-2.28.1}/LICENSE.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/MANIFEST.in +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/.templates/layout.html +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/.templates/nb-badges.html +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/.templates/rendered_citation.html +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/LICENSE.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/README.md +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/acknowledgement.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/bcast.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/bcast.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/blog.md +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/conf.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/core_development_guide.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/css.inc +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/dev_start_guide.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/environment.yml +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/apply.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/apply.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/apply2.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/ctype.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/extending_faq.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/graphstructures.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/inplace.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/op.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/other_ops.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/pipeline.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/scan.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/tips.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/type.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/unittest.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/extending/using_params.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/faq.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/gallery/page_footer.md +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/glossary.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/Elman_srnn.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/PyTensor.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/PyTensor_logo.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/binder.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/blocksparse.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/colab.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/github.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/lstm.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/talk2010.gif +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/images/talk2010.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/install.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/internal/how_to_release.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/internal/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/introduction.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/function.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/io.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/mode.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/ops.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/compile/shared.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/config.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/features.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/graph.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/op.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/replace.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/type.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/graph/utils.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/printing.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/scalar/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/scan.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/sparse/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/basic.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/bcast.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/conv.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/fft.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/functional.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/io.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/random/distributions.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/random/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/tensor/utils.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/library/typed_list.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/links.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/optimizations.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/pylintrc +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/robots.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/troubleshooting.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/adding.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/apply.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/apply.svg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/bcast.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/conditions.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/examples.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/gradients.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/index.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/logistic.gp +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/logistic.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/loop.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/modes.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/prng.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/profiling.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/sparse.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/doc/user_guide.rst +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pyproject.toml +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/bin/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/breakpoint.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/builders.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/compiledir.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/compilelock.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/debugmode.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/function/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/function/pfunc.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/function/types.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/io.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/mode.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/monitormode.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/nanguardmode.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/ops.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/profiling.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/configparser.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/gradient.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/features.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/fg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/null_type.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/op.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/replace.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/rewriting/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/type.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/graph/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/ifelse.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/cutils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/cvm.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/interface.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/op.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/params_type.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/c/type.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/slinalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/jax/linker.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/_LAPACK.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/blockwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/scalar.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/sparse.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/subtensor.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/numba/linker.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/shape.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/pytorch/linker.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/link/vm.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/check_blas.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/frozendict.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/npy_2_compat.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/py.typed +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/raise_op.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/loop.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/math.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/op.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/rewriting.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/scan/views.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/sandbox/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/sandbox/sp.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/sandbox/sp2.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/type.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/sparse/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/blas.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/blas_c.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/blas_headers.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/blas_scipy.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/blockwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/c_code/dimshuffle.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/conv/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/conv/abstract_conv.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/einsum.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/extra_ops.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/fft.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/fourier.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/functional.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/inplace.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/interpolate.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/io.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/linalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/math.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/nlinalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/pad.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/op.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/rewriting/numba.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/type.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/random/var.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/blas_scipy.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/elemwise.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/linalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/math.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/numba.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/ofg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/subtensor.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/shape.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/slinalg.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/sort.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/special.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/subtensor.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/type_other.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/var.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/variable.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/typed_list/basic.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/typed_list/type.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/updates.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor/utils.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor.egg-info/SOURCES.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor.egg-info/requires.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/scripts/mypy-failing.txt +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/setup.cfg +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/setup.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_breakpoint.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_config.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_gradient.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_ifelse.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_printing.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_raise_op.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_rop.py +0 -0
- {pytensor-2.28.0 → pytensor-2.28.1}/tests/test_updates.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: pytensor
|
|
3
|
-
Version: 2.28.
|
|
3
|
+
Version: 2.28.1
|
|
4
4
|
Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
|
|
5
5
|
Author-email: pymc-devs <pymc.devs@gmail.com>
|
|
6
6
|
License: .. _license:
|
|
@@ -244,7 +244,7 @@ A good place to start contributing is by looking through the issues
|
|
|
244
244
|
|
|
245
245
|
|
|
246
246
|
.. |Project Name| replace:: PyTensor
|
|
247
|
-
.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg
|
|
247
|
+
.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg
|
|
248
248
|
:target: https://github.com/pymc-devs/pytensor/actions?query=workflow%3ATests+branch%3Amain
|
|
249
249
|
.. |Coverage| image:: https://codecov.io/gh/pymc-devs/pytensor/branch/main/graph/badge.svg?token=WVwr8nZYmc
|
|
250
250
|
:target: https://codecov.io/gh/pymc-devs/pytensor
|
|
@@ -133,7 +133,7 @@ A good place to start contributing is by looking through the issues
|
|
|
133
133
|
|
|
134
134
|
|
|
135
135
|
.. |Project Name| replace:: PyTensor
|
|
136
|
-
.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg
|
|
136
|
+
.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg
|
|
137
137
|
:target: https://github.com/pymc-devs/pytensor/actions?query=workflow%3ATests+branch%3Amain
|
|
138
138
|
.. |Coverage| image:: https://codecov.io/gh/pymc-devs/pytensor/branch/main/graph/badge.svg?token=WVwr8nZYmc
|
|
139
139
|
:target: https://codecov.io/gh/pymc-devs/pytensor
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-02-
|
|
11
|
+
"date": "2025-02-24T18:22:58+0100",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.28.
|
|
14
|
+
"full-revisionid": "67017a662a65abaa0e388925762aa3c903abe840",
|
|
15
|
+
"version": "2.28.1"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -124,20 +124,26 @@ def solve_triangular_impl(A, B, trans, lower, unit_diagonal, b_ndim, overwrite_b
|
|
|
124
124
|
_N = np.int32(A.shape[-1])
|
|
125
125
|
_solve_check_input_shapes(A, B)
|
|
126
126
|
|
|
127
|
+
# Seems weird to not use the b_ndim input directly, but when I did that Numba complained that the output type
|
|
128
|
+
# could potentially be 3d (it didn't understand b_ndim was always equal to B.ndim)
|
|
127
129
|
B_is_1d = B.ndim == 1
|
|
128
130
|
|
|
131
|
+
# This will only copy if A is not already fortran contiguous
|
|
132
|
+
A_f = np.asfortranarray(A)
|
|
133
|
+
|
|
129
134
|
if overwrite_b:
|
|
130
|
-
|
|
135
|
+
if B_is_1d:
|
|
136
|
+
B_copy = np.expand_dims(B, -1)
|
|
137
|
+
else:
|
|
138
|
+
# This *will* allow inplace destruction of B, but only if it is already fortran contiguous.
|
|
139
|
+
# Otherwise, there's no way to get around the need to copy the data before going into TRTRS
|
|
140
|
+
B_copy = np.asfortranarray(B)
|
|
131
141
|
else:
|
|
132
142
|
if B_is_1d:
|
|
133
|
-
|
|
134
|
-
B_copy = np.copy(B)
|
|
143
|
+
B_copy = np.copy(np.expand_dims(B, -1))
|
|
135
144
|
else:
|
|
136
145
|
B_copy = _copy_to_fortran_order(B)
|
|
137
146
|
|
|
138
|
-
if B_is_1d:
|
|
139
|
-
B_copy = np.expand_dims(B_copy, -1)
|
|
140
|
-
|
|
141
147
|
NRHS = 1 if B_is_1d else int(B_copy.shape[-1])
|
|
142
148
|
|
|
143
149
|
UPLO = val_to_int_ptr(ord("L") if lower else ord("U"))
|
|
@@ -155,7 +161,7 @@ def solve_triangular_impl(A, B, trans, lower, unit_diagonal, b_ndim, overwrite_b
|
|
|
155
161
|
DIAG,
|
|
156
162
|
N,
|
|
157
163
|
NRHS,
|
|
158
|
-
|
|
164
|
+
A_f.view(w_type).ctypes,
|
|
159
165
|
LDA,
|
|
160
166
|
B_copy.view(w_type).ctypes,
|
|
161
167
|
LDB,
|
|
@@ -89,6 +89,7 @@ def debugprint(
|
|
|
89
89
|
| Sequence[Variable | Apply | Function | FunctionGraph],
|
|
90
90
|
depth: int = -1,
|
|
91
91
|
print_type: bool = False,
|
|
92
|
+
print_shape: bool = False,
|
|
92
93
|
file: Literal["str"] | TextIO | None = None,
|
|
93
94
|
id_type: IDTypesType = "CHAR",
|
|
94
95
|
stop_on_name: bool = False,
|
|
@@ -98,6 +99,7 @@ def debugprint(
|
|
|
98
99
|
print_op_info: bool = False,
|
|
99
100
|
print_destroy_map: bool = False,
|
|
100
101
|
print_view_map: bool = False,
|
|
102
|
+
print_memory_map: bool = False,
|
|
101
103
|
print_fgraph_inputs: bool = False,
|
|
102
104
|
) -> str | TextIO:
|
|
103
105
|
r"""Print a graph as text.
|
|
@@ -123,6 +125,8 @@ def debugprint(
|
|
|
123
125
|
Print graph to this depth (``-1`` for unlimited).
|
|
124
126
|
print_type
|
|
125
127
|
If ``True``, print the `Type`\s of each `Variable` in the graph.
|
|
128
|
+
print_shape
|
|
129
|
+
If ``True``, print the shape of each `Variable` in the graph.
|
|
126
130
|
file
|
|
127
131
|
When `file` extends `TextIO`, print to it; when `file` is
|
|
128
132
|
equal to ``"str"``, return a string; when `file` is ``None``, print to
|
|
@@ -153,6 +157,8 @@ def debugprint(
|
|
|
153
157
|
Whether to print the `destroy_map`\s of printed objects
|
|
154
158
|
print_view_map
|
|
155
159
|
Whether to print the `view_map`\s of printed objects
|
|
160
|
+
print_memory_map
|
|
161
|
+
Whether to set both `print_destroy_map` and `print_view_map` to ``True``.
|
|
156
162
|
print_fgraph_inputs
|
|
157
163
|
Print the inputs of `FunctionGraph`\s.
|
|
158
164
|
|
|
@@ -177,6 +183,10 @@ def debugprint(
|
|
|
177
183
|
if used_ids is None:
|
|
178
184
|
used_ids = dict()
|
|
179
185
|
|
|
186
|
+
if print_memory_map:
|
|
187
|
+
print_destroy_map = True
|
|
188
|
+
print_view_map = True
|
|
189
|
+
|
|
180
190
|
inputs_to_print = []
|
|
181
191
|
outputs_to_print = []
|
|
182
192
|
profile_list: list[Any | None] = []
|
|
@@ -265,6 +275,7 @@ N.B.:
|
|
|
265
275
|
depth=depth,
|
|
266
276
|
done=done,
|
|
267
277
|
print_type=print_type,
|
|
278
|
+
print_shape=print_shape,
|
|
268
279
|
file=_file,
|
|
269
280
|
id_type=id_type,
|
|
270
281
|
inner_graph_ops=inner_graph_vars,
|
|
@@ -295,6 +306,7 @@ N.B.:
|
|
|
295
306
|
depth=depth,
|
|
296
307
|
done=done,
|
|
297
308
|
print_type=print_type,
|
|
309
|
+
print_shape=print_shape,
|
|
298
310
|
file=_file,
|
|
299
311
|
topo_order=topo_order,
|
|
300
312
|
id_type=id_type,
|
|
@@ -365,6 +377,7 @@ N.B.:
|
|
|
365
377
|
depth=depth,
|
|
366
378
|
done=done,
|
|
367
379
|
print_type=print_type,
|
|
380
|
+
print_shape=print_shape,
|
|
368
381
|
file=_file,
|
|
369
382
|
id_type=id_type,
|
|
370
383
|
inner_graph_ops=inner_graph_vars,
|
|
@@ -387,6 +400,7 @@ N.B.:
|
|
|
387
400
|
depth=depth,
|
|
388
401
|
done=done,
|
|
389
402
|
print_type=print_type,
|
|
403
|
+
print_shape=print_shape,
|
|
390
404
|
file=_file,
|
|
391
405
|
id_type=id_type,
|
|
392
406
|
stop_on_name=stop_on_name,
|
|
@@ -421,6 +435,7 @@ N.B.:
|
|
|
421
435
|
depth=depth,
|
|
422
436
|
done=done,
|
|
423
437
|
print_type=print_type,
|
|
438
|
+
print_shape=print_shape,
|
|
424
439
|
file=_file,
|
|
425
440
|
id_type=id_type,
|
|
426
441
|
stop_on_name=stop_on_name,
|
|
@@ -452,6 +467,7 @@ def _debugprint(
|
|
|
452
467
|
depth: int = -1,
|
|
453
468
|
done: dict[Literal["output"] | Variable | Apply, str] | None = None,
|
|
454
469
|
print_type: bool = False,
|
|
470
|
+
print_shape: bool = False,
|
|
455
471
|
file: TextIO = sys.stdout,
|
|
456
472
|
print_destroy_map: bool = False,
|
|
457
473
|
print_view_map: bool = False,
|
|
@@ -484,6 +500,8 @@ def _debugprint(
|
|
|
484
500
|
See `debugprint`.
|
|
485
501
|
print_type
|
|
486
502
|
See `debugprint`.
|
|
503
|
+
print_shape
|
|
504
|
+
See `debugprint`.
|
|
487
505
|
file
|
|
488
506
|
File-like object to which to print.
|
|
489
507
|
print_destroy_map
|
|
@@ -532,6 +550,11 @@ def _debugprint(
|
|
|
532
550
|
else:
|
|
533
551
|
type_str = ""
|
|
534
552
|
|
|
553
|
+
if print_shape and hasattr(var.type, "shape"):
|
|
554
|
+
shape_str = f" shape={str(var.type.shape).replace('None', '?')}"
|
|
555
|
+
else:
|
|
556
|
+
shape_str = ""
|
|
557
|
+
|
|
535
558
|
if prefix_child is None:
|
|
536
559
|
prefix_child = prefix
|
|
537
560
|
|
|
@@ -612,7 +635,7 @@ def _debugprint(
|
|
|
612
635
|
if is_inner_graph_header:
|
|
613
636
|
var_output = f"{prefix}{node.op}{id_str}{destroy_map_str}{view_map_str}{o}"
|
|
614
637
|
else:
|
|
615
|
-
var_output = f"{prefix}{node.op}{output_idx}{id_str}{type_str}{var_name}{destroy_map_str}{view_map_str}{o}{data}"
|
|
638
|
+
var_output = f"{prefix}{node.op}{output_idx}{id_str}{type_str}{shape_str}{var_name}{destroy_map_str}{view_map_str}{o}{data}"
|
|
616
639
|
|
|
617
640
|
if print_op_info and node not in op_information:
|
|
618
641
|
op_information.update(op_debug_information(node.op, node))
|
|
@@ -662,6 +685,7 @@ def _debugprint(
|
|
|
662
685
|
depth=depth - 1,
|
|
663
686
|
done=_done,
|
|
664
687
|
print_type=print_type,
|
|
688
|
+
print_shape=print_shape,
|
|
665
689
|
file=file,
|
|
666
690
|
topo_order=topo_order,
|
|
667
691
|
id_type=id_type,
|
|
@@ -692,7 +716,7 @@ def _debugprint(
|
|
|
692
716
|
else:
|
|
693
717
|
data = ""
|
|
694
718
|
|
|
695
|
-
var_output = f"{prefix}{var}{id_str}{type_str}{data}"
|
|
719
|
+
var_output = f"{prefix}{var}{id_str}{type_str}{shape_str}{data}"
|
|
696
720
|
|
|
697
721
|
if print_op_info and var.owner and var.owner not in op_information:
|
|
698
722
|
op_information.update(op_debug_information(var.owner.op, var.owner))
|
|
@@ -966,16 +966,15 @@ def local_reshape_to_dimshuffle(fgraph, node):
|
|
|
966
966
|
inp, output_shape = node.inputs
|
|
967
967
|
[output] = node.outputs
|
|
968
968
|
|
|
969
|
-
# Remove any broadcastable dimensions from the input
|
|
970
|
-
squeeze_axes = [i for i, bcast in enumerate(inp.type.broadcastable) if bcast]
|
|
971
|
-
|
|
972
969
|
# Trivial case, all dimensions of input/output are known to be broadcastable:
|
|
973
970
|
# there's nothing to reshape
|
|
974
971
|
if all(inp.type.broadcastable) or all(output.type.broadcastable):
|
|
972
|
+
squeeze_axes = tuple(range(inp.type.ndim))
|
|
975
973
|
new_output_shape = []
|
|
976
974
|
expand_axes = tuple(range(output.type.ndim))
|
|
977
975
|
|
|
978
976
|
else:
|
|
977
|
+
squeeze_axes = [i for i, bcast in enumerate(inp.type.broadcastable) if bcast]
|
|
979
978
|
unpacked_shape = _unpack_shape_vector(output_shape)
|
|
980
979
|
new_output_shape = []
|
|
981
980
|
expand_axes = []
|
|
@@ -399,22 +399,13 @@ class TensorType(CType[np.ndarray], HasDataType, HasShape):
|
|
|
399
399
|
else:
|
|
400
400
|
shape = self.shape
|
|
401
401
|
len_shape = len(shape)
|
|
402
|
-
|
|
403
|
-
def shape_str(s):
|
|
404
|
-
if s is None:
|
|
405
|
-
return "?"
|
|
406
|
-
else:
|
|
407
|
-
return str(s)
|
|
408
|
-
|
|
409
|
-
formatted_shape = ", ".join(shape_str(s) for s in shape)
|
|
410
|
-
if len_shape == 1:
|
|
411
|
-
formatted_shape += ","
|
|
402
|
+
formatted_shape = str(shape).replace("None", "?")
|
|
412
403
|
|
|
413
404
|
if len_shape > 2:
|
|
414
405
|
name = f"Tensor{len_shape}"
|
|
415
406
|
else:
|
|
416
407
|
name = ("Scalar", "Vector", "Matrix")[len_shape]
|
|
417
|
-
return f"{name}({self.dtype}, shape=
|
|
408
|
+
return f"{name}({self.dtype}, shape={formatted_shape})"
|
|
418
409
|
|
|
419
410
|
def __repr__(self):
|
|
420
411
|
return f"TensorType({self.dtype}, shape={self.shape})"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: pytensor
|
|
3
|
-
Version: 2.28.
|
|
3
|
+
Version: 2.28.1
|
|
4
4
|
Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
|
|
5
5
|
Author-email: pymc-devs <pymc.devs@gmail.com>
|
|
6
6
|
License: .. _license:
|
|
@@ -244,7 +244,7 @@ A good place to start contributing is by looking through the issues
|
|
|
244
244
|
|
|
245
245
|
|
|
246
246
|
.. |Project Name| replace:: PyTensor
|
|
247
|
-
.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg
|
|
247
|
+
.. |Tests Status| image:: https://github.com/pymc-devs/pytensor/workflows/Tests/badge.svg
|
|
248
248
|
:target: https://github.com/pymc-devs/pytensor/actions?query=workflow%3ATests+branch%3Amain
|
|
249
249
|
.. |Coverage| image:: https://codecov.io/gh/pymc-devs/pytensor/branch/main/graph/badge.svg?token=WVwr8nZYmc
|
|
250
250
|
:target: https://codecov.io/gh/pymc-devs/pytensor
|
|
@@ -7,8 +7,19 @@ repo=pytensor
|
|
|
7
7
|
issue_number=1124
|
|
8
8
|
title="Speed up test times :rocket:"
|
|
9
9
|
workflow=Tests
|
|
10
|
-
latest_id=$(gh run list --workflow $workflow --status success --
|
|
11
|
-
|
|
10
|
+
latest_id=$(gh run list --branch main --limit 1 --workflow $workflow --status success --json databaseId,startedAt,updatedAt --jq '
|
|
11
|
+
. | map({
|
|
12
|
+
databaseId: .databaseId,
|
|
13
|
+
startedAt: .startedAt,
|
|
14
|
+
updatedAt: .updatedAt,
|
|
15
|
+
minutes: (((.updatedAt | fromdate) - (.startedAt | fromdate)) / 60)
|
|
16
|
+
} | select(.minutes > 10))
|
|
17
|
+
| .[0].databaseId
|
|
18
|
+
')
|
|
19
|
+
jobs=$(gh api /repos/$owner/$repo/actions/runs/$latest_id/jobs --jq '
|
|
20
|
+
.jobs
|
|
21
|
+
| map({name: .name, run_id: .run_id, id: .id, started_at: .started_at, completed_at: .completed_at})
|
|
22
|
+
')
|
|
12
23
|
|
|
13
24
|
# Skip 3.10, float32, and Benchmark tests
|
|
14
25
|
function skip_job() {
|
|
@@ -31,7 +42,7 @@ function skip_job() {
|
|
|
31
42
|
# Remove common prefix from the name
|
|
32
43
|
function remove_prefix() {
|
|
33
44
|
name=$1
|
|
34
|
-
echo $name | sed -e 's/^ubuntu-latest test py3.
|
|
45
|
+
echo $name | sed -e 's/^ubuntu-latest test py3.13 numpy>=2.0 : fast-compile 0 : float32 0 : //'
|
|
35
46
|
}
|
|
36
47
|
|
|
37
48
|
function human_readable_time() {
|
|
@@ -64,7 +75,11 @@ echo "$jobs" | jq -c '.[]' | while read -r job; do
|
|
|
64
75
|
fi
|
|
65
76
|
|
|
66
77
|
echo "Processing job: $name (ID: $id, Run ID: $run_id)"
|
|
67
|
-
|
|
78
|
+
|
|
79
|
+
# Seeing a bit more stabilty with the API rather than the CLI
|
|
80
|
+
# https://docs.github.com/en/rest/actions/workflow-jobs?apiVersion=2022-11-28#download-job-logs-for-a-workflow-run
|
|
81
|
+
times=$(gh api /repos/$owner/$repo/actions/jobs/$id/logs | python extract-slow-tests.py)
|
|
82
|
+
# times=$(gh run view --job $id --log | python extract-slow-tests.py)
|
|
68
83
|
|
|
69
84
|
if [ -z "$times" ]; then
|
|
70
85
|
# Some of the jobs are non-test jobs, so we skip them
|
|
@@ -89,6 +104,11 @@ echo "$jobs" | jq -c '.[]' | while read -r job; do
|
|
|
89
104
|
fi
|
|
90
105
|
done
|
|
91
106
|
|
|
107
|
+
if [ -z "$all_times" ]; then
|
|
108
|
+
echo "No slow tests found, exiting"
|
|
109
|
+
exit 1
|
|
110
|
+
fi
|
|
111
|
+
|
|
92
112
|
run_date=$(date +"%Y-%m-%d")
|
|
93
113
|
body=$(cat << EOF
|
|
94
114
|
If you are motivated to help speed up some tests, we would appreciate it!
|
|
@@ -100,7 +120,8 @@ $all_times
|
|
|
100
120
|
You can find more information on how to contribute [here](https://pytensor.readthedocs.io/en/latest/dev_start_guide.html)
|
|
101
121
|
|
|
102
122
|
Automatically generated by [GitHub Action](https://github.com/pymc-devs/pytensor/blob/main/.github/workflows/slow-tests-issue.yml)
|
|
103
|
-
Latest run date: $run_date
|
|
123
|
+
Latest run date: $run_date
|
|
124
|
+
Run logs: [$latest_id](https://github.com/pymc-devs/pytensor/actions/runs/$latest_id)
|
|
104
125
|
EOF
|
|
105
126
|
)
|
|
106
127
|
|
|
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.0 → pytensor-2.28.1}/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
|