pytensor 2.17.3__tar.gz → 2.18.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.17.3 → pytensor-2.18.0}/PKG-INFO +2 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/random/basic.rst +0 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pyproject.toml +2 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/_version.py +3 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/builders.py +8 -7
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/function/pfunc.py +2 -1
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/function/types.py +5 -5
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/mode.py +3 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/ops.py +4 -5
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/profiling.py +9 -9
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/sharedvalue.py +2 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/configparser.py +3 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/gradient.py +14 -26
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/__init__.py +1 -1
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/basic.py +50 -52
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/fg.py +21 -33
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/op.py +22 -25
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/replace.py +16 -5
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/basic.py +20 -20
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/db.py +7 -6
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/kanren.py +4 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/unify.py +2 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/utils.py +2 -1
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/type.py +2 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/utils.py +5 -4
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/ifelse.py +2 -1
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/basic.py +17 -26
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/basic.py +3 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/cmodule.py +164 -211
- pytensor-2.18.0/pytensor/link/c/exceptions.py +29 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/interface.py +23 -23
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/op.py +16 -28
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/__init__.py +1 -0
- pytensor-2.18.0/pytensor/link/jax/dispatch/blockwise.py +29 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/scalar.py +70 -40
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/cython_support.py +11 -10
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/random.py +2 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/scalar.py +1 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/scan.py +12 -12
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/utils.py +18 -22
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/vm.py +21 -29
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/check_duplicate_key.py +4 -5
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/printing.py +19 -29
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/basic.py +8 -8
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/loop.py +3 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/math.py +54 -6
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/op.py +5 -5
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/rewriting.py +9 -9
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/utils.py +7 -6
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/type.py +2 -1
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/__init__.py +3 -1
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/basic.py +10 -10
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas.py +1 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blockwise.py +45 -60
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/elemwise.py +3 -5
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/extra_ops.py +9 -9
- pytensor-2.18.0/pytensor/tensor/functional.py +125 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/math.py +6 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/nlinalg.py +1 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/basic.py +19 -38
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/op.py +4 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/rewriting/jax.py +0 -13
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/utils.py +4 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/elemwise.py +14 -13
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/linalg.py +55 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/math.py +22 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/shape.py +65 -7
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/subtensor.py +6 -5
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/type.py +14 -13
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/utils.py +40 -1
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/variable.py +36 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/utils.py +2 -3
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/PKG-INFO +2 -2
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/SOURCES.txt +2 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/requires.txt +1 -1
- pytensor-2.17.3/pytensor/link/c/exceptions.py +0 -18
- {pytensor-2.17.3 → pytensor-2.18.0}/LICENSE.txt +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/MANIFEST.in +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/README.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/bin/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/bin/pytensor-cache +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/bin/pytensor_cache.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/.templates/layout.html +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/LICENSE.txt +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/README.md +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/acknowledgement.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/bcast.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/bcast.svg +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/conf.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/core_development_guide.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/css.inc +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/dev_start_guide.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/environment.yml +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/apply.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/apply.svg +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/apply2.svg +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/ctype.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/extending_faq.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/graphstructures.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/inplace.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/op.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/other_ops.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/pipeline.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/scan.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/tips.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/type.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/unittest.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/using_params.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/faq.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/glossary.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/Elman_srnn.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/blocksparse.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/lstm.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/talk2010.gif +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/talk2010.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/install.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/internal/how_to_release.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/internal/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/introduction.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/function.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/io.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/mode.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/ops.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/shared.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/config.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/gradient.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/features.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/graph.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/op.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/type.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/utils.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/printing.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sandbox/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sandbox/linalg.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/scalar/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/scan.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sparse/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/basic.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/bcast.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/conv.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/fft.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/io.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/random/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/random/utils.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/utils.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/typed_list.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/links.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/optimizations.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/pylintrc +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/ccodegen.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/compilation.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/debugging_with_stepmode.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/elemwise_compiler.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/function.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/functional.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/how_to_make_ops.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/index2.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/interactive_debugger.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/logistic_regression_example.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/performance.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/randomnumbers.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/rethinkccodegen.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/sandbox.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/software.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/sparse.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/tensoroptools.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/scripts/docgen.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/troubleshooting.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/adding.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/apply.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/apply.svg +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/bcast.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/conditions.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/examples.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/gradients.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/index.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/logistic.gp +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/logistic.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/loop.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/modes.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/profiling.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/sparse.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/doc/user_guide.rst +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/bin/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/breakpoint.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/compiledir.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/compilelock.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/debugmode.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/function/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/io.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/monitormode.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/nanguardmode.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/configdefaults.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/features.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/null_type.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/cutils.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/cvm.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/params_type.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/type.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/slinalg.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/linker.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/elemwise_codegen.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/slinalg.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/sparse.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/linker.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/check_blas.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/frozendict.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/safe_asarray.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/py.typed +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/raise_op.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/views.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sandbox/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sandbox/sp.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sandbox/sp2.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/utils.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas_c.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas_headers.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas_scipy.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/c_code/dimshuffle.c +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/conv/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/conv/abstract_conv.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/fft.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/fourier.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/inplace.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/io.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/linalg.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/type.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/var.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blas_scipy.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/subtensor.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/slinalg.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/sort.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/special.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/type_other.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/var.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/basic.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/type.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/updates.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/version.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/scripts/downstream_pr.sh +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/scripts/mypy-failing.txt +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/scripts/upstream_pr.sh +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/setup.cfg +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/setup.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_breakpoint.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_config.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_gradient.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_ifelse.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_printing.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_raise_op.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_rop.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_updates.py +0 -0
- {pytensor-2.17.3 → pytensor-2.18.0}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pytensor
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.18.0
|
|
4
4
|
Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
|
|
5
5
|
Author-email: pymc-devs <pymc.devs@gmail.com>
|
|
6
6
|
License: .. _license:
|
|
@@ -74,7 +74,7 @@ Description-Content-Type: text/x-rst
|
|
|
74
74
|
License-File: LICENSE.txt
|
|
75
75
|
Requires-Dist: setuptools>=48.0.0
|
|
76
76
|
Requires-Dist: scipy>=0.14
|
|
77
|
-
Requires-Dist: numpy
|
|
77
|
+
Requires-Dist: numpy>=1.17.0
|
|
78
78
|
Requires-Dist: filelock
|
|
79
79
|
Requires-Dist: etuples
|
|
80
80
|
Requires-Dist: logical-unification
|
|
@@ -82,9 +82,6 @@ PyTensor can produce :class:`RandomVariable`\s that draw samples from many diffe
|
|
|
82
82
|
.. autoclass:: pytensor.tensor.random.basic.CategoricalRV
|
|
83
83
|
:members: __call__
|
|
84
84
|
|
|
85
|
-
.. autoclass:: pytensor.tensor.random.basic.ChiSquareRV
|
|
86
|
-
:members: __call__
|
|
87
|
-
|
|
88
85
|
.. autoclass:: pytensor.tensor.random.basic.DirichletRV
|
|
89
86
|
:members: __call__
|
|
90
87
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
requires = [
|
|
3
3
|
"setuptools>=48.0.0",
|
|
4
4
|
"cython",
|
|
5
|
-
"numpy>=1.17.0
|
|
5
|
+
"numpy>=1.17.0",
|
|
6
6
|
"versioneer[toml]==0.28",
|
|
7
7
|
]
|
|
8
8
|
build-backend = "setuptools.build_meta"
|
|
@@ -52,7 +52,7 @@ keywords = [
|
|
|
52
52
|
dependencies = [
|
|
53
53
|
"setuptools>=48.0.0",
|
|
54
54
|
"scipy>=0.14",
|
|
55
|
-
"numpy>=1.17.0
|
|
55
|
+
"numpy>=1.17.0",
|
|
56
56
|
"filelock",
|
|
57
57
|
"etuples",
|
|
58
58
|
"logical-unification",
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2023-
|
|
11
|
+
"date": "2023-11-20T14:04:50+0100",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.
|
|
14
|
+
"full-revisionid": "eb552eef7a8381e47a38ce0694244700693cb978",
|
|
15
|
+
"version": "2.18.0"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"""Define new Ops from existing Ops"""
|
|
2
2
|
from collections import OrderedDict
|
|
3
|
+
from collections.abc import Sequence
|
|
3
4
|
from copy import copy
|
|
4
5
|
from functools import partial
|
|
5
|
-
from typing import
|
|
6
|
+
from typing import Optional, cast
|
|
6
7
|
|
|
7
8
|
import pytensor.tensor as at
|
|
8
9
|
from pytensor import function
|
|
@@ -83,11 +84,11 @@ def infer_shape(outs, inputs, input_shapes):
|
|
|
83
84
|
|
|
84
85
|
def construct_nominal_fgraph(
|
|
85
86
|
inputs: Sequence[Variable], outputs: Sequence[Variable]
|
|
86
|
-
) ->
|
|
87
|
+
) -> tuple[
|
|
87
88
|
FunctionGraph,
|
|
88
89
|
Sequence[Variable],
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
dict[Variable, Variable],
|
|
91
|
+
dict[Variable, Variable],
|
|
91
92
|
]:
|
|
92
93
|
"""Construct an inner-`FunctionGraph` with ordered nominal inputs."""
|
|
93
94
|
dummy_inputs = []
|
|
@@ -306,13 +307,13 @@ class OpFromGraph(Op, HasInnerGraph):
|
|
|
306
307
|
|
|
307
308
|
def __init__(
|
|
308
309
|
self,
|
|
309
|
-
inputs:
|
|
310
|
-
outputs:
|
|
310
|
+
inputs: list[Variable],
|
|
311
|
+
outputs: list[Variable],
|
|
311
312
|
inline: bool = False,
|
|
312
313
|
lop_overrides: str = "default",
|
|
313
314
|
grad_overrides: str = "default",
|
|
314
315
|
rop_overrides: str = "default",
|
|
315
|
-
connection_pattern: Optional[
|
|
316
|
+
connection_pattern: Optional[list[list[bool]]] = None,
|
|
316
317
|
name: Optional[str] = None,
|
|
317
318
|
**kwargs,
|
|
318
319
|
):
|
|
@@ -3,8 +3,9 @@ Provide a simple user friendly API.
|
|
|
3
3
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
from collections.abc import Sequence
|
|
6
7
|
from copy import copy
|
|
7
|
-
from typing import Optional,
|
|
8
|
+
from typing import Optional, Union, overload
|
|
8
9
|
|
|
9
10
|
from pytensor.compile.function.types import Function, UnusedInputError, orig_function
|
|
10
11
|
from pytensor.compile.io import In, Out
|
|
@@ -6,7 +6,7 @@ import logging
|
|
|
6
6
|
import time
|
|
7
7
|
import warnings
|
|
8
8
|
from itertools import chain
|
|
9
|
-
from typing import TYPE_CHECKING,
|
|
9
|
+
from typing import TYPE_CHECKING, Optional
|
|
10
10
|
|
|
11
11
|
import numpy as np
|
|
12
12
|
|
|
@@ -170,13 +170,13 @@ class Supervisor(Feature):
|
|
|
170
170
|
|
|
171
171
|
|
|
172
172
|
def std_fgraph(
|
|
173
|
-
input_specs:
|
|
174
|
-
output_specs:
|
|
173
|
+
input_specs: list[SymbolicInput],
|
|
174
|
+
output_specs: list[SymbolicOutput],
|
|
175
175
|
accept_inplace: bool = False,
|
|
176
176
|
fgraph: Optional[FunctionGraph] = None,
|
|
177
|
-
features:
|
|
177
|
+
features: list[type[Feature]] = [PreserveVariableAttributes],
|
|
178
178
|
force_clone=False,
|
|
179
|
-
) ->
|
|
179
|
+
) -> tuple[FunctionGraph, list[SymbolicOutput]]:
|
|
180
180
|
"""Make or set up `FunctionGraph` corresponding to the input specs and the output specs.
|
|
181
181
|
|
|
182
182
|
Any `SymbolicInput` in the `input_specs`, if its `update` field is not
|
|
@@ -5,7 +5,7 @@ WRITEME
|
|
|
5
5
|
|
|
6
6
|
import logging
|
|
7
7
|
import warnings
|
|
8
|
-
from typing import Literal, Optional,
|
|
8
|
+
from typing import Literal, Optional, Union
|
|
9
9
|
|
|
10
10
|
from pytensor.compile.function.types import Supervisor
|
|
11
11
|
from pytensor.configdefaults import config
|
|
@@ -260,7 +260,7 @@ optdb.register(
|
|
|
260
260
|
# final pass just to make sure
|
|
261
261
|
optdb.register("merge3", MergeOptimizer(), "fast_run", "merge", position=100)
|
|
262
262
|
|
|
263
|
-
_tags: Union[
|
|
263
|
+
_tags: Union[tuple[str, str], tuple]
|
|
264
264
|
|
|
265
265
|
if config.check_stack_trace in ("raise", "warn", "log"):
|
|
266
266
|
_tags = ("fast_run", "fast_compile")
|
|
@@ -548,7 +548,7 @@ def register_mode(name, mode):
|
|
|
548
548
|
predefined_modes[name] = mode
|
|
549
549
|
|
|
550
550
|
|
|
551
|
-
def get_target_language(mode=None) ->
|
|
551
|
+
def get_target_language(mode=None) -> tuple[Literal["py", "c", "numba", "jax"], ...]:
|
|
552
552
|
"""Get the compilation target language."""
|
|
553
553
|
|
|
554
554
|
if mode is None:
|
|
@@ -8,7 +8,6 @@ help make new Ops more rapidly.
|
|
|
8
8
|
import copy
|
|
9
9
|
import pickle
|
|
10
10
|
import warnings
|
|
11
|
-
from typing import Dict, Tuple
|
|
12
11
|
|
|
13
12
|
from pytensor.graph.basic import Apply
|
|
14
13
|
from pytensor.graph.op import Op
|
|
@@ -44,8 +43,8 @@ class ViewOp(COp):
|
|
|
44
43
|
# Mapping from Type to C code (and version) to use.
|
|
45
44
|
# In the C code, the name of the input variable is %(iname)s,
|
|
46
45
|
# the output variable is %(oname)s.
|
|
47
|
-
c_code_and_version:
|
|
48
|
-
__props__:
|
|
46
|
+
c_code_and_version: dict = {}
|
|
47
|
+
__props__: tuple = ()
|
|
49
48
|
_f16_ok: bool = True
|
|
50
49
|
|
|
51
50
|
def make_node(self, x):
|
|
@@ -150,10 +149,10 @@ class DeepCopyOp(COp):
|
|
|
150
149
|
# Mapping from Type to C code (and version) to use.
|
|
151
150
|
# In the C code, the name of the input variable is %(iname)s,
|
|
152
151
|
# the output variable is %(oname)s.
|
|
153
|
-
c_code_and_version:
|
|
152
|
+
c_code_and_version: dict = {}
|
|
154
153
|
|
|
155
154
|
check_input: bool = False
|
|
156
|
-
__props__:
|
|
155
|
+
__props__: tuple = ()
|
|
157
156
|
_f16_ok: bool = True
|
|
158
157
|
|
|
159
158
|
def __init__(self):
|
|
@@ -16,7 +16,7 @@ import sys
|
|
|
16
16
|
import time
|
|
17
17
|
from collections import defaultdict
|
|
18
18
|
from contextlib import contextmanager
|
|
19
|
-
from typing import TYPE_CHECKING, Any,
|
|
19
|
+
from typing import TYPE_CHECKING, Any, Optional, Union
|
|
20
20
|
|
|
21
21
|
import numpy as np
|
|
22
22
|
|
|
@@ -48,7 +48,7 @@ total_fct_exec_time: float = 0.0
|
|
|
48
48
|
total_graph_rewrite_time: float = 0.0
|
|
49
49
|
total_time_linker: float = 0.0
|
|
50
50
|
|
|
51
|
-
_atexit_print_list:
|
|
51
|
+
_atexit_print_list: list["ProfileStats"] = []
|
|
52
52
|
_atexit_registered: bool = False
|
|
53
53
|
|
|
54
54
|
|
|
@@ -234,11 +234,11 @@ class ProfileStats:
|
|
|
234
234
|
# Total time spent in Function.vm.__call__
|
|
235
235
|
#
|
|
236
236
|
|
|
237
|
-
apply_time: Optional[
|
|
237
|
+
apply_time: Optional[dict[Union["FunctionGraph", Variable], float]] = None
|
|
238
238
|
|
|
239
|
-
apply_callcount: Optional[
|
|
239
|
+
apply_callcount: Optional[dict[Union["FunctionGraph", Variable], int]] = None
|
|
240
240
|
|
|
241
|
-
apply_cimpl: Optional[
|
|
241
|
+
apply_cimpl: Optional[dict[Apply, bool]] = None
|
|
242
242
|
# dict from node -> bool (1 if c, 0 if py)
|
|
243
243
|
#
|
|
244
244
|
|
|
@@ -246,15 +246,15 @@ class ProfileStats:
|
|
|
246
246
|
# pretty string to print in summary, to identify this output
|
|
247
247
|
#
|
|
248
248
|
|
|
249
|
-
variable_shape:
|
|
249
|
+
variable_shape: dict[Variable, Any] = {}
|
|
250
250
|
# Variable -> shapes
|
|
251
251
|
#
|
|
252
252
|
|
|
253
|
-
variable_strides:
|
|
253
|
+
variable_strides: dict[Variable, Any] = {}
|
|
254
254
|
# Variable -> strides
|
|
255
255
|
#
|
|
256
256
|
|
|
257
|
-
variable_offset:
|
|
257
|
+
variable_offset: dict[Variable, Any] = {}
|
|
258
258
|
# Variable -> offset
|
|
259
259
|
#
|
|
260
260
|
|
|
@@ -274,7 +274,7 @@ class ProfileStats:
|
|
|
274
274
|
|
|
275
275
|
linker_node_make_thunks: float = 0.0
|
|
276
276
|
|
|
277
|
-
linker_make_thunk_time:
|
|
277
|
+
linker_make_thunk_time: dict = {}
|
|
278
278
|
|
|
279
279
|
line_width = config.profiling__output_line_width
|
|
280
280
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import copy
|
|
4
4
|
from contextlib import contextmanager
|
|
5
5
|
from functools import singledispatch
|
|
6
|
-
from typing import TYPE_CHECKING,
|
|
6
|
+
from typing import TYPE_CHECKING, Optional
|
|
7
7
|
|
|
8
8
|
from pytensor.graph.basic import Variable
|
|
9
9
|
from pytensor.graph.utils import add_tag_trace
|
|
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
|
|
15
15
|
from pytensor.graph.type import Type
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
__SHARED_CONTEXT__: Optional[
|
|
18
|
+
__SHARED_CONTEXT__: Optional[list[Variable]] = None
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
@contextmanager
|
|
@@ -3,6 +3,7 @@ import os
|
|
|
3
3
|
import shlex
|
|
4
4
|
import sys
|
|
5
5
|
import warnings
|
|
6
|
+
from collections.abc import Sequence
|
|
6
7
|
from configparser import (
|
|
7
8
|
ConfigParser,
|
|
8
9
|
InterpolationError,
|
|
@@ -12,7 +13,7 @@ from configparser import (
|
|
|
12
13
|
)
|
|
13
14
|
from functools import wraps
|
|
14
15
|
from io import StringIO
|
|
15
|
-
from typing import Callable,
|
|
16
|
+
from typing import Callable, Optional, Union
|
|
16
17
|
|
|
17
18
|
from pytensor.utils import hash_from_code
|
|
18
19
|
|
|
@@ -72,7 +73,7 @@ class PyTensorConfigParser:
|
|
|
72
73
|
self._flags_dict = flags_dict
|
|
73
74
|
self._pytensor_cfg = pytensor_cfg
|
|
74
75
|
self._pytensor_raw_cfg = pytensor_raw_cfg
|
|
75
|
-
self._config_var_dict:
|
|
76
|
+
self._config_var_dict: dict = {}
|
|
76
77
|
super().__init__()
|
|
77
78
|
|
|
78
79
|
def __str__(self, print_doc=True):
|
|
@@ -2,21 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import time
|
|
4
4
|
import warnings
|
|
5
|
+
from collections.abc import Mapping, MutableSequence, Sequence
|
|
5
6
|
from functools import partial, reduce
|
|
6
|
-
from typing import
|
|
7
|
-
TYPE_CHECKING,
|
|
8
|
-
Callable,
|
|
9
|
-
Dict,
|
|
10
|
-
List,
|
|
11
|
-
Literal,
|
|
12
|
-
Mapping,
|
|
13
|
-
MutableSequence,
|
|
14
|
-
Optional,
|
|
15
|
-
Sequence,
|
|
16
|
-
Tuple,
|
|
17
|
-
TypeVar,
|
|
18
|
-
Union,
|
|
19
|
-
)
|
|
7
|
+
from typing import TYPE_CHECKING, Callable, Literal, Optional, TypeVar, Union
|
|
20
8
|
|
|
21
9
|
import numpy as np
|
|
22
10
|
|
|
@@ -44,7 +32,7 @@ grad_time: float = 0.0
|
|
|
44
32
|
# TODO: Add `overload` variants
|
|
45
33
|
def as_list_or_tuple(
|
|
46
34
|
use_list: bool, use_tuple: bool, outputs: Union[V, Sequence[V]]
|
|
47
|
-
) -> Union[V,
|
|
35
|
+
) -> Union[V, list[V], tuple[V, ...]]:
|
|
48
36
|
"""Return either a single object or a list/tuple of objects.
|
|
49
37
|
|
|
50
38
|
If `use_list` is True, `outputs` is returned as a list (if `outputs`
|
|
@@ -113,7 +101,7 @@ def grad_undefined(op, x_pos, x, comment=""):
|
|
|
113
101
|
return (
|
|
114
102
|
NullType(
|
|
115
103
|
"This variable is Null because the grad method for "
|
|
116
|
-
f"input {x_pos} ({x}) of the {op} op is
|
|
104
|
+
f"input {x_pos} ({x}) of the {op} op is undefined. {comment}"
|
|
117
105
|
)
|
|
118
106
|
)()
|
|
119
107
|
|
|
@@ -206,17 +194,17 @@ def Rop(
|
|
|
206
194
|
"""
|
|
207
195
|
|
|
208
196
|
if not isinstance(wrt, (list, tuple)):
|
|
209
|
-
_wrt:
|
|
197
|
+
_wrt: list[Variable] = [pytensor.tensor.as_tensor_variable(wrt)]
|
|
210
198
|
else:
|
|
211
199
|
_wrt = [pytensor.tensor.as_tensor_variable(x) for x in wrt]
|
|
212
200
|
|
|
213
201
|
if not isinstance(eval_points, (list, tuple)):
|
|
214
|
-
_eval_points:
|
|
202
|
+
_eval_points: list[Variable] = [pytensor.tensor.as_tensor_variable(eval_points)]
|
|
215
203
|
else:
|
|
216
204
|
_eval_points = [pytensor.tensor.as_tensor_variable(x) for x in eval_points]
|
|
217
205
|
|
|
218
206
|
if not isinstance(f, (list, tuple)):
|
|
219
|
-
_f:
|
|
207
|
+
_f: list[Variable] = [pytensor.tensor.as_tensor_variable(f)]
|
|
220
208
|
else:
|
|
221
209
|
_f = [pytensor.tensor.as_tensor_variable(x) for x in f]
|
|
222
210
|
|
|
@@ -237,7 +225,7 @@ def Rop(
|
|
|
237
225
|
# Tensor, Sparse have the ndim attribute
|
|
238
226
|
pass
|
|
239
227
|
|
|
240
|
-
seen_nodes:
|
|
228
|
+
seen_nodes: dict[Apply, Sequence[Variable]] = {}
|
|
241
229
|
|
|
242
230
|
def _traverse(node):
|
|
243
231
|
"""TODO: writeme"""
|
|
@@ -310,7 +298,7 @@ def Rop(
|
|
|
310
298
|
for out in _f:
|
|
311
299
|
_traverse(out.owner)
|
|
312
300
|
|
|
313
|
-
rval:
|
|
301
|
+
rval: list[Optional[Variable]] = []
|
|
314
302
|
for out in _f:
|
|
315
303
|
if out in _wrt:
|
|
316
304
|
rval.append(_eval_points[_wrt.index(out)])
|
|
@@ -394,19 +382,19 @@ def Lop(
|
|
|
394
382
|
If `f` is a list/tuple, then return a list/tuple with the results.
|
|
395
383
|
"""
|
|
396
384
|
if not isinstance(eval_points, (list, tuple)):
|
|
397
|
-
_eval_points:
|
|
385
|
+
_eval_points: list[Variable] = [pytensor.tensor.as_tensor_variable(eval_points)]
|
|
398
386
|
else:
|
|
399
387
|
_eval_points = [pytensor.tensor.as_tensor_variable(x) for x in eval_points]
|
|
400
388
|
|
|
401
389
|
if not isinstance(f, (list, tuple)):
|
|
402
|
-
_f:
|
|
390
|
+
_f: list[Variable] = [pytensor.tensor.as_tensor_variable(f)]
|
|
403
391
|
else:
|
|
404
392
|
_f = [pytensor.tensor.as_tensor_variable(x) for x in f]
|
|
405
393
|
|
|
406
394
|
grads = list(_eval_points)
|
|
407
395
|
|
|
408
396
|
if not isinstance(wrt, (list, tuple)):
|
|
409
|
-
_wrt:
|
|
397
|
+
_wrt: list[Variable] = [pytensor.tensor.as_tensor_variable(wrt)]
|
|
410
398
|
else:
|
|
411
399
|
_wrt = [pytensor.tensor.as_tensor_variable(x) for x in wrt]
|
|
412
400
|
|
|
@@ -504,7 +492,7 @@ def grad(
|
|
|
504
492
|
raise TypeError("Cost must be a scalar.")
|
|
505
493
|
|
|
506
494
|
if not isinstance(wrt, Sequence):
|
|
507
|
-
_wrt:
|
|
495
|
+
_wrt: list[Variable] = [wrt]
|
|
508
496
|
else:
|
|
509
497
|
_wrt = list(wrt)
|
|
510
498
|
|
|
@@ -1677,7 +1665,7 @@ def mode_not_slow(mode):
|
|
|
1677
1665
|
|
|
1678
1666
|
def verify_grad(
|
|
1679
1667
|
fun: Callable,
|
|
1680
|
-
pt:
|
|
1668
|
+
pt: list[np.ndarray],
|
|
1681
1669
|
n_tests: int = 2,
|
|
1682
1670
|
rng: Optional[Union[np.random.Generator, np.random.RandomState]] = None,
|
|
1683
1671
|
eps: Optional[float] = None,
|
|
@@ -9,7 +9,7 @@ from pytensor.graph.basic import (
|
|
|
9
9
|
clone,
|
|
10
10
|
ancestors,
|
|
11
11
|
)
|
|
12
|
-
from pytensor.graph.replace import clone_replace, graph_replace,
|
|
12
|
+
from pytensor.graph.replace import clone_replace, graph_replace, vectorize_graph
|
|
13
13
|
from pytensor.graph.op import Op
|
|
14
14
|
from pytensor.graph.type import Type
|
|
15
15
|
from pytensor.graph.fg import FunctionGraph
|