pytensor 2.25.4__tar.gz → 2.26.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 (419) hide show
  1. {pytensor-2.25.4/pytensor.egg-info → pytensor-2.26.0}/PKG-INFO +1 -1
  2. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/creating_a_c_op.rst +1 -1
  3. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/creating_a_numba_jax_op.rst +17 -17
  4. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/type.rst +1 -1
  5. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/io.rst +1 -1
  6. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/config.rst +1 -1
  7. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/graph/graph.rst +0 -7
  8. pytensor-2.26.0/doc/library/graph/index.rst +21 -0
  9. pytensor-2.26.0/doc/library/graph/op.rst +8 -0
  10. pytensor-2.26.0/doc/library/graph/replace.rst +8 -0
  11. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/basic.rst +34 -34
  12. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/conv.rst +1 -1
  13. pytensor-2.26.0/doc/library/tensor/functional.rst +2 -0
  14. pytensor-2.26.0/doc/library/tensor/index.rst +33 -0
  15. pytensor-2.26.0/doc/library/tensor/random/distributions.rst +8 -0
  16. pytensor-2.25.4/doc/library/tensor/random/utils.rst → pytensor-2.26.0/doc/library/tensor/random/index.rst +41 -16
  17. {pytensor-2.25.4 → pytensor-2.26.0}/doc/optimizations.rst +3 -3
  18. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/adding.rst +7 -7
  19. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/prng.rst +38 -38
  20. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/symbolic_graphs.rst +1 -1
  21. {pytensor-2.25.4 → pytensor-2.26.0}/pyproject.toml +7 -3
  22. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/_version.py +3 -3
  23. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/__init__.py +1 -0
  24. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/builders.py +12 -7
  25. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/function/types.py +122 -127
  26. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/mode.py +1 -0
  27. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/profiling.py +6 -6
  28. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/configdefaults.py +2 -2
  29. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/configparser.py +1 -5
  30. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/gradient.py +16 -18
  31. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/basic.py +19 -13
  32. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/null_type.py +0 -3
  33. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/op.py +16 -3
  34. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/type.py +1 -4
  35. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/ifelse.py +1 -1
  36. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/cmodule.py +40 -6
  37. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/interface.py +3 -3
  38. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/params_type.py +52 -31
  39. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/type.py +29 -16
  40. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/elemwise.py +3 -1
  41. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/__init__.py +3 -1
  42. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/basic.py +59 -5
  43. pytensor-2.26.0/pytensor/link/pytorch/dispatch/blockwise.py +32 -0
  44. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/scalar.py +11 -0
  45. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/shape.py +1 -1
  46. pytensor-2.26.0/pytensor/link/pytorch/dispatch/subtensor.py +129 -0
  47. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/printing.py +3 -2
  48. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/basic.py +45 -44
  49. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/loop.py +2 -2
  50. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/basic.py +18 -10
  51. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/rewriting.py +1 -1
  52. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/basic.py +11 -12
  53. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/rewriting.py +5 -5
  54. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/sandbox/sp.py +2 -3
  55. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/basic.py +20 -21
  56. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/blas.py +32 -10
  57. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/blockwise.py +46 -27
  58. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/einsum.py +4 -0
  59. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/elemwise.py +74 -104
  60. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/extra_ops.py +45 -72
  61. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/fft.py +5 -4
  62. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/functional.py +4 -0
  63. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/inplace.py +2 -2
  64. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/io.py +2 -2
  65. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/math.py +90 -38
  66. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/nlinalg.py +1 -1
  67. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/op.py +5 -13
  68. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/rewriting/basic.py +1 -1
  69. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/rewriting/jax.py +1 -1
  70. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/basic.py +5 -10
  71. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/blas.py +12 -8
  72. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/blas_scipy.py +1 -1
  73. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/blockwise.py +82 -4
  74. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/elemwise.py +4 -7
  75. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/jax.py +1 -1
  76. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/linalg.py +383 -5
  77. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/math.py +159 -236
  78. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/shape.py +2 -7
  79. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/subtensor.py +72 -41
  80. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/shape.py +2 -13
  81. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/sharedvar.py +1 -2
  82. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/slinalg.py +296 -101
  83. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/sort.py +1 -2
  84. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/subtensor.py +18 -9
  85. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/type.py +5 -6
  86. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/type_other.py +0 -6
  87. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/utils.py +3 -2
  88. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/variable.py +9 -7
  89. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/typed_list/rewriting.py +1 -1
  90. {pytensor-2.25.4 → pytensor-2.26.0/pytensor.egg-info}/PKG-INFO +1 -1
  91. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor.egg-info/SOURCES.txt +5 -3
  92. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_config.py +0 -9
  93. pytensor-2.25.4/doc/library/graph/index.rst +0 -21
  94. pytensor-2.25.4/doc/library/graph/op.rst +0 -12
  95. pytensor-2.25.4/doc/library/tensor/index.rst +0 -31
  96. pytensor-2.25.4/doc/library/tensor/random/basic.rst +0 -161
  97. pytensor-2.25.4/doc/library/tensor/random/index.rst +0 -21
  98. pytensor-2.25.4/pytensor/misc/safe_asarray.py +0 -57
  99. {pytensor-2.25.4 → pytensor-2.26.0}/LICENSE.txt +0 -0
  100. {pytensor-2.25.4 → pytensor-2.26.0}/MANIFEST.in +0 -0
  101. {pytensor-2.25.4 → pytensor-2.26.0}/README.rst +0 -0
  102. {pytensor-2.25.4 → pytensor-2.26.0}/doc/.templates/PLACEHOLDER +0 -0
  103. {pytensor-2.25.4 → pytensor-2.26.0}/doc/.templates/layout.html +0 -0
  104. {pytensor-2.25.4 → pytensor-2.26.0}/doc/LICENSE.txt +0 -0
  105. {pytensor-2.25.4 → pytensor-2.26.0}/doc/README.md +0 -0
  106. {pytensor-2.25.4 → pytensor-2.26.0}/doc/acknowledgement.rst +0 -0
  107. {pytensor-2.25.4 → pytensor-2.26.0}/doc/bcast.png +0 -0
  108. {pytensor-2.25.4 → pytensor-2.26.0}/doc/bcast.svg +0 -0
  109. {pytensor-2.25.4 → pytensor-2.26.0}/doc/conf.py +0 -0
  110. {pytensor-2.25.4 → pytensor-2.26.0}/doc/core_development_guide.rst +0 -0
  111. {pytensor-2.25.4 → pytensor-2.26.0}/doc/css.inc +0 -0
  112. {pytensor-2.25.4 → pytensor-2.26.0}/doc/dev_start_guide.rst +0 -0
  113. {pytensor-2.25.4 → pytensor-2.26.0}/doc/environment.yml +0 -0
  114. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/apply.png +0 -0
  115. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/apply.svg +0 -0
  116. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/apply2.svg +0 -0
  117. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/creating_an_op.rst +0 -0
  118. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/ctype.rst +0 -0
  119. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/extending_faq.rst +0 -0
  120. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
  121. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/graph_rewriting.rst +0 -0
  122. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/graphstructures.rst +0 -0
  123. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/index.rst +0 -0
  124. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/inplace.rst +0 -0
  125. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/op.rst +0 -0
  126. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/other_ops.rst +0 -0
  127. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
  128. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
  129. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/pipeline.rst +0 -0
  130. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/scan.rst +0 -0
  131. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/tips.rst +0 -0
  132. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/unittest.rst +0 -0
  133. {pytensor-2.25.4 → pytensor-2.26.0}/doc/extending/using_params.rst +0 -0
  134. {pytensor-2.25.4 → pytensor-2.26.0}/doc/faq.rst +0 -0
  135. {pytensor-2.25.4 → pytensor-2.26.0}/doc/generate_dtype_tensor_table.py +0 -0
  136. {pytensor-2.25.4 → pytensor-2.26.0}/doc/glossary.rst +0 -0
  137. {pytensor-2.25.4 → pytensor-2.26.0}/doc/images/Elman_srnn.png +0 -0
  138. {pytensor-2.25.4 → pytensor-2.26.0}/doc/images/PyTensor_RGB.svg +0 -0
  139. {pytensor-2.25.4 → pytensor-2.26.0}/doc/images/blocksparse.png +0 -0
  140. {pytensor-2.25.4 → pytensor-2.26.0}/doc/images/lstm.png +0 -0
  141. {pytensor-2.25.4 → pytensor-2.26.0}/doc/images/lstm_memorycell.png +0 -0
  142. {pytensor-2.25.4 → pytensor-2.26.0}/doc/images/talk2010.gif +0 -0
  143. {pytensor-2.25.4 → pytensor-2.26.0}/doc/images/talk2010.png +0 -0
  144. {pytensor-2.25.4 → pytensor-2.26.0}/doc/index.rst +0 -0
  145. {pytensor-2.25.4 → pytensor-2.26.0}/doc/install.rst +0 -0
  146. {pytensor-2.25.4 → pytensor-2.26.0}/doc/internal/how_to_release.rst +0 -0
  147. {pytensor-2.25.4 → pytensor-2.26.0}/doc/internal/index.rst +0 -0
  148. {pytensor-2.25.4 → pytensor-2.26.0}/doc/internal/metadocumentation.rst +0 -0
  149. {pytensor-2.25.4 → pytensor-2.26.0}/doc/introduction.rst +0 -0
  150. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/debugmode.rst +0 -0
  151. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/function.rst +0 -0
  152. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/index.rst +0 -0
  153. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/mode.rst +0 -0
  154. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/nanguardmode.rst +0 -0
  155. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/opfromgraph.rst +0 -0
  156. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/ops.rst +0 -0
  157. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/profilemode.rst +0 -0
  158. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/compile/shared.rst +0 -0
  159. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
  160. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
  161. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
  162. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
  163. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
  164. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
  165. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
  166. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/mlp.html +0 -0
  167. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/mlp.png +0 -0
  168. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/mlp2.html +0 -0
  169. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
  170. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/mlp2.png +0 -0
  171. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/ofg.html +0 -0
  172. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/examples/ofg2.html +0 -0
  173. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/index.ipynb +0 -0
  174. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/index.rst +0 -0
  175. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
  176. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
  177. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
  178. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
  179. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/gradient.rst +0 -0
  180. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/graph/features.rst +0 -0
  181. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/graph/fgraph.rst +0 -0
  182. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/graph/type.rst +0 -0
  183. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/graph/utils.rst +0 -0
  184. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/index.rst +0 -0
  185. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/misc/pkl_utils.rst +0 -0
  186. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/printing.rst +0 -0
  187. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/sandbox/index.rst +0 -0
  188. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/sandbox/linalg.rst +0 -0
  189. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/scalar/index.rst +0 -0
  190. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/scan.rst +0 -0
  191. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/sparse/index.rst +0 -0
  192. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/sparse/sandbox.rst +0 -0
  193. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/basic_opt.rst +0 -0
  194. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/bcast.png +0 -0
  195. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/bcast.svg +0 -0
  196. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/elemwise.rst +0 -0
  197. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/extra_ops.rst +0 -0
  198. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/fft.rst +0 -0
  199. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/io.rst +0 -0
  200. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/math_opt.rst +0 -0
  201. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/nlinalg.rst +0 -0
  202. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/plot_fft.png +0 -0
  203. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/slinalg.rst +0 -0
  204. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/tensor/utils.rst +0 -0
  205. {pytensor-2.25.4 → pytensor-2.26.0}/doc/library/typed_list.rst +0 -0
  206. {pytensor-2.25.4 → pytensor-2.26.0}/doc/links.rst +0 -0
  207. {pytensor-2.25.4 → pytensor-2.26.0}/doc/pylintrc +0 -0
  208. {pytensor-2.25.4 → pytensor-2.26.0}/doc/troubleshooting.rst +0 -0
  209. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/adding_solution_1.py +0 -0
  210. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/aliasing.rst +0 -0
  211. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/apply.png +0 -0
  212. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/apply.svg +0 -0
  213. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/bcast.png +0 -0
  214. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/broadcasting.rst +0 -0
  215. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/conditions.rst +0 -0
  216. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/debug_faq.rst +0 -0
  217. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/dlogistic.png +0 -0
  218. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/examples.rst +0 -0
  219. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/faq_tutorial.rst +0 -0
  220. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/gradients.rst +0 -0
  221. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/index.rst +0 -0
  222. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/loading_and_saving.rst +0 -0
  223. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/logistic.gp +0 -0
  224. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/logistic.png +0 -0
  225. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/loop.rst +0 -0
  226. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/loop_solution_1.py +0 -0
  227. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/modes.rst +0 -0
  228. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/modes_solution_1.py +0 -0
  229. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/multi_cores.rst +0 -0
  230. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/nan_tutorial.rst +0 -0
  231. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/pics/d3viz.png +0 -0
  232. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
  233. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
  234. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
  235. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/printing_drawing.rst +0 -0
  236. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/profiling.rst +0 -0
  237. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/profiling_example.py +0 -0
  238. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/profiling_example_out.prof +0 -0
  239. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/shape_info.rst +0 -0
  240. {pytensor-2.25.4 → pytensor-2.26.0}/doc/tutorial/sparse.rst +0 -0
  241. {pytensor-2.25.4 → pytensor-2.26.0}/doc/user_guide.rst +0 -0
  242. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/__init__.py +0 -0
  243. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/bin/__init__.py +0 -0
  244. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/bin/pytensor_cache.py +0 -0
  245. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/breakpoint.py +0 -0
  246. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/compiledir.py +0 -0
  247. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/compilelock.py +0 -0
  248. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/debugmode.py +0 -0
  249. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/function/__init__.py +0 -0
  250. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/function/pfunc.py +0 -0
  251. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/io.py +0 -0
  252. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/monitormode.py +0 -0
  253. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/nanguardmode.py +0 -0
  254. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/ops.py +0 -0
  255. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/compile/sharedvalue.py +0 -0
  256. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/__init__.py +0 -0
  257. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
  258. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/css/d3viz.css +0 -0
  259. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/d3viz.py +0 -0
  260. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/formatting.py +0 -0
  261. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
  262. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
  263. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/js/d3viz.js +0 -0
  264. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
  265. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
  266. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/__init__.py +0 -0
  267. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/destroyhandler.py +0 -0
  268. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/features.py +0 -0
  269. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/fg.py +0 -0
  270. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/replace.py +0 -0
  271. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/rewriting/__init__.py +0 -0
  272. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/rewriting/basic.py +0 -0
  273. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/rewriting/db.py +0 -0
  274. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/rewriting/kanren.py +0 -0
  275. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/rewriting/unify.py +0 -0
  276. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/rewriting/utils.py +0 -0
  277. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/graph/utils.py +0 -0
  278. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/__init__.py +0 -0
  279. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/basic.py +0 -0
  280. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/__init__.py +0 -0
  281. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/basic.py +0 -0
  282. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
  283. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
  284. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/cutils.py +0 -0
  285. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/cvm.py +0 -0
  286. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/exceptions.py +0 -0
  287. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/lazylinker_c.py +0 -0
  288. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/c/op.py +0 -0
  289. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/__init__.py +0 -0
  290. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/__init__.py +0 -0
  291. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/basic.py +0 -0
  292. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/blas.py +0 -0
  293. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/blockwise.py +0 -0
  294. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/einsum.py +0 -0
  295. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
  296. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
  297. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/math.py +0 -0
  298. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
  299. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/pad.py +0 -0
  300. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/random.py +0 -0
  301. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/scalar.py +0 -0
  302. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/scan.py +0 -0
  303. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/shape.py +0 -0
  304. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/slinalg.py +0 -0
  305. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/sort.py +0 -0
  306. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
  307. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/subtensor.py +0 -0
  308. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
  309. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/jax/linker.py +0 -0
  310. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/__init__.py +0 -0
  311. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/__init__.py +0 -0
  312. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/basic.py +0 -0
  313. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/cython_support.py +0 -0
  314. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
  315. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
  316. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/random.py +0 -0
  317. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/scalar.py +0 -0
  318. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/scan.py +0 -0
  319. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/slinalg.py +0 -0
  320. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/sparse.py +0 -0
  321. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/subtensor.py +0 -0
  322. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
  323. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
  324. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/numba/linker.py +0 -0
  325. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/blas.py +0 -0
  326. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
  327. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
  328. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/math.py +0 -0
  329. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
  330. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/dispatch/sort.py +0 -0
  331. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/pytorch/linker.py +0 -0
  332. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/utils.py +0 -0
  333. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/link/vm.py +0 -0
  334. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/__init__.py +0 -0
  335. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/check_blas.py +0 -0
  336. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/check_blas_many.sh +0 -0
  337. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/check_duplicate_key.py +0 -0
  338. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
  339. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/elemwise_time_test.py +0 -0
  340. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/frozendict.py +0 -0
  341. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/may_share_memory.py +0 -0
  342. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/ordered_set.py +0 -0
  343. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/misc/pkl_utils.py +0 -0
  344. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/py.typed +0 -0
  345. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/raise_op.py +0 -0
  346. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/__init__.py +0 -0
  347. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
  348. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
  349. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/c_code/gamma.c +0 -0
  350. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/c_code/incbet.c +0 -0
  351. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/math.py +0 -0
  352. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scalar/sharedvar.py +0 -0
  353. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/__init__.py +0 -0
  354. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/checkpoints.py +0 -0
  355. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/op.py +0 -0
  356. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/scan_perform.pyx +0 -0
  357. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/scan_perform_ext.py +0 -0
  358. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/utils.py +0 -0
  359. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/scan/views.py +0 -0
  360. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/__init__.py +0 -0
  361. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/sandbox/__init__.py +0 -0
  362. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/sandbox/sp2.py +0 -0
  363. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/sharedvar.py +0 -0
  364. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/type.py +0 -0
  365. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/sparse/utils.py +0 -0
  366. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/__init__.py +0 -0
  367. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/blas_c.py +0 -0
  368. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/blas_headers.py +0 -0
  369. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/blas_scipy.py +0 -0
  370. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
  371. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
  372. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/c_code/dimshuffle.c +0 -0
  373. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/conv/__init__.py +0 -0
  374. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/conv/abstract_conv.py +0 -0
  375. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/elemwise_cgen.py +0 -0
  376. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/exceptions.py +0 -0
  377. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/fourier.py +0 -0
  378. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/linalg.py +0 -0
  379. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/pad.py +0 -0
  380. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/__init__.py +0 -0
  381. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/basic.py +0 -0
  382. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
  383. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/rewriting/numba.py +0 -0
  384. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/type.py +0 -0
  385. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/utils.py +0 -0
  386. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/random/var.py +0 -0
  387. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/__init__.py +0 -0
  388. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
  389. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/einsum.py +0 -0
  390. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
  391. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/ofg.py +0 -0
  392. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/special.py +0 -0
  393. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
  394. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/special.py +0 -0
  395. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/var.py +0 -0
  396. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/tensor/xlogx.py +0 -0
  397. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/typed_list/__init__.py +0 -0
  398. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/typed_list/basic.py +0 -0
  399. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/typed_list/type.py +0 -0
  400. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/updates.py +0 -0
  401. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor/utils.py +0 -0
  402. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor.egg-info/dependency_links.txt +0 -0
  403. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor.egg-info/entry_points.txt +0 -0
  404. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor.egg-info/requires.txt +0 -0
  405. {pytensor-2.25.4 → pytensor-2.26.0}/pytensor.egg-info/top_level.txt +0 -0
  406. {pytensor-2.25.4 → pytensor-2.26.0}/scripts/mypy-failing.txt +0 -0
  407. {pytensor-2.25.4 → pytensor-2.26.0}/setup.cfg +0 -0
  408. {pytensor-2.25.4 → pytensor-2.26.0}/setup.py +0 -0
  409. {pytensor-2.25.4 → pytensor-2.26.0}/tests/link/c/c_code/test_cenum.h +0 -0
  410. {pytensor-2.25.4 → pytensor-2.26.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
  411. {pytensor-2.25.4 → pytensor-2.26.0}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
  412. {pytensor-2.25.4 → pytensor-2.26.0}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
  413. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_breakpoint.py +0 -0
  414. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_gradient.py +0 -0
  415. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_ifelse.py +0 -0
  416. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_printing.py +0 -0
  417. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_raise_op.py +0 -0
  418. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_rop.py +0 -0
  419. {pytensor-2.25.4 → pytensor-2.26.0}/tests/test_updates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytensor
3
- Version: 2.25.4
3
+ Version: 2.26.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:
@@ -152,7 +152,7 @@ This distance between consecutive elements of an array over a given dimension,
152
152
  is called the stride of that dimension.
153
153
 
154
154
 
155
- Accessing NumPy :class`ndarray`\s' data and properties
155
+ Accessing NumPy :class:`ndarray`'s data and properties
156
156
  ------------------------------------------------------
157
157
 
158
158
  The following macros serve to access various attributes of NumPy :class:`ndarray`\s.
@@ -4,7 +4,7 @@ Adding JAX, Numba and Pytorch support for `Op`\s
4
4
  PyTensor is able to convert its graphs into JAX, Numba and Pytorch compiled functions. In order to do
5
5
  this, each :class:`Op` in an PyTensor graph must have an equivalent JAX/Numba/Pytorch implementation function.
6
6
 
7
- This tutorial will explain how JAX, Numba and Pytorch implementations are created for an :class:`Op`.
7
+ This tutorial will explain how JAX, Numba and Pytorch implementations are created for an :class:`Op`.
8
8
 
9
9
  Step 1: Identify the PyTensor :class:`Op` you'd like to implement
10
10
  ------------------------------------------------------------------------
@@ -60,7 +60,7 @@ could also have any data type (e.g. floats, ints), so our implementation
60
60
  must be able to handle all the possible data types.
61
61
 
62
62
  It also tells us that there's only one return value, that it has a data type
63
- determined by :meth:`x.type()` i.e., the data type of the original tensor.
63
+ determined by :meth:`x.type` i.e., the data type of the original tensor.
64
64
  This implies that the result is necessarily a matrix.
65
65
 
66
66
  Some class may have a more complex behavior. For example, the :class:`CumOp`\ :class:`Op`
@@ -116,7 +116,7 @@ Here's an example for :class:`DimShuffle`:
116
116
 
117
117
  .. tab-set::
118
118
 
119
- .. tab-item:: JAX
119
+ .. tab-item:: JAX
120
120
 
121
121
  .. code:: python
122
122
 
@@ -134,7 +134,7 @@ Here's an example for :class:`DimShuffle`:
134
134
  res = jnp.copy(res)
135
135
 
136
136
  return res
137
-
137
+
138
138
  .. tab-item:: Numba
139
139
 
140
140
  .. code:: python
@@ -465,7 +465,7 @@ Step 4: Write tests
465
465
  .. tab-item:: JAX
466
466
 
467
467
  Test that your registered `Op` is working correctly by adding tests to the
468
- appropriate test suites in PyTensor (e.g. in ``tests.link.jax``).
468
+ appropriate test suites in PyTensor (e.g. in ``tests.link.jax``).
469
469
  The tests should ensure that your implementation can
470
470
  handle the appropriate types of inputs and produce outputs equivalent to `Op.perform`.
471
471
  Check the existing tests for the general outline of these kinds of tests. In
@@ -478,7 +478,7 @@ Step 4: Write tests
478
478
  Here's a small example of a test for :class:`CumOp` above:
479
479
 
480
480
  .. code:: python
481
-
481
+
482
482
  import numpy as np
483
483
  import pytensor.tensor as pt
484
484
  from pytensor.configdefaults import config
@@ -514,22 +514,22 @@ Step 4: Write tests
514
514
  .. code:: python
515
515
 
516
516
  import pytest
517
-
517
+
518
518
  def test_jax_CumOp():
519
519
  """Test JAX conversion of the `CumOp` `Op`."""
520
520
  a = pt.matrix("a")
521
521
  a.tag.test_value = np.arange(9, dtype=config.floatX).reshape((3, 3))
522
-
522
+
523
523
  with pytest.raises(NotImplementedError):
524
524
  out = pt.cumprod(a, axis=1)
525
525
  fgraph = FunctionGraph([a], [out])
526
526
  compare_jax_and_py(fgraph, [get_test_value(i) for i in fgraph.inputs])
527
-
528
-
527
+
528
+
529
529
  .. tab-item:: Numba
530
530
 
531
531
  Test that your registered `Op` is working correctly by adding tests to the
532
- appropriate test suites in PyTensor (e.g. in ``tests.link.numba``).
532
+ appropriate test suites in PyTensor (e.g. in ``tests.link.numba``).
533
533
  The tests should ensure that your implementation can
534
534
  handle the appropriate types of inputs and produce outputs equivalent to `Op.perform`.
535
535
  Check the existing tests for the general outline of these kinds of tests. In
@@ -542,7 +542,7 @@ Step 4: Write tests
542
542
  Here's a small example of a test for :class:`CumOp` above:
543
543
 
544
544
  .. code:: python
545
-
545
+
546
546
  from tests.link.numba.test_basic import compare_numba_and_py
547
547
  from pytensor.graph import FunctionGraph
548
548
  from pytensor.compile.sharedvalue import SharedVariable
@@ -561,11 +561,11 @@ Step 4: Write tests
561
561
  if not isinstance(i, SharedVariable | Constant)
562
562
  ],
563
563
  )
564
-
564
+
565
565
 
566
566
 
567
567
  .. tab-item:: Pytorch
568
-
568
+
569
569
  Test that your registered `Op` is working correctly by adding tests to the
570
570
  appropriate test suites in PyTensor (``tests.link.pytorch``). The tests should ensure that your implementation can
571
571
  handle the appropriate types of inputs and produce outputs equivalent to `Op.perform`.
@@ -579,7 +579,7 @@ Step 4: Write tests
579
579
  Here's a small example of a test for :class:`CumOp` above:
580
580
 
581
581
  .. code:: python
582
-
582
+
583
583
  import numpy as np
584
584
  import pytest
585
585
  import pytensor.tensor as pt
@@ -592,7 +592,7 @@ Step 4: Write tests
592
592
  ["float64", "int64"],
593
593
  )
594
594
  @pytest.mark.parametrize(
595
- "axis",
595
+ "axis",
596
596
  [None, 1, (0,)],
597
597
  )
598
598
  def test_pytorch_CumOp(axis, dtype):
@@ -650,4 +650,4 @@ as reported in issue `#654 <https://github.com/pymc-devs/pytensor/issues/654>`_.
650
650
  All jitted functions now must have constant shape, which means a graph like the
651
651
  one of :class:`Eye` can never be translated to JAX, since it's fundamentally a
652
652
  function with dynamic shapes. In other words, only PyTensor graphs with static shapes
653
- can be translated to JAX at the moment.
653
+ can be translated to JAX at the moment.
@@ -333,7 +333,7 @@ returns eitehr a new transferred variable (which can be the same as
333
333
  the input if no transfer is necessary) or returns None if the transfer
334
334
  can't be done.
335
335
 
336
- Then register that function by calling :func:`register_transfer()`
336
+ Then register that function by calling :func:`register_transfer`
337
337
  with it as argument.
338
338
 
339
339
  An example
@@ -36,7 +36,7 @@ The ``inputs`` argument to ``pytensor.function`` is a list, containing the ``Var
36
36
  ``self.<name>``. The default value is ``None``.
37
37
 
38
38
  ``value``: literal or ``Container``. The initial/default value for this
39
- input. If update is`` None``, this input acts just like
39
+ input. If update is ``None``, this input acts just like
40
40
  an argument with a default value in Python. If update is not ``None``,
41
41
  changes to this
42
42
  value will "stick around", whether due to an update or a user's
@@ -226,7 +226,7 @@ import ``pytensor`` and print the config variable, as in:
226
226
  in the future.
227
227
 
228
228
  The ``'numpy+floatX'`` setting attempts to mimic NumPy casting rules,
229
- although it prefers to use ``float32` `numbers instead of ``float64`` when
229
+ although it prefers to use ``float32`` numbers instead of ``float64`` when
230
230
  ``config.floatX`` is set to ``'float32'`` and the associated data is not
231
231
  explicitly typed as ``float64`` (e.g. regular Python floats). Note that
232
232
  ``'numpy+floatX'`` is not currently behaving exactly as planned (it is a
@@ -4,12 +4,5 @@
4
4
  :mod:`graph` -- Interface for the PyTensor graph
5
5
  ================================================
6
6
 
7
- ---------
8
- Reference
9
- ---------
10
-
11
7
  .. automodule:: pytensor.graph.basic
12
- :platform: Unix, Windows
13
- :synopsis: Interface for types of symbolic variables
14
8
  :members:
15
- .. moduleauthor:: LISA
@@ -0,0 +1,21 @@
1
+
2
+ .. _libdoc_graph:
3
+
4
+ ========================================
5
+ :mod:`graph` -- PyTensor Graph Internals
6
+ ========================================
7
+
8
+ .. module:: graph
9
+
10
+ .. moduleauthor:: LISA
11
+
12
+ .. toctree::
13
+ :maxdepth: 1
14
+
15
+ graph
16
+ fgraph
17
+ replace
18
+ features
19
+ op
20
+ type
21
+ utils
@@ -0,0 +1,8 @@
1
+ .. _libdoc_graph_op:
2
+
3
+ ===========================================
4
+ :mod:`op` -- Objects that define operations
5
+ ===========================================
6
+
7
+ .. automodule:: pytensor.graph.op
8
+ :members:
@@ -0,0 +1,8 @@
1
+ .. _libdoc_graph_replace:
2
+
3
+ ==================================================
4
+ :mod:`replace` -- High level graph transformations
5
+ ==================================================
6
+
7
+ .. automodule:: pytensor.graph.replace
8
+ :members:
@@ -908,8 +908,8 @@ Reductions
908
908
  :Parameter: *x* - symbolic Tensor (or compatible)
909
909
  :Parameter: *axis* - axis or axes along which to compute the maximum
910
910
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
911
- left in the result as dimensions with size one. With this option, the result
912
- will broadcast correctly against the original tensor.
911
+ left in the result as dimensions with size one. With this option, the result
912
+ will broadcast correctly against the original tensor.
913
913
  :Returns: maximum of *x* along *axis*
914
914
 
915
915
  axis can be:
@@ -922,8 +922,8 @@ Reductions
922
922
  :Parameter: *x* - symbolic Tensor (or compatible)
923
923
  :Parameter: *axis* - axis along which to compute the index of the maximum
924
924
  :Parameter: *keepdims* - (boolean) If this is set to True, the axis which is reduced is
925
- left in the result as a dimension with size one. With this option, the result
926
- will broadcast correctly against the original tensor.
925
+ left in the result as a dimension with size one. With this option, the result
926
+ will broadcast correctly against the original tensor.
927
927
  :Returns: the index of the maximum value along a given axis
928
928
 
929
929
  if ``axis == None``, `argmax` over the flattened tensor (like NumPy)
@@ -933,8 +933,8 @@ Reductions
933
933
  :Parameter: *x* - symbolic Tensor (or compatible)
934
934
  :Parameter: *axis* - axis along which to compute the maximum and its index
935
935
  :Parameter: *keepdims* - (boolean) If this is set to True, the axis which is reduced is
936
- left in the result as a dimension with size one. With this option, the result
937
- will broadcast correctly against the original tensor.
936
+ left in the result as a dimension with size one. With this option, the result
937
+ will broadcast correctly against the original tensor.
938
938
  :Returns: the maximum value along a given axis and its index.
939
939
 
940
940
  if ``axis == None``, `max_and_argmax` over the flattened tensor (like NumPy)
@@ -944,8 +944,8 @@ Reductions
944
944
  :Parameter: *x* - symbolic Tensor (or compatible)
945
945
  :Parameter: *axis* - axis or axes along which to compute the minimum
946
946
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
947
- left in the result as dimensions with size one. With this option, the result
948
- will broadcast correctly against the original tensor.
947
+ left in the result as dimensions with size one. With this option, the result
948
+ will broadcast correctly against the original tensor.
949
949
  :Returns: minimum of *x* along *axis*
950
950
 
951
951
  `axis` can be:
@@ -958,8 +958,8 @@ Reductions
958
958
  :Parameter: *x* - symbolic Tensor (or compatible)
959
959
  :Parameter: *axis* - axis along which to compute the index of the minimum
960
960
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
961
- left in the result as dimensions with size one. With this option, the result
962
- will broadcast correctly against the original tensor.
961
+ left in the result as dimensions with size one. With this option, the result
962
+ will broadcast correctly against the original tensor.
963
963
  :Returns: the index of the minimum value along a given axis
964
964
 
965
965
  if ``axis == None``, `argmin` over the flattened tensor (like NumPy)
@@ -980,8 +980,8 @@ Reductions
980
980
  This default dtype does _not_ depend on the value of "acc_dtype".
981
981
 
982
982
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
983
- left in the result as dimensions with size one. With this option, the result
984
- will broadcast correctly against the original tensor.
983
+ left in the result as dimensions with size one. With this option, the result
984
+ will broadcast correctly against the original tensor.
985
985
 
986
986
  :Parameter: *acc_dtype* - The dtype of the internal accumulator.
987
987
  If None (default), we use the dtype in the list below,
@@ -1015,8 +1015,8 @@ Reductions
1015
1015
  This default dtype does _not_ depend on the value of "acc_dtype".
1016
1016
 
1017
1017
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
1018
- left in the result as dimensions with size one. With this option, the result
1019
- will broadcast correctly against the original tensor.
1018
+ left in the result as dimensions with size one. With this option, the result
1019
+ will broadcast correctly against the original tensor.
1020
1020
 
1021
1021
  :Parameter: *acc_dtype* - The dtype of the internal accumulator.
1022
1022
  If None (default), we use the dtype in the list below,
@@ -1031,16 +1031,16 @@ Reductions
1031
1031
  as we need to handle 3 different cases: without zeros in the
1032
1032
  input reduced group, with 1 zero or with more zeros.
1033
1033
 
1034
- This could slow you down, but more importantly, we currently
1035
- don't support the second derivative of the 3 cases. So you
1036
- cannot take the second derivative of the default prod().
1034
+ This could slow you down, but more importantly, we currently
1035
+ don't support the second derivative of the 3 cases. So you
1036
+ cannot take the second derivative of the default prod().
1037
1037
 
1038
- To remove the handling of the special cases of 0 and so get
1039
- some small speed up and allow second derivative set
1040
- ``no_zeros_in_inputs`` to ``True``. It defaults to ``False``.
1038
+ To remove the handling of the special cases of 0 and so get
1039
+ some small speed up and allow second derivative set
1040
+ ``no_zeros_in_inputs`` to ``True``. It defaults to ``False``.
1041
1041
 
1042
- **It is the user responsibility to make sure there are no zeros
1043
- in the inputs. If there are, the grad will be wrong.**
1042
+ **It is the user responsibility to make sure there are no zeros
1043
+ in the inputs. If there are, the grad will be wrong.**
1044
1044
 
1045
1045
  :Returns: product of every term in *x* along *axis*
1046
1046
 
@@ -1058,13 +1058,13 @@ Reductions
1058
1058
  done in float64 (acc_dtype would be float64 by default),
1059
1059
  but that result will be casted back in float32.
1060
1060
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
1061
- left in the result as dimensions with size one. With this option, the result
1062
- will broadcast correctly against the original tensor.
1061
+ left in the result as dimensions with size one. With this option, the result
1062
+ will broadcast correctly against the original tensor.
1063
1063
  :Parameter: *acc_dtype* - The dtype of the internal accumulator of the
1064
1064
  inner summation. This will not necessarily be the dtype of the
1065
1065
  output (in particular if it is a discrete (int/uint) dtype, the
1066
1066
  output will be in a float type). If None, then we use the same
1067
- rules as :func:`sum()`.
1067
+ rules as :func:`sum`.
1068
1068
  :Returns: mean value of *x* along *axis*
1069
1069
 
1070
1070
  `axis` can be:
@@ -1077,8 +1077,8 @@ Reductions
1077
1077
  :Parameter: *x* - symbolic Tensor (or compatible)
1078
1078
  :Parameter: *axis* - axis or axes along which to compute the variance
1079
1079
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
1080
- left in the result as dimensions with size one. With this option, the result
1081
- will broadcast correctly against the original tensor.
1080
+ left in the result as dimensions with size one. With this option, the result
1081
+ will broadcast correctly against the original tensor.
1082
1082
  :Returns: variance of *x* along *axis*
1083
1083
 
1084
1084
  `axis` can be:
@@ -1091,8 +1091,8 @@ Reductions
1091
1091
  :Parameter: *x* - symbolic Tensor (or compatible)
1092
1092
  :Parameter: *axis* - axis or axes along which to compute the standard deviation
1093
1093
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
1094
- left in the result as dimensions with size one. With this option, the result
1095
- will broadcast correctly against the original tensor.
1094
+ left in the result as dimensions with size one. With this option, the result
1095
+ will broadcast correctly against the original tensor.
1096
1096
  :Returns: variance of *x* along *axis*
1097
1097
 
1098
1098
  `axis` can be:
@@ -1105,8 +1105,8 @@ Reductions
1105
1105
  :Parameter: *x* - symbolic Tensor (or compatible)
1106
1106
  :Parameter: *axis* - axis or axes along which to apply 'bitwise and'
1107
1107
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
1108
- left in the result as dimensions with size one. With this option, the result
1109
- will broadcast correctly against the original tensor.
1108
+ left in the result as dimensions with size one. With this option, the result
1109
+ will broadcast correctly against the original tensor.
1110
1110
  :Returns: bitwise and of *x* along *axis*
1111
1111
 
1112
1112
  `axis` can be:
@@ -1119,8 +1119,8 @@ Reductions
1119
1119
  :Parameter: *x* - symbolic Tensor (or compatible)
1120
1120
  :Parameter: *axis* - axis or axes along which to apply bitwise or
1121
1121
  :Parameter: *keepdims* - (boolean) If this is set to True, the axes which are reduced are
1122
- left in the result as dimensions with size one. With this option, the result
1123
- will broadcast correctly against the original tensor.
1122
+ left in the result as dimensions with size one. With this option, the result
1123
+ will broadcast correctly against the original tensor.
1124
1124
  :Returns: bitwise or of *x* along *axis*
1125
1125
 
1126
1126
  `axis` can be:
@@ -1745,7 +1745,7 @@ Linear Algebra
1745
1745
  when indexed, so that each returned argument has the same shape.
1746
1746
  The dimensions and number of the output arrays are equal to the
1747
1747
  number of indexing dimensions. If the step length is not a complex
1748
- number, then the stop is not inclusive.
1748
+ number, then the stop is not inclusive.
1749
1749
 
1750
1750
  Example:
1751
1751
 
@@ -8,4 +8,4 @@
8
8
  .. moduleauthor:: LISA, PyMC Developers, PyTensor Developers
9
9
 
10
10
  .. automodule:: pytensor.tensor.conv
11
- :members:
11
+ :members:
@@ -0,0 +1,2 @@
1
+ .. automodule:: pytensor.tensor.functional
2
+ :members: vectorize
@@ -0,0 +1,33 @@
1
+ .. _libdoc_tensor:
2
+
3
+ ===============================================
4
+ :mod:`tensor` -- Tensor operations in PyTensor
5
+ ===============================================
6
+
7
+ .. module:: tensor
8
+
9
+ PyTensor's strength is in expressing symbolic calculations involving tensors.
10
+
11
+ PyTensor tries to emulate the numpy interface as much as possible in the tensor module.
12
+ This means that once TensorVariables are created, it should be possibly to define
13
+ symbolic expressions using calls that look just like numpy calls, such as
14
+ `pt.exp(x).transpose(0, 1)[:, None]`
15
+
16
+
17
+
18
+ .. toctree::
19
+ :maxdepth: 1
20
+
21
+ basic
22
+ random/index
23
+ utils
24
+ elemwise
25
+ extra_ops
26
+ io
27
+ slinalg
28
+ nlinalg
29
+ fft
30
+ conv
31
+ math_opt
32
+ basic_opt
33
+ functional
@@ -0,0 +1,8 @@
1
+ .. _libdoc_tensor_random_distributions:
2
+
3
+ Distributions
4
+ =============
5
+
6
+ .. automodule:: pytensor.tensor.random.basic
7
+ :members:
8
+ :special-members: __call__
@@ -1,36 +1,37 @@
1
- .. _libdoc_tensor_random_utils:
2
1
 
3
- ======================================================
4
- :mod:`utils` -- Friendly random numbers
5
- ======================================================
2
+ .. _libdoc_tensor_random_basic:
6
3
 
7
- .. module:: pytensor.tensor.random.utils
8
- :platform: Unix, Windows
4
+ =============================================
5
+ :mod:`random` -- Random number functionality
6
+ =============================================
7
+
8
+ .. module:: pytensor.tensor.random
9
9
  :synopsis: symbolic random variables
10
- .. moduleauthor:: LISA
11
10
 
12
- Guide
13
- =====
14
11
 
15
- PyTensor assigns NumPy RNG states (e.g. `Generator` or `RandomState` objects) to
12
+ The :mod:`pytensor.tensor.random` module provides random-number drawing functionality
13
+ that closely resembles the :mod:`numpy.random` module.
14
+
15
+
16
+ High-level API
17
+ ==============
18
+
19
+ PyTensor assigns NumPy RNG states (i.e. `Generator` objects) to
16
20
  each `RandomVariable`. The combination of an RNG state, a specific
17
21
  `RandomVariable` type (e.g. `NormalRV`), and a set of distribution parameters
18
22
  uniquely defines the `RandomVariable` instances in a graph.
19
23
 
20
24
  This means that a "stream" of distinct RNG states is required in order to
21
- produce distinct random variables of the same kind. `RandomStream` provides a
25
+ produce distinct random variables of the same kind. `RandomStream` provides a
22
26
  means of generating distinct random variables in a fully reproducible way.
23
27
 
24
28
  `RandomStream` is also designed to produce simpler graphs and work with more
25
- sophisticated `Op`\s like `Scan`, which makes it the de facto random variable
29
+ sophisticated `Op`\s like `Scan`, which makes it a user-friendly random variable
26
30
  interface in PyTensor.
27
31
 
28
32
  For an example of how to use random numbers, see :ref:`Using Random Numbers <using_random_numbers>`.
29
33
 
30
34
 
31
- Reference
32
- =========
33
-
34
35
  .. class:: RandomStream()
35
36
 
36
37
  This is a symbolic stand-in for `numpy.random.Generator`.
@@ -61,4 +62,28 @@ Reference
61
62
 
62
63
  .. method:: uniform, normal, binomial, multinomial, random_integers, ...
63
64
 
64
- See :class:`basic.RandomVariable`.
65
+ See :ref: Available distributions `<_libdoc_tensor_random_distributions>`.
66
+
67
+
68
+ .. testcode:: constructors
69
+
70
+ from pytensor.tensor.random.utils import RandomStream
71
+
72
+ rng = RandomStream()
73
+ sample = rng.normal(0, 1, size=(2, 2))
74
+
75
+ fn = pytensor.function([], sample)
76
+ print(fn(), fn()) # different numbers due to default updates
77
+
78
+
79
+ Low-level objects
80
+ =================
81
+
82
+ .. automodule:: pytensor.tensor.random.op
83
+ :members: RandomVariable, default_rng
84
+
85
+ ..automodule:: pytensor.tensor.random.type
86
+ :members: RandomType, RandomGeneratorType, random_generator_type
87
+
88
+ .. automodule:: pytensor.tensor.random.var
89
+ :members: RandomGeneratorSharedVariable
@@ -262,8 +262,8 @@ Optimization o4 o3 o2
262
262
  local_remove_all_assert
263
263
  This is an unsafe optimization.
264
264
  For the fastest possible PyTensor, this optimization can be enabled by
265
- setting ``optimizer_including=local_remove_all_assert`` which will
266
- remove all assertions in the graph for checking user inputs are valid.
265
+ setting ``optimizer_including=local_remove_all_assert`` which will
266
+ remove all assertions in the graph for checking user inputs are valid.
267
267
  Use this optimization if you are sure everything is valid in your graph.
268
268
 
269
- See :ref:`unsafe_rewrites`
269
+ See :ref:`unsafe_rewrites`
@@ -7,12 +7,12 @@ Baby Steps - Algebra
7
7
  Understanding Tensors
8
8
  ===========================
9
9
 
10
- Before diving into PyTensor, it's essential to understand the fundamental
11
- data structure it operates on: the *tensor*. A *tensor* is a multi-dimensional
10
+ Before diving into PyTensor, it's essential to understand the fundamental
11
+ data structure it operates on: the *tensor*. A *tensor* is a multi-dimensional
12
12
  array that serves as the foundation for symbolic computations.
13
13
 
14
- tensors can represent anything from a single number (scalar) to
15
- complex multi-dimensional arrays. Each tensor has a type that dictates its
14
+ tensors can represent anything from a single number (scalar) to
15
+ complex multi-dimensional arrays. Each tensor has a type that dictates its
16
16
  dimensionality and the kind of data it holds.
17
17
 
18
18
  For example, the following code creates a symbolic scalar and a symbolic matrix:
@@ -20,11 +20,11 @@ For example, the following code creates a symbolic scalar and a symbolic matrix:
20
20
  >>> x = pt.scalar('x')
21
21
  >>> y = pt.matrix('y')
22
22
 
23
- Here, `scalar` refers to a tensor with zero dimensions, while `matrix` refers
24
- to a tensor with two dimensions. The same principles apply to tensors of other
23
+ Here, `scalar` refers to a tensor with zero dimensions, while `matrix` refers
24
+ to a tensor with two dimensions. The same principles apply to tensors of other
25
25
  dimensions.
26
26
 
27
- For more information about tensors and their associated operations can be
27
+ For more information about tensors and their associated operations can be
28
28
  found here: :ref:`tensor <libdoc_tensor>`.
29
29
 
30
30