pytensor 2.31.7__tar.gz → 2.32.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.
Files changed (486) hide show
  1. {pytensor-2.31.7/pytensor.egg-info → pytensor-2.32.0}/PKG-INFO +1 -3
  2. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/type.md +0 -1
  3. {pytensor-2.31.7 → pytensor-2.32.0}/pyproject.toml +1 -1
  4. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/_version.py +3 -3
  5. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/basic.py +21 -10
  6. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/basic.py +8 -4
  7. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/nlinalg.py +0 -11
  8. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/slinalg.py +11 -0
  9. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/basic.py +9 -11
  10. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +87 -1
  11. pytensor-2.32.0/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +880 -0
  12. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/nlinalg.py +0 -36
  13. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/scalar.py +60 -70
  14. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/slinalg.py +104 -1
  15. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/__init__.py +1 -0
  16. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/basic.py +10 -1
  17. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -16
  18. pytensor-2.32.0/pytensor/link/pytorch/dispatch/slinalg.py +23 -0
  19. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/printing.py +12 -36
  20. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/raise_op.py +24 -53
  21. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/__init__.py +0 -1
  22. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/basic.py +13 -2
  23. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blas.py +14 -22
  24. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/extra_ops.py +38 -1
  25. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/math.py +66 -137
  26. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/nlinalg.py +0 -171
  27. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/__init__.py +0 -1
  28. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/basic.py +11 -9
  29. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/blas.py +80 -95
  30. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/elemwise.py +33 -62
  31. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/linalg.py +4 -13
  32. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/math.py +270 -138
  33. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/subtensor.py +108 -64
  34. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/subtensor_lift.py +110 -41
  35. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/slinalg.py +389 -4
  36. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/subtensor.py +6 -2
  37. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/reduction.py +2 -2
  38. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/shape.py +2 -23
  39. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/type.py +156 -27
  40. {pytensor-2.31.7 → pytensor-2.32.0/pytensor.egg-info}/PKG-INFO +1 -3
  41. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/SOURCES.txt +2 -2
  42. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/requires.txt +0 -2
  43. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_gradient.py +19 -1
  44. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_printing.py +4 -4
  45. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_raise_op.py +12 -5
  46. pytensor-2.31.7/pytensor/tensor/blas_scipy.py +0 -34
  47. pytensor-2.31.7/pytensor/tensor/rewriting/blas_scipy.py +0 -37
  48. {pytensor-2.31.7 → pytensor-2.32.0}/LICENSE.txt +0 -0
  49. {pytensor-2.31.7 → pytensor-2.32.0}/MANIFEST.in +0 -0
  50. {pytensor-2.31.7 → pytensor-2.32.0}/README.rst +0 -0
  51. {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/PLACEHOLDER +0 -0
  52. {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/layout.html +0 -0
  53. {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/nb-badges.html +0 -0
  54. {pytensor-2.31.7 → pytensor-2.32.0}/doc/.templates/rendered_citation.html +0 -0
  55. {pytensor-2.31.7 → pytensor-2.32.0}/doc/LICENSE.txt +0 -0
  56. {pytensor-2.31.7 → pytensor-2.32.0}/doc/README.md +0 -0
  57. {pytensor-2.31.7 → pytensor-2.32.0}/doc/acknowledgement.rst +0 -0
  58. {pytensor-2.31.7 → pytensor-2.32.0}/doc/bcast.png +0 -0
  59. {pytensor-2.31.7 → pytensor-2.32.0}/doc/bcast.svg +0 -0
  60. {pytensor-2.31.7 → pytensor-2.32.0}/doc/blog.md +0 -0
  61. {pytensor-2.31.7 → pytensor-2.32.0}/doc/conf.py +0 -0
  62. {pytensor-2.31.7 → pytensor-2.32.0}/doc/core_development_guide.rst +0 -0
  63. {pytensor-2.31.7 → pytensor-2.32.0}/doc/css.inc +0 -0
  64. {pytensor-2.31.7 → pytensor-2.32.0}/doc/dev_start_guide.rst +0 -0
  65. {pytensor-2.31.7 → pytensor-2.32.0}/doc/environment.yml +0 -0
  66. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/apply.png +0 -0
  67. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/apply.svg +0 -0
  68. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/apply2.svg +0 -0
  69. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/creating_a_c_op.rst +0 -0
  70. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/creating_a_numba_jax_op.rst +0 -0
  71. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/creating_an_op.rst +0 -0
  72. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/ctype.rst +0 -0
  73. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/extending_faq.rst +0 -0
  74. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
  75. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/graph_rewriting.rst +0 -0
  76. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/graphstructures.rst +0 -0
  77. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/index.rst +0 -0
  78. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/inplace.rst +0 -0
  79. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/op.rst +0 -0
  80. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/other_ops.rst +0 -0
  81. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
  82. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
  83. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/pipeline.rst +0 -0
  84. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/scan.rst +0 -0
  85. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/tips.rst +0 -0
  86. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/type.rst +0 -0
  87. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/unittest.rst +0 -0
  88. {pytensor-2.31.7 → pytensor-2.32.0}/doc/extending/using_params.rst +0 -0
  89. {pytensor-2.31.7 → pytensor-2.32.0}/doc/faq.rst +0 -0
  90. {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/optimize/root.ipynb +0 -0
  91. {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/page_footer.md +0 -0
  92. {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
  93. {pytensor-2.31.7 → pytensor-2.32.0}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
  94. {pytensor-2.31.7 → pytensor-2.32.0}/doc/generate_dtype_tensor_table.py +0 -0
  95. {pytensor-2.31.7 → pytensor-2.32.0}/doc/glossary.rst +0 -0
  96. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/Elman_srnn.png +0 -0
  97. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/PyTensor.png +0 -0
  98. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/PyTensor_RGB.svg +0 -0
  99. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/PyTensor_logo.png +0 -0
  100. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/binder.svg +0 -0
  101. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/blocksparse.png +0 -0
  102. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/colab.svg +0 -0
  103. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/github.svg +0 -0
  104. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/lstm.png +0 -0
  105. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/lstm_memorycell.png +0 -0
  106. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/talk2010.gif +0 -0
  107. {pytensor-2.31.7 → pytensor-2.32.0}/doc/images/talk2010.png +0 -0
  108. {pytensor-2.31.7 → pytensor-2.32.0}/doc/index.rst +0 -0
  109. {pytensor-2.31.7 → pytensor-2.32.0}/doc/install.rst +0 -0
  110. {pytensor-2.31.7 → pytensor-2.32.0}/doc/internal/how_to_release.rst +0 -0
  111. {pytensor-2.31.7 → pytensor-2.32.0}/doc/internal/index.rst +0 -0
  112. {pytensor-2.31.7 → pytensor-2.32.0}/doc/internal/metadocumentation.rst +0 -0
  113. {pytensor-2.31.7 → pytensor-2.32.0}/doc/introduction.rst +0 -0
  114. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/debugmode.rst +0 -0
  115. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/function.rst +0 -0
  116. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/index.rst +0 -0
  117. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/io.rst +0 -0
  118. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/mode.rst +0 -0
  119. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/nanguardmode.rst +0 -0
  120. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/opfromgraph.rst +0 -0
  121. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/ops.rst +0 -0
  122. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/profilemode.rst +0 -0
  123. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/compile/shared.rst +0 -0
  124. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/config.rst +0 -0
  125. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
  126. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
  127. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
  128. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
  129. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
  130. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
  131. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
  132. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp.html +0 -0
  133. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp.png +0 -0
  134. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp2.html +0 -0
  135. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
  136. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/mlp2.png +0 -0
  137. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/ofg.html +0 -0
  138. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/examples/ofg2.html +0 -0
  139. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index.ipynb +0 -0
  140. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index.rst +0 -0
  141. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
  142. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
  143. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
  144. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
  145. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/features.rst +0 -0
  146. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/fgraph.rst +0 -0
  147. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/graph.rst +0 -0
  148. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/index.rst +0 -0
  149. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/op.rst +0 -0
  150. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/replace.rst +0 -0
  151. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/type.rst +0 -0
  152. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/graph/utils.rst +0 -0
  153. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/index.rst +0 -0
  154. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/misc/pkl_utils.rst +0 -0
  155. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/printing.rst +0 -0
  156. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/scalar/index.rst +0 -0
  157. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/scan.rst +0 -0
  158. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/sparse/index.rst +0 -0
  159. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/sparse/sandbox.rst +0 -0
  160. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/basic.rst +0 -0
  161. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/basic_opt.rst +0 -0
  162. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/bcast.png +0 -0
  163. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/bcast.svg +0 -0
  164. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/conv.rst +0 -0
  165. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/elemwise.rst +0 -0
  166. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/extra_ops.rst +0 -0
  167. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/fft.rst +0 -0
  168. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/functional.rst +0 -0
  169. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/index.rst +0 -0
  170. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/io.rst +0 -0
  171. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/math_opt.rst +0 -0
  172. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/nlinalg.rst +0 -0
  173. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/optimize.rst +0 -0
  174. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/plot_fft.png +0 -0
  175. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/random/distributions.rst +0 -0
  176. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/random/index.rst +0 -0
  177. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/slinalg.rst +0 -0
  178. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/tensor/utils.rst +0 -0
  179. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/typed_list.rst +0 -0
  180. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/index.md +0 -0
  181. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/linalg.md +0 -0
  182. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/math.md +0 -0
  183. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/module_functions.md +0 -0
  184. {pytensor-2.31.7 → pytensor-2.32.0}/doc/library/xtensor/random.md +0 -0
  185. {pytensor-2.31.7 → pytensor-2.32.0}/doc/links.rst +0 -0
  186. {pytensor-2.31.7 → pytensor-2.32.0}/doc/optimizations.rst +0 -0
  187. {pytensor-2.31.7 → pytensor-2.32.0}/doc/pylintrc +0 -0
  188. {pytensor-2.31.7 → pytensor-2.32.0}/doc/robots.txt +0 -0
  189. {pytensor-2.31.7 → pytensor-2.32.0}/doc/troubleshooting.rst +0 -0
  190. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/adding.rst +0 -0
  191. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/adding_solution_1.py +0 -0
  192. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/aliasing.rst +0 -0
  193. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/apply.png +0 -0
  194. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/apply.svg +0 -0
  195. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/bcast.png +0 -0
  196. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/broadcasting.rst +0 -0
  197. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/conditions.rst +0 -0
  198. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/debug_faq.rst +0 -0
  199. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/dlogistic.png +0 -0
  200. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/examples.rst +0 -0
  201. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/faq_tutorial.rst +0 -0
  202. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/gradients.rst +0 -0
  203. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/index.rst +0 -0
  204. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/loading_and_saving.rst +0 -0
  205. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/logistic.gp +0 -0
  206. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/logistic.png +0 -0
  207. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/loop.rst +0 -0
  208. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/loop_solution_1.py +0 -0
  209. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/modes.rst +0 -0
  210. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/modes_solution_1.py +0 -0
  211. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/multi_cores.rst +0 -0
  212. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/nan_tutorial.rst +0 -0
  213. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/d3viz.png +0 -0
  214. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
  215. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
  216. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
  217. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/printing_drawing.rst +0 -0
  218. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/prng.rst +0 -0
  219. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/profiling.rst +0 -0
  220. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/profiling_example.py +0 -0
  221. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/profiling_example_out.prof +0 -0
  222. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/shape_info.rst +0 -0
  223. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/sparse.rst +0 -0
  224. {pytensor-2.31.7 → pytensor-2.32.0}/doc/tutorial/symbolic_graphs.rst +0 -0
  225. {pytensor-2.31.7 → pytensor-2.32.0}/doc/user_guide.rst +0 -0
  226. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/__init__.py +0 -0
  227. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/bin/__init__.py +0 -0
  228. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/bin/pytensor_cache.py +0 -0
  229. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/breakpoint.py +0 -0
  230. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/__init__.py +0 -0
  231. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/builders.py +0 -0
  232. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/compiledir.py +0 -0
  233. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/compilelock.py +0 -0
  234. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/debugmode.py +0 -0
  235. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/function/__init__.py +0 -0
  236. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/function/pfunc.py +0 -0
  237. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/function/types.py +0 -0
  238. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/io.py +0 -0
  239. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/mode.py +0 -0
  240. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/monitormode.py +0 -0
  241. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/nanguardmode.py +0 -0
  242. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/ops.py +0 -0
  243. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/profiling.py +0 -0
  244. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/compile/sharedvalue.py +0 -0
  245. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/configdefaults.py +0 -0
  246. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/configparser.py +0 -0
  247. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/__init__.py +0 -0
  248. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
  249. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/css/d3viz.css +0 -0
  250. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/d3viz.py +0 -0
  251. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/formatting.py +0 -0
  252. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/html/template.html +0 -0
  253. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
  254. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
  255. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/d3viz.js +0 -0
  256. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
  257. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
  258. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/gradient.py +0 -0
  259. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/__init__.py +0 -0
  260. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/basic.py +0 -0
  261. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/destroyhandler.py +0 -0
  262. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/features.py +0 -0
  263. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/fg.py +0 -0
  264. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/null_type.py +0 -0
  265. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/op.py +0 -0
  266. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/replace.py +0 -0
  267. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/__init__.py +0 -0
  268. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/db.py +0 -0
  269. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/kanren.py +0 -0
  270. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/unify.py +0 -0
  271. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/rewriting/utils.py +0 -0
  272. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/type.py +0 -0
  273. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/graph/utils.py +0 -0
  274. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/ifelse.py +0 -0
  275. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/ipython.py +0 -0
  276. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/__init__.py +0 -0
  277. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/basic.py +0 -0
  278. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/__init__.py +0 -0
  279. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/basic.py +0 -0
  280. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
  281. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
  282. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/cmodule.py +0 -0
  283. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/cutils.py +0 -0
  284. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/cvm.py +0 -0
  285. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/exceptions.py +0 -0
  286. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/interface.py +0 -0
  287. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/lazylinker_c.py +0 -0
  288. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/op.py +0 -0
  289. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/params_type.py +0 -0
  290. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/c/type.py +0 -0
  291. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/__init__.py +0 -0
  292. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/__init__.py +0 -0
  293. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/blas.py +0 -0
  294. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/blockwise.py +0 -0
  295. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/einsum.py +0 -0
  296. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
  297. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
  298. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/math.py +0 -0
  299. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/pad.py +0 -0
  300. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/random.py +0 -0
  301. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/scalar.py +0 -0
  302. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/scan.py +0 -0
  303. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/shape.py +0 -0
  304. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
  305. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
  306. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/sort.py +0 -0
  307. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
  308. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/subtensor.py +0 -0
  309. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
  310. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/jax/linker.py +0 -0
  311. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/__init__.py +0 -0
  312. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/__init__.py +0 -0
  313. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/blockwise.py +0 -0
  314. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/cython_support.py +0 -0
  315. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/elemwise.py +0 -0
  316. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
  317. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
  318. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
  319. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
  320. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
  321. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
  322. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/__init__.py +0 -0
  323. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/cholesky.py +0 -0
  324. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/general.py +0 -0
  325. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/lu_solve.py +0 -0
  326. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/norm.py +0 -0
  327. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/posdef.py +0 -0
  328. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/symmetric.py +0 -0
  329. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/triangular.py +0 -0
  330. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/tridiagonal.py +0 -0
  331. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/solve/utils.py +0 -0
  332. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
  333. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/random.py +0 -0
  334. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/scan.py +0 -0
  335. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
  336. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
  337. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/sparse.py +0 -0
  338. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/subtensor.py +0 -0
  339. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
  340. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
  341. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/numba/linker.py +0 -0
  342. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/blas.py +0 -0
  343. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
  344. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
  345. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
  346. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/math.py +0 -0
  347. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
  348. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/shape.py +0 -0
  349. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/sort.py +0 -0
  350. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
  351. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/pytorch/linker.py +0 -0
  352. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/utils.py +0 -0
  353. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/link/vm.py +0 -0
  354. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/__init__.py +0 -0
  355. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/check_blas.py +0 -0
  356. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/check_blas_many.sh +0 -0
  357. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/check_duplicate_key.py +0 -0
  358. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
  359. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/elemwise_time_test.py +0 -0
  360. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/frozendict.py +0 -0
  361. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/may_share_memory.py +0 -0
  362. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/ordered_set.py +0 -0
  363. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/misc/pkl_utils.py +0 -0
  364. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/npy_2_compat.py +0 -0
  365. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/py.typed +0 -0
  366. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/__init__.py +0 -0
  367. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/basic.py +0 -0
  368. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
  369. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
  370. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/gamma.c +0 -0
  371. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/c_code/incbet.c +0 -0
  372. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/loop.py +0 -0
  373. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/math.py +0 -0
  374. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scalar/sharedvar.py +0 -0
  375. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/__init__.py +0 -0
  376. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/basic.py +0 -0
  377. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/checkpoints.py +0 -0
  378. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/op.py +0 -0
  379. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/rewriting.py +0 -0
  380. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/scan_perform.pyx +0 -0
  381. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/scan_perform_ext.py +0 -0
  382. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/utils.py +0 -0
  383. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/scan/views.py +0 -0
  384. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/__init__.py +0 -0
  385. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/basic.py +0 -0
  386. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/rewriting.py +0 -0
  387. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sandbox/__init__.py +0 -0
  388. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sandbox/sp.py +0 -0
  389. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sandbox/sp2.py +0 -0
  390. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/sharedvar.py +0 -0
  391. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/type.py +0 -0
  392. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/sparse/utils.py +0 -0
  393. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/__init__.py +0 -0
  394. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/solve/__init__.py +0 -0
  395. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/solve/rewriting.py +0 -0
  396. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/_linalg/solve/tridiagonal.py +0 -0
  397. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blas_c.py +0 -0
  398. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blas_headers.py +0 -0
  399. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/blockwise.py +0 -0
  400. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
  401. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
  402. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/c_code/dimshuffle.c +0 -0
  403. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/conv/__init__.py +0 -0
  404. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/conv/abstract_conv.py +0 -0
  405. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/einsum.py +0 -0
  406. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/elemwise.py +0 -0
  407. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/elemwise_cgen.py +0 -0
  408. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/exceptions.py +0 -0
  409. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/fft.py +0 -0
  410. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/fourier.py +0 -0
  411. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/functional.py +0 -0
  412. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/inplace.py +0 -0
  413. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/interpolate.py +0 -0
  414. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/io.py +0 -0
  415. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/linalg.py +0 -0
  416. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/optimize.py +0 -0
  417. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/pad.py +0 -0
  418. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/__init__.py +0 -0
  419. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/basic.py +0 -0
  420. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/op.py +0 -0
  421. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
  422. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/basic.py +0 -0
  423. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/jax.py +0 -0
  424. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/rewriting/numba.py +0 -0
  425. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/type.py +0 -0
  426. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/utils.py +0 -0
  427. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/random/var.py +0 -0
  428. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
  429. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/blockwise.py +0 -0
  430. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/einsum.py +0 -0
  431. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
  432. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/jax.py +0 -0
  433. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/numba.py +0 -0
  434. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/ofg.py +0 -0
  435. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/shape.py +0 -0
  436. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/special.py +0 -0
  437. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
  438. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/shape.py +0 -0
  439. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/sharedvar.py +0 -0
  440. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/signal/__init__.py +0 -0
  441. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/signal/conv.py +0 -0
  442. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/sort.py +0 -0
  443. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/special.py +0 -0
  444. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/type.py +0 -0
  445. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/type_other.py +0 -0
  446. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/utils.py +0 -0
  447. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/var.py +0 -0
  448. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/variable.py +0 -0
  449. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/tensor/xlogx.py +0 -0
  450. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/__init__.py +0 -0
  451. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/basic.py +0 -0
  452. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/rewriting.py +0 -0
  453. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/typed_list/type.py +0 -0
  454. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/updates.py +0 -0
  455. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/utils.py +0 -0
  456. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/__init__.py +0 -0
  457. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/basic.py +0 -0
  458. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/indexing.py +0 -0
  459. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/linalg.py +0 -0
  460. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/math.py +0 -0
  461. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/random.py +0 -0
  462. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/__init__.py +0 -0
  463. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/basic.py +0 -0
  464. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/indexing.py +0 -0
  465. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/math.py +0 -0
  466. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/reduction.py +0 -0
  467. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/utils.py +0 -0
  468. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/rewriting/vectorization.py +0 -0
  469. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/shape.py +0 -0
  470. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor/xtensor/vectorization.py +0 -0
  471. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/dependency_links.txt +0 -0
  472. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/entry_points.txt +0 -0
  473. {pytensor-2.31.7 → pytensor-2.32.0}/pytensor.egg-info/top_level.txt +0 -0
  474. {pytensor-2.31.7 → pytensor-2.32.0}/scripts/mypy-failing.txt +0 -0
  475. {pytensor-2.31.7 → pytensor-2.32.0}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
  476. {pytensor-2.31.7 → pytensor-2.32.0}/setup.cfg +0 -0
  477. {pytensor-2.31.7 → pytensor-2.32.0}/setup.py +0 -0
  478. {pytensor-2.31.7 → pytensor-2.32.0}/tests/link/c/c_code/test_cenum.h +0 -0
  479. {pytensor-2.31.7 → pytensor-2.32.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
  480. {pytensor-2.31.7 → pytensor-2.32.0}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
  481. {pytensor-2.31.7 → pytensor-2.32.0}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
  482. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_breakpoint.py +0 -0
  483. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_config.py +0 -0
  484. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_ifelse.py +0 -0
  485. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_rop.py +0 -0
  486. {pytensor-2.31.7 → pytensor-2.32.0}/tests/test_updates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytensor
3
- Version: 2.31.7
3
+ Version: 2.32.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-Expression: BSD-3-Clause
@@ -55,8 +55,6 @@ Provides-Extra: rtd
55
55
  Requires-Dist: sphinx<6,>=5.1.0; extra == "rtd"
56
56
  Requires-Dist: pygments; extra == "rtd"
57
57
  Requires-Dist: pydot; extra == "rtd"
58
- Requires-Dist: pydot2; extra == "rtd"
59
- Requires-Dist: pydot-ng; extra == "rtd"
60
58
  Provides-Extra: jax
61
59
  Requires-Dist: jax; extra == "jax"
62
60
  Requires-Dist: jaxlib; extra == "jax"
@@ -14,7 +14,6 @@
14
14
 
15
15
  ```{eval-rst}
16
16
  .. automodule:: pytensor.xtensor.type
17
- :noindex:
18
17
  :members: XTensorType, XTensorVariable, XTensorConstant
19
18
  ```
20
19
 
@@ -78,7 +78,7 @@ tests = [
78
78
  "pytest-mock",
79
79
  "pytest-sphinx",
80
80
  ]
81
- rtd = ["sphinx>=5.1.0,<6", "pygments", "pydot", "pydot2", "pydot-ng"]
81
+ rtd = ["sphinx>=5.1.0,<6", "pygments", "pydot"]
82
82
  jax = ["jax", "jaxlib"]
83
83
  numba = ["numba>=0.57", "llvmlite"]
84
84
 
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-07-08T17:42:30+0200",
11
+ "date": "2025-07-26T12:45:37+0200",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "4ce092fe4df857a2bf88a6a367b4a1592e10c0ee",
15
- "version": "2.31.7"
14
+ "full-revisionid": "6f8bb55521559b0f5ebb14ef536becca7c70f2a7",
15
+ "version": "2.32.0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -1550,6 +1550,7 @@ class PatternNodeRewriter(NodeRewriter):
1550
1550
  tracks=(),
1551
1551
  get_nodes=None,
1552
1552
  values_eq_approx=None,
1553
+ allow_cast=True,
1553
1554
  ):
1554
1555
  """
1555
1556
 
@@ -1572,6 +1573,10 @@ class PatternNodeRewriter(NodeRewriter):
1572
1573
  If you provide `tracks`, you must provide this parameter. It must be a
1573
1574
  function that takes the tracked node and returns a list of nodes on
1574
1575
  which we will try this rewrite.
1576
+ values_eq_approx
1577
+ TODO
1578
+ allow_cast
1579
+ Automatically cast the output of the rewrite whenever new and old types differ
1575
1580
 
1576
1581
  Notes
1577
1582
  -----
@@ -1586,6 +1591,7 @@ class PatternNodeRewriter(NodeRewriter):
1586
1591
  self.in_pattern = convert_strs_to_vars(in_pattern, var_map=var_map)
1587
1592
  self.out_pattern = convert_strs_to_vars(out_pattern, var_map=var_map)
1588
1593
  self.values_eq_approx = values_eq_approx
1594
+ self.allow_cast = allow_cast
1589
1595
  if isinstance(in_pattern, list | tuple):
1590
1596
  self.op = self.in_pattern[0]
1591
1597
  elif isinstance(in_pattern, dict):
@@ -1630,6 +1636,10 @@ class PatternNodeRewriter(NodeRewriter):
1630
1636
  if node.op != self.op:
1631
1637
  return False
1632
1638
 
1639
+ if len(node.outputs) != 1:
1640
+ # PatternNodeRewriter doesn't support replacing multi-output nodes
1641
+ return False
1642
+
1633
1643
  s = unify(self.in_pattern, node.out)
1634
1644
 
1635
1645
  if s is False:
@@ -1652,19 +1662,20 @@ class PatternNodeRewriter(NodeRewriter):
1652
1662
  ):
1653
1663
  return False
1654
1664
 
1655
- if ret.owner:
1665
+ [old_out] = node.outputs
1666
+ if not old_out.type.is_super(ret.type):
1667
+ # Type doesn't match
1656
1668
  if not (
1657
- len(node.outputs) == len(ret.owner.outputs)
1658
- and all(
1659
- o.type.is_super(new_o.type)
1660
- for o, new_o in zip(node.outputs, ret.owner.outputs, strict=True)
1661
- )
1669
+ self.allow_cast
1670
+ and isinstance(old_out.type, pytensor.tensor.TensorType)
1671
+ and isinstance(ret.type, pytensor.tensor.TensorType)
1662
1672
  ):
1663
1673
  return False
1664
- else:
1665
- # ret is just an input variable
1666
- assert len(node.outputs) == 1
1667
- if not node.outputs[0].type.is_super(ret.type):
1674
+
1675
+ # Try to cast tensors
1676
+ ret = ret.astype(old_out.type.dtype)
1677
+ if not old_out.type.is_super(ret.type):
1678
+ # Still doesn't match
1668
1679
  return False
1669
1680
 
1670
1681
  return [ret]
@@ -10,10 +10,11 @@ from pytensor.compile import JAX
10
10
  from pytensor.compile.builders import OpFromGraph
11
11
  from pytensor.compile.ops import DeepCopyOp, TypeCastingOp
12
12
  from pytensor.configdefaults import config
13
+ from pytensor.graph import Constant
13
14
  from pytensor.graph.fg import FunctionGraph
14
15
  from pytensor.ifelse import IfElse
15
16
  from pytensor.link.utils import fgraph_to_python
16
- from pytensor.raise_op import Assert, CheckAndRaise
17
+ from pytensor.raise_op import CheckAndRaise
17
18
 
18
19
 
19
20
  if config.floatX == "float64":
@@ -73,11 +74,14 @@ def jax_funcify_IfElse(op, **kwargs):
73
74
  return ifelse
74
75
 
75
76
 
76
- @jax_funcify.register(Assert)
77
77
  @jax_funcify.register(CheckAndRaise)
78
- def jax_funcify_CheckAndRaise(op, **kwargs):
78
+ def jax_funcify_CheckAndRaise(op, node, **kwargs):
79
+ conds = node.inputs[1:]
80
+ if any(isinstance(cond, Constant) and not bool(cond.data) for cond in conds):
81
+ raise op.exc_type(op.msg)
82
+
79
83
  warnings.warn(
80
- f"""Skipping `CheckAndRaise` Op (assertion: {op.msg}) as JAX tracing would remove it.""",
84
+ f"""Skipping {op} Op (assertion: {op.msg}) as JAX tracing would remove it.""",
81
85
  stacklevel=2,
82
86
  )
83
87
 
@@ -9,7 +9,6 @@ from pytensor.tensor.nlinalg import (
9
9
  KroneckerProduct,
10
10
  MatrixInverse,
11
11
  MatrixPinv,
12
- QRFull,
13
12
  SLogDet,
14
13
  )
15
14
 
@@ -67,16 +66,6 @@ def jax_funcify_MatrixInverse(op, **kwargs):
67
66
  return matrix_inverse
68
67
 
69
68
 
70
- @jax_funcify.register(QRFull)
71
- def jax_funcify_QRFull(op, **kwargs):
72
- mode = op.mode
73
-
74
- def qr_full(x, mode=mode):
75
- return jnp.linalg.qr(x, mode=mode)
76
-
77
- return qr_full
78
-
79
-
80
69
  @jax_funcify.register(MatrixPinv)
81
70
  def jax_funcify_Pinv(op, **kwargs):
82
71
  def pinv(x):
@@ -5,6 +5,7 @@ import jax
5
5
  from pytensor.link.jax.dispatch.basic import jax_funcify
6
6
  from pytensor.tensor.slinalg import (
7
7
  LU,
8
+ QR,
8
9
  BlockDiagonal,
9
10
  Cholesky,
10
11
  CholeskySolve,
@@ -168,3 +169,13 @@ def jax_funcify_ChoSolve(op, **kwargs):
168
169
  )
169
170
 
170
171
  return cho_solve
172
+
173
+
174
+ @jax_funcify.register(QR)
175
+ def jax_funcify_QR(op, **kwargs):
176
+ mode = op.mode
177
+
178
+ def qr(x, mode=mode):
179
+ return jax.scipy.linalg.qr(x, mode=mode)
180
+
181
+ return qr
@@ -402,24 +402,22 @@ def numba_funcify_DeepCopyOp(op, node, **kwargs):
402
402
  return deepcopyop
403
403
 
404
404
 
405
- @numba_njit
406
- def makeslice(*x):
407
- return slice(*x)
408
-
409
-
410
405
  @numba_funcify.register(MakeSlice)
411
406
  def numba_funcify_MakeSlice(op, **kwargs):
412
- return global_numba_func(makeslice)
413
-
407
+ @numba_njit
408
+ def makeslice(*x):
409
+ return slice(*x)
414
410
 
415
- @numba_njit
416
- def shape(x):
417
- return np.asarray(np.shape(x))
411
+ return makeslice
418
412
 
419
413
 
420
414
  @numba_funcify.register(Shape)
421
415
  def numba_funcify_Shape(op, **kwargs):
422
- return global_numba_func(shape)
416
+ @numba_njit
417
+ def shape(x):
418
+ return np.asarray(np.shape(x))
419
+
420
+ return shape
423
421
 
424
422
 
425
423
  @numba_funcify.register(Shape_i)
@@ -283,7 +283,6 @@ class _LAPACK:
283
283
 
284
284
  Called by scipy.linalg.lu_solve
285
285
  """
286
- ...
287
286
  lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "getrs")
288
287
  functype = ctypes.CFUNCTYPE(
289
288
  None,
@@ -457,3 +456,90 @@ class _LAPACK:
457
456
  _ptr_int, # INFO
458
457
  )
459
458
  return functype(lapack_ptr)
459
+
460
+ @classmethod
461
+ def numba_xgeqrf(cls, dtype):
462
+ """
463
+ Compute the QR factorization of a general M-by-N matrix A.
464
+
465
+ Used in QR decomposition (no pivoting).
466
+ """
467
+ lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "geqrf")
468
+ functype = ctypes.CFUNCTYPE(
469
+ None,
470
+ _ptr_int, # M
471
+ _ptr_int, # N
472
+ float_pointer, # A
473
+ _ptr_int, # LDA
474
+ float_pointer, # TAU
475
+ float_pointer, # WORK
476
+ _ptr_int, # LWORK
477
+ _ptr_int, # INFO
478
+ )
479
+ return functype(lapack_ptr)
480
+
481
+ @classmethod
482
+ def numba_xgeqp3(cls, dtype):
483
+ """
484
+ Compute the QR factorization with column pivoting of a general M-by-N matrix A.
485
+
486
+ Used in QR decomposition with pivoting.
487
+ """
488
+ lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "geqp3")
489
+ functype = ctypes.CFUNCTYPE(
490
+ None,
491
+ _ptr_int, # M
492
+ _ptr_int, # N
493
+ float_pointer, # A
494
+ _ptr_int, # LDA
495
+ _ptr_int, # JPVT
496
+ float_pointer, # TAU
497
+ float_pointer, # WORK
498
+ _ptr_int, # LWORK
499
+ _ptr_int, # INFO
500
+ )
501
+ return functype(lapack_ptr)
502
+
503
+ @classmethod
504
+ def numba_xorgqr(cls, dtype):
505
+ """
506
+ Generate the orthogonal matrix Q from a QR factorization (real types).
507
+
508
+ Used in QR decomposition to form Q.
509
+ """
510
+ lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "orgqr")
511
+ functype = ctypes.CFUNCTYPE(
512
+ None,
513
+ _ptr_int, # M
514
+ _ptr_int, # N
515
+ _ptr_int, # K
516
+ float_pointer, # A
517
+ _ptr_int, # LDA
518
+ float_pointer, # TAU
519
+ float_pointer, # WORK
520
+ _ptr_int, # LWORK
521
+ _ptr_int, # INFO
522
+ )
523
+ return functype(lapack_ptr)
524
+
525
+ @classmethod
526
+ def numba_xungqr(cls, dtype):
527
+ """
528
+ Generate the unitary matrix Q from a QR factorization (complex types).
529
+
530
+ Used in QR decomposition to form Q for complex types.
531
+ """
532
+ lapack_ptr, float_pointer = _get_lapack_ptr_and_ptr_type(dtype, "ungqr")
533
+ functype = ctypes.CFUNCTYPE(
534
+ None,
535
+ _ptr_int, # M
536
+ _ptr_int, # N
537
+ _ptr_int, # K
538
+ float_pointer, # A
539
+ _ptr_int, # LDA
540
+ float_pointer, # TAU
541
+ float_pointer, # WORK
542
+ _ptr_int, # LWORK
543
+ _ptr_int, # INFO
544
+ )
545
+ return functype(lapack_ptr)