pytensor 2.26.3__tar.gz → 2.27.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytensor-2.26.3/pytensor.egg-info → pytensor-2.27.0}/PKG-INFO +2 -2
- pytensor-2.27.0/doc/.templates/nb-badges.html +24 -0
- pytensor-2.27.0/doc/.templates/rendered_citation.html +13 -0
- pytensor-2.27.0/doc/blog.md +7 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/conf.py +97 -34
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/core_development_guide.rst +0 -8
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/environment.yml +8 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/creating_a_numba_jax_op.rst +8 -8
- pytensor-2.27.0/doc/gallery/page_footer.md +27 -0
- pytensor-2.27.0/doc/gallery/rewrites/graph_rewrites.ipynb +1104 -0
- pytensor-2.27.0/doc/gallery/scan/scan_tutorial.ipynb +852 -0
- pytensor-2.27.0/doc/images/PyTensor.png +0 -0
- pytensor-2.27.0/doc/images/PyTensor_logo.png +0 -0
- pytensor-2.27.0/doc/images/binder.svg +1 -0
- pytensor-2.27.0/doc/images/colab.svg +1 -0
- pytensor-2.27.0/doc/images/github.svg +1 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/index.rst +1 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/index.rst +0 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/misc/pkl_utils.rst +0 -4
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/basic.rst +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/random/index.rst +1 -0
- pytensor-2.27.0/doc/robots.txt +3 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/examples.rst +3 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/loading_and_saving.rst +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/prng.rst +3 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pyproject.toml +5 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/__init__.py +9 -7
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/_version.py +3 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/__init__.py +0 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/builders.py +22 -11
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/compilelock.py +5 -4
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/debugmode.py +9 -7
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/function/pfunc.py +3 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/function/types.py +95 -83
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/mode.py +37 -41
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/configdefaults.py +6 -5
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/configparser.py +2 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/formatting.py +8 -11
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/gradient.py +22 -22
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/basic.py +9 -9
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/op.py +2 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/replace.py +3 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/basic.py +29 -16
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/utils.py +0 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/ifelse.py +12 -6
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/basic.py +25 -50
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/basic.py +18 -9
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/cmodule.py +17 -26
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/op.py +2 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/params_type.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/extra_ops.py +11 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/scan.py +10 -5
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/shape.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/tensor_basic.py +5 -4
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/linker.py +5 -9
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/__init__.py +5 -4
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/basic.py +19 -5
- pytensor-2.27.0/pytensor/link/numba/dispatch/blockwise.py +91 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/cython_support.py +7 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/elemwise.py +105 -281
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/extra_ops.py +6 -6
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/random.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/scalar.py +11 -15
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/scan.py +4 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/slinalg.py +2 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/subtensor.py +150 -8
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/tensor_basic.py +6 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/vectorize_codegen.py +22 -13
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/linker.py +0 -17
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/basic.py +5 -6
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/blockwise.py +3 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/elemwise.py +70 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/scalar.py +50 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/shape.py +2 -1
- pytensor-2.27.0/pytensor/link/pytorch/linker.py +88 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/utils.py +14 -5
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/vm.py +9 -6
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/check_blas.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/printing.py +50 -46
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/basic.py +15 -35
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/loop.py +7 -6
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/basic.py +6 -4
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/op.py +45 -22
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/rewriting.py +57 -38
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/utils.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/basic.py +6 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/__init__.py +1 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/basic.py +157 -90
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas.py +15 -364
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas_scipy.py +4 -15
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blockwise.py +73 -21
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/conv/abstract_conv.py +7 -11
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/einsum.py +7 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/elemwise.py +50 -26
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/elemwise_cgen.py +16 -11
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/extra_ops.py +6 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/functional.py +4 -2
- pytensor-2.27.0/pytensor/tensor/interpolate.py +200 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/math.py +1 -76
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/nlinalg.py +30 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/pad.py +3 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/basic.py +2 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/op.py +9 -5
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/basic.py +4 -4
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/numba.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/utils.py +18 -8
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/__init__.py +1 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/basic.py +126 -120
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/blas.py +1 -1
- pytensor-2.27.0/pytensor/tensor/rewriting/blas_scipy.py +37 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/blockwise.py +6 -3
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/elemwise.py +15 -12
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/linalg.py +72 -48
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/math.py +244 -175
- pytensor-2.27.0/pytensor/tensor/rewriting/numba.py +108 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/ofg.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/shape.py +42 -21
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/subtensor.py +53 -29
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/shape.py +22 -29
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/slinalg.py +5 -4
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/subtensor.py +41 -19
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/type.py +7 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/utils.py +1 -1
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/variable.py +34 -13
- {pytensor-2.26.3 → pytensor-2.27.0/pytensor.egg-info}/PKG-INFO +2 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/SOURCES.txt +16 -2
- pytensor-2.27.0/scripts/slowest_tests/update-slowest-times-issue.sh +113 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_gradient.py +11 -6
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_ifelse.py +2 -2
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_printing.py +10 -3
- pytensor-2.26.3/doc/library/sandbox/index.rst +0 -16
- pytensor-2.26.3/doc/library/sandbox/linalg.rst +0 -19
- pytensor-2.26.3/pytensor/link/pytorch/linker.py +0 -36
- pytensor-2.26.3/pytensor/tensor/rewriting/blas_scipy.py +0 -37
- {pytensor-2.26.3 → pytensor-2.27.0}/LICENSE.txt +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/MANIFEST.in +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/README.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/.templates/layout.html +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/LICENSE.txt +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/README.md +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/acknowledgement.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/bcast.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/bcast.svg +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/css.inc +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/dev_start_guide.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/apply.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/apply.svg +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/apply2.svg +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/ctype.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/extending_faq.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/graphstructures.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/inplace.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/op.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/other_ops.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/pipeline.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/scan.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/tips.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/type.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/unittest.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/using_params.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/faq.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/glossary.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/Elman_srnn.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/blocksparse.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/lstm.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/talk2010.gif +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/talk2010.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/install.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/internal/how_to_release.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/internal/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/introduction.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/function.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/io.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/mode.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/ops.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/shared.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/config.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/gradient.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/features.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/graph.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/op.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/replace.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/type.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/utils.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/printing.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/scalar/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/scan.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/sparse/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/bcast.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/conv.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/fft.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/functional.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/io.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/random/distributions.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/utils.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/typed_list.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/links.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/optimizations.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/pylintrc +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/troubleshooting.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/adding.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/apply.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/apply.svg +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/bcast.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/conditions.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/gradients.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/index.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/logistic.gp +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/logistic.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/loop.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/modes.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/profiling.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/sparse.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/doc/user_guide.rst +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/bin/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/breakpoint.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/compiledir.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/function/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/io.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/monitormode.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/nanguardmode.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/ops.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/profiling.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/features.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/fg.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/null_type.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/type.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/cutils.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/cvm.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/interface.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/type.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/slinalg.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/sparse.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/frozendict.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/py.typed +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/raise_op.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/math.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/views.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sandbox/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sandbox/sp.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sandbox/sp2.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/type.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/utils.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas_c.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas_headers.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/c_code/dimshuffle.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/conv/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/fft.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/fourier.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/inplace.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/io.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/linalg.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/type.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/var.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/sort.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/special.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/type_other.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/var.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/basic.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/type.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/updates.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/utils.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/requires.txt +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/scripts/mypy-failing.txt +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/setup.cfg +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/setup.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_breakpoint.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_config.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_raise_op.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_rop.py +0 -0
- {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_updates.py +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{% if pagename in ablog %}
|
|
2
|
+
|
|
3
|
+
<!-- Generate correct links and render github/binder/colab badges -->
|
|
4
|
+
{% set gh_basepath = github_user + '/' + github_repo + '/blob/' + github_version + '/' %}
|
|
5
|
+
{% set encoded_base = github_user + '%252F' + github_repo %}
|
|
6
|
+
{% set gh_binder = github_user + '/' + github_repo + '/' + github_version %}
|
|
7
|
+
{% set doc_path_aux = doc_path | trim('/') %}
|
|
8
|
+
{% set file_path = doc_path_aux + '/' + pagename + ".ipynb" %}
|
|
9
|
+
{% set encoded_path = file_path | replace("/", "%252F") %}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
<div class="sd-text-right">
|
|
13
|
+
<p>
|
|
14
|
+
<a href="{{ github_url + '/' + gh_basepath + file_path }}", role="button" target="_blank">
|
|
15
|
+
<img src="{{ pathto('_static/github.svg', 1) }}" alt="View On GitHub"></a>
|
|
16
|
+
|
|
17
|
+
<a href="{{ 'https://mybinder.org/v2/gh/' + sandbox_repo + '?urlpath=git-pull%3Frepo%3Dhttps%253A%252F%252Fgithub.com%252F' + encoded_base + '%26urlpath%3Dtree%252F' + github_repo + '%252F' + encoded_path + '%26branch%3D' + github_version }}" target="_blank">
|
|
18
|
+
<img src="{{ pathto('_static/binder.svg', 1) }}" alt="Open In Binder"></a>
|
|
19
|
+
|
|
20
|
+
<a href="{{ 'https://colab.research.google.com/github/' + gh_basepath + file_path }}" target="_blank">
|
|
21
|
+
<img src="{{ pathto('_static/colab.svg', 1) }}" alt="Open In Colab"/></a>
|
|
22
|
+
</p>
|
|
23
|
+
</div>
|
|
24
|
+
{% endif %}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!-- continuation of examples/page_footer.md -->
|
|
2
|
+
{% if pagename in ablog %}
|
|
3
|
+
{% set post = ablog[pagename] %}
|
|
4
|
+
{% for coll in post.author %}
|
|
5
|
+
{% if coll|length %}
|
|
6
|
+
{{ coll }}
|
|
7
|
+
{% if loop.index < post.author | length %},{% endif %}
|
|
8
|
+
{% else %}
|
|
9
|
+
{{ coll }}
|
|
10
|
+
{% if loop.index < post.author | length %},{% endif %}
|
|
11
|
+
{% endif %}
|
|
12
|
+
{% endfor %}. "{{ title.split(' — ')[0] }}". In: <i>Pytensor Examples</i>. Ed. by Pytensor Team. <!-- DOI: <a href={{ doi_url }}>{{ doi_code }}</a> -->
|
|
13
|
+
{% endif %}
|
|
@@ -1,31 +1,13 @@
|
|
|
1
|
-
# pytensor documentation build configuration file, created by
|
|
2
|
-
# sphinx-quickstart on Tue Oct 7 16:34:06 2008.
|
|
3
|
-
#
|
|
4
|
-
# This file is execfile()d with the current directory set to its containing
|
|
5
|
-
# directory.
|
|
6
|
-
#
|
|
7
|
-
# The contents of this file are pickled, so don't put values in the namespace
|
|
8
|
-
# that aren't pickleable (module imports are okay, they're removed
|
|
9
|
-
# automatically).
|
|
10
|
-
#
|
|
11
|
-
# All configuration values have a default value; values that are commented out
|
|
12
|
-
# serve to show the default value.
|
|
13
|
-
|
|
14
|
-
# If your extensions are in another directory, add it here. If the directory
|
|
15
|
-
# is relative to the documentation root, use Path.absolute to make it
|
|
16
|
-
# absolute, like shown here.
|
|
17
|
-
# sys.path.append(str(Path("some/directory").absolute()))
|
|
18
|
-
|
|
19
1
|
import os
|
|
20
2
|
import inspect
|
|
21
3
|
import sys
|
|
22
4
|
import pytensor
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
sys.path.insert(0, str(Path("..").resolve() / "scripts"))
|
|
23
8
|
|
|
24
9
|
# General configuration
|
|
25
10
|
# ---------------------
|
|
26
|
-
|
|
27
|
-
# Add any Sphinx extension module names here, as strings. They can be
|
|
28
|
-
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
|
29
11
|
extensions = [
|
|
30
12
|
"sphinx.ext.autodoc",
|
|
31
13
|
"sphinx.ext.todo",
|
|
@@ -34,9 +16,22 @@ extensions = [
|
|
|
34
16
|
"sphinx.ext.linkcode",
|
|
35
17
|
"sphinx.ext.mathjax",
|
|
36
18
|
"sphinx_design",
|
|
37
|
-
"sphinx.ext.intersphinx"
|
|
19
|
+
"sphinx.ext.intersphinx",
|
|
20
|
+
"sphinx.ext.autosummary",
|
|
21
|
+
"sphinx.ext.autosectionlabel",
|
|
22
|
+
"ablog",
|
|
23
|
+
"myst_nb",
|
|
24
|
+
"generate_gallery",
|
|
25
|
+
"sphinx_sitemap",
|
|
38
26
|
]
|
|
39
27
|
|
|
28
|
+
# Don't auto-generate summary for class members.
|
|
29
|
+
numpydoc_show_class_members = False
|
|
30
|
+
autosummary_generate = True
|
|
31
|
+
autodoc_typehints = "none"
|
|
32
|
+
remove_from_toctrees = ["**/classmethods/*"]
|
|
33
|
+
|
|
34
|
+
|
|
40
35
|
intersphinx_mapping = {
|
|
41
36
|
"jax": ("https://jax.readthedocs.io/en/latest", None),
|
|
42
37
|
"numpy": ("https://numpy.org/doc/stable", None),
|
|
@@ -92,6 +87,7 @@ today_fmt = "%B %d, %Y"
|
|
|
92
87
|
# List of directories, relative to source directories, that shouldn't be
|
|
93
88
|
# searched for source files.
|
|
94
89
|
exclude_dirs = ["images", "scripts", "sandbox"]
|
|
90
|
+
exclude_patterns = ['page_footer.md', '**/*.myst.md']
|
|
95
91
|
|
|
96
92
|
# The reST default role (used for this markup: `text`) to use for all
|
|
97
93
|
# documents.
|
|
@@ -115,19 +111,15 @@ pygments_style = "sphinx"
|
|
|
115
111
|
# Options for HTML output
|
|
116
112
|
# -----------------------
|
|
117
113
|
|
|
118
|
-
# The
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
114
|
+
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
115
|
+
# a list of builtin themes.
|
|
116
|
+
html_theme = "pymc_sphinx_theme"
|
|
117
|
+
html_logo = "images/PyTensor_RGB.svg"
|
|
118
|
+
|
|
119
|
+
html_baseurl = "https://pytensor.readthedocs.io"
|
|
120
|
+
sitemap_url_scheme = f"{{lang}}{rtd_version}/{{link}}"
|
|
123
121
|
|
|
124
|
-
# html4_writer added to Fix colon & whitespace misalignment
|
|
125
|
-
# https://github.com/readthedocs/sphinx_rtd_theme/issues/766#issuecomment-513852197
|
|
126
|
-
# https://github.com/readthedocs/sphinx_rtd_theme/issues/766#issuecomment-629666319
|
|
127
|
-
# html4_writer = False
|
|
128
122
|
|
|
129
|
-
html_logo = "images/PyTensor_RGB.svg"
|
|
130
|
-
html_theme = "pymc_sphinx_theme"
|
|
131
123
|
html_theme_options = {
|
|
132
124
|
"use_search_override": False,
|
|
133
125
|
"icon_links": [
|
|
@@ -156,15 +148,27 @@ html_theme_options = {
|
|
|
156
148
|
"type": "fontawesome",
|
|
157
149
|
},
|
|
158
150
|
],
|
|
151
|
+
"secondary_sidebar_items": ["page-toc", "edit-this-page", "sourcelink", "donate"],
|
|
152
|
+
"navbar_start": ["navbar-logo"],
|
|
153
|
+
"article_header_end": ["nb-badges"],
|
|
154
|
+
"article_footer_items": ["rendered_citation.html"],
|
|
159
155
|
}
|
|
160
156
|
html_context = {
|
|
157
|
+
"github_url": "https://github.com",
|
|
161
158
|
"github_user": "pymc-devs",
|
|
162
159
|
"github_repo": "pytensor",
|
|
163
|
-
"github_version": "main",
|
|
160
|
+
"github_version": version if "." in rtd_version else "main",
|
|
161
|
+
"sandbox_repo": f"pymc-devs/pymc-sandbox/{version}",
|
|
164
162
|
"doc_path": "doc",
|
|
165
163
|
"default_mode": "light",
|
|
166
164
|
}
|
|
167
165
|
|
|
166
|
+
# Add any paths that contain custom static files (such as style sheets) here,
|
|
167
|
+
# relative to this directory. They are copied after the builtin static files,
|
|
168
|
+
# so a file named "default.css" will overwrite the builtin "default.css".
|
|
169
|
+
# html_static_path = ["../_static"]
|
|
170
|
+
html_extra_path = ["_thumbnails", 'images', "robots.txt"]
|
|
171
|
+
templates_path = [".templates"]
|
|
168
172
|
|
|
169
173
|
# The name for this set of Sphinx documents. If None, it defaults to
|
|
170
174
|
# "<project> v<release> documentation".
|
|
@@ -295,3 +299,62 @@ latex_documents = [
|
|
|
295
299
|
|
|
296
300
|
# If false, no module index is generated.
|
|
297
301
|
# latex_use_modindex = True
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
# -- MyST config -------------------------------------------------
|
|
305
|
+
myst_enable_extensions = [
|
|
306
|
+
"colon_fence",
|
|
307
|
+
"deflist",
|
|
308
|
+
"dollarmath",
|
|
309
|
+
"amsmath",
|
|
310
|
+
"substitution",
|
|
311
|
+
]
|
|
312
|
+
myst_dmath_double_inline = True
|
|
313
|
+
|
|
314
|
+
citation_code = f"""
|
|
315
|
+
```bibtex
|
|
316
|
+
@incollection{{citekey,
|
|
317
|
+
author = "<notebook authors, see above>",
|
|
318
|
+
title = "<notebook title>",
|
|
319
|
+
editor = "Pytensor Team",
|
|
320
|
+
booktitle = "Pytensor Examples",
|
|
321
|
+
}}
|
|
322
|
+
```
|
|
323
|
+
"""
|
|
324
|
+
|
|
325
|
+
myst_substitutions = {
|
|
326
|
+
"pip_dependencies": "{{ extra_dependencies }}",
|
|
327
|
+
"conda_dependencies": "{{ extra_dependencies }}",
|
|
328
|
+
"extra_install_notes": "",
|
|
329
|
+
"citation_code": citation_code,
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
nb_execution_mode = "off"
|
|
333
|
+
nbsphinx_execute = "never"
|
|
334
|
+
nbsphinx_allow_errors = True
|
|
335
|
+
|
|
336
|
+
rediraffe_redirects = {
|
|
337
|
+
"index.md": "gallery.md",
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
# -- Bibtex config -------------------------------------------------
|
|
341
|
+
bibtex_bibfiles = ["references.bib"]
|
|
342
|
+
bibtex_default_style = "unsrt"
|
|
343
|
+
bibtex_reference_style = "author_year"
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
# -- ablog config -------------------------------------------------
|
|
347
|
+
blog_baseurl = "https://pytensor.readthedocs.io/en/latest/index.html"
|
|
348
|
+
blog_title = "Pytensor Examples"
|
|
349
|
+
blog_path = "blog"
|
|
350
|
+
blog_authors = {
|
|
351
|
+
"contributors": ("Pytensor Contributors", "https://pytensor.readthedocs.io"),
|
|
352
|
+
}
|
|
353
|
+
blog_default_author = "contributors"
|
|
354
|
+
post_show_prev_next = False
|
|
355
|
+
fontawesome_included = True
|
|
356
|
+
# post_redirect_refresh = 1
|
|
357
|
+
# post_auto_image = 1
|
|
358
|
+
# post_auto_excerpt = 2
|
|
359
|
+
|
|
360
|
+
# notfound_urls_prefix = ""
|
|
@@ -26,12 +26,4 @@ some of them might be outdated though:
|
|
|
26
26
|
|
|
27
27
|
* :ref:`unittest` -- Tutorial on how to use unittest in testing PyTensor.
|
|
28
28
|
|
|
29
|
-
* :ref:`sandbox_debugging_step_mode` -- How to step through the execution of
|
|
30
|
-
an PyTensor function and print the inputs and outputs of each op.
|
|
31
|
-
|
|
32
|
-
* :ref:`sandbox_elemwise` -- Description of element wise operations.
|
|
33
|
-
|
|
34
|
-
* :ref:`sandbox_randnb` -- Description of how PyTensor deals with random
|
|
35
|
-
numbers.
|
|
36
|
-
|
|
37
29
|
* :ref:`sparse` -- Description of the ``sparse`` type in PyTensor.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Adding JAX, Numba and Pytorch support for `Op`\s
|
|
2
|
-
|
|
2
|
+
================================================
|
|
3
3
|
|
|
4
4
|
PyTensor is able to convert its graphs into JAX, Numba and Pytorch compiled functions. In order to do
|
|
5
5
|
this, each :class:`Op` in an PyTensor graph must have an equivalent JAX/Numba/Pytorch implementation function.
|
|
@@ -7,7 +7,7 @@ this, each :class:`Op` in an PyTensor graph must have an equivalent JAX/Numba/Py
|
|
|
7
7
|
This tutorial will explain how JAX, Numba and Pytorch implementations are created for an :class:`Op`.
|
|
8
8
|
|
|
9
9
|
Step 1: Identify the PyTensor :class:`Op` you'd like to implement
|
|
10
|
-
|
|
10
|
+
-----------------------------------------------------------------
|
|
11
11
|
|
|
12
12
|
Find the source for the PyTensor :class:`Op` you'd like to be supported and
|
|
13
13
|
identify the function signature and return values. These can be determined by
|
|
@@ -98,7 +98,7 @@ how the inputs and outputs are used to compute the outputs for an :class:`Op`
|
|
|
98
98
|
in Python. This method is effectively what needs to be implemented.
|
|
99
99
|
|
|
100
100
|
Step 2: Find the relevant method in JAX/Numba/Pytorch (or something close)
|
|
101
|
-
|
|
101
|
+
--------------------------------------------------------------------------
|
|
102
102
|
|
|
103
103
|
With a precise idea of what the PyTensor :class:`Op` does we need to figure out how
|
|
104
104
|
to implement it in JAX, Numba or Pytorch. In the best case scenario, there is a similarly named
|
|
@@ -269,7 +269,7 @@ and :func:`torch.cumprod`
|
|
|
269
269
|
z[0] = np.cumprod(x, axis=self.axis)
|
|
270
270
|
|
|
271
271
|
Step 3: Register the function with the respective dispatcher
|
|
272
|
-
|
|
272
|
+
------------------------------------------------------------
|
|
273
273
|
|
|
274
274
|
With the PyTensor `Op` replicated, we'll need to register the
|
|
275
275
|
function with the backends `Linker`. This is done through the use of
|
|
@@ -358,13 +358,13 @@ Here's an example for the `CumOp`\ `Op`:
|
|
|
358
358
|
if mode == "add":
|
|
359
359
|
if axis is None or ndim == 1:
|
|
360
360
|
|
|
361
|
-
@numba_basic.numba_njit(
|
|
361
|
+
@numba_basic.numba_njit()
|
|
362
362
|
def cumop(x):
|
|
363
363
|
return np.cumsum(x)
|
|
364
364
|
|
|
365
365
|
else:
|
|
366
366
|
|
|
367
|
-
@numba_basic.numba_njit(boundscheck=False
|
|
367
|
+
@numba_basic.numba_njit(boundscheck=False)
|
|
368
368
|
def cumop(x):
|
|
369
369
|
out_dtype = x.dtype
|
|
370
370
|
if x.shape[axis] < 2:
|
|
@@ -382,13 +382,13 @@ Here's an example for the `CumOp`\ `Op`:
|
|
|
382
382
|
else:
|
|
383
383
|
if axis is None or ndim == 1:
|
|
384
384
|
|
|
385
|
-
@numba_basic.numba_njit(
|
|
385
|
+
@numba_basic.numba_njit()
|
|
386
386
|
def cumop(x):
|
|
387
387
|
return np.cumprod(x)
|
|
388
388
|
|
|
389
389
|
else:
|
|
390
390
|
|
|
391
|
-
@numba_basic.numba_njit(boundscheck=False
|
|
391
|
+
@numba_basic.numba_njit(boundscheck=False)
|
|
392
392
|
def cumop(x):
|
|
393
393
|
out_dtype = x.dtype
|
|
394
394
|
if x.shape[axis] < 2:
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## License notice
|
|
2
|
+
All the notebooks in this example gallery are provided under a
|
|
3
|
+
[3-Clause BSD License](https://github.com/pymc-devs/pytensor/blob/main/doc/LICENSE.txt)
|
|
4
|
+
which allows modification, and redistribution for any
|
|
5
|
+
use provided the copyright and license notices are preserved.
|
|
6
|
+
|
|
7
|
+
## Citing Pytensor Examples
|
|
8
|
+
|
|
9
|
+
To cite this notebook, please use the suggested citation below.
|
|
10
|
+
|
|
11
|
+
:::{important}
|
|
12
|
+
Many notebooks are adapted from other sources: blogs, books... In such cases you should
|
|
13
|
+
cite the original source as well.
|
|
14
|
+
|
|
15
|
+
Also remember to cite the relevant libraries used by your code.
|
|
16
|
+
:::
|
|
17
|
+
|
|
18
|
+
Here is an example citation template in bibtex:
|
|
19
|
+
|
|
20
|
+
{{ citation_code }}
|
|
21
|
+
|
|
22
|
+
which once rendered could look like:
|
|
23
|
+
|
|
24
|
+
<!-- continues in _templates/page.html!!! -->
|
|
25
|
+
<!-- I wanted to get some kind of automation to the process,
|
|
26
|
+
and html templates have access to many variables that are not available
|
|
27
|
+
from jinja-myst -->
|