pytensor 2.36.0__tar.gz → 2.36.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. {pytensor-2.36.0/pytensor.egg-info → pytensor-2.36.1}/PKG-INFO +1 -1
  2. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/_version.py +3 -3
  3. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/cache.py +1 -1
  4. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/scalar.py +9 -0
  5. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/basic.py +17 -57
  6. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/math.py +21 -70
  7. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/__init__.py +7 -0
  8. pytensor-2.36.1/pytensor/tensor/reshape.py +524 -0
  9. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/__init__.py +1 -0
  10. pytensor-2.36.1/pytensor/tensor/rewriting/reshape.py +49 -0
  11. {pytensor-2.36.0 → pytensor-2.36.1/pytensor.egg-info}/PKG-INFO +1 -1
  12. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/SOURCES.txt +2 -0
  13. {pytensor-2.36.0 → pytensor-2.36.1}/LICENSE.txt +0 -0
  14. {pytensor-2.36.0 → pytensor-2.36.1}/MANIFEST.in +0 -0
  15. {pytensor-2.36.0 → pytensor-2.36.1}/README.rst +0 -0
  16. {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/PLACEHOLDER +0 -0
  17. {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/layout.html +0 -0
  18. {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/nb-badges.html +0 -0
  19. {pytensor-2.36.0 → pytensor-2.36.1}/doc/.templates/rendered_citation.html +0 -0
  20. {pytensor-2.36.0 → pytensor-2.36.1}/doc/LICENSE.txt +0 -0
  21. {pytensor-2.36.0 → pytensor-2.36.1}/doc/README.md +0 -0
  22. {pytensor-2.36.0 → pytensor-2.36.1}/doc/_drafts/benchmark_mlx_v_jax_corrected.ipynb +0 -0
  23. {pytensor-2.36.0 → pytensor-2.36.1}/doc/_thumbnails/autodiff/vector_jacobian_product.png +0 -0
  24. {pytensor-2.36.0 → pytensor-2.36.1}/doc/acknowledgement.rst +0 -0
  25. {pytensor-2.36.0 → pytensor-2.36.1}/doc/bcast.png +0 -0
  26. {pytensor-2.36.0 → pytensor-2.36.1}/doc/bcast.svg +0 -0
  27. {pytensor-2.36.0 → pytensor-2.36.1}/doc/blog.md +0 -0
  28. {pytensor-2.36.0 → pytensor-2.36.1}/doc/conf.py +0 -0
  29. {pytensor-2.36.0 → pytensor-2.36.1}/doc/core_development_guide.rst +0 -0
  30. {pytensor-2.36.0 → pytensor-2.36.1}/doc/css.inc +0 -0
  31. {pytensor-2.36.0 → pytensor-2.36.1}/doc/dev_start_guide.rst +0 -0
  32. {pytensor-2.36.0 → pytensor-2.36.1}/doc/environment.yml +0 -0
  33. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/apply.png +0 -0
  34. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/apply.svg +0 -0
  35. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/apply2.svg +0 -0
  36. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/creating_a_c_op.rst +0 -0
  37. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/creating_a_numba_jax_op.rst +0 -0
  38. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/creating_an_op.rst +0 -0
  39. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/ctype.rst +0 -0
  40. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/extending_faq.rst +0 -0
  41. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/extending_pytensor_solution_1.py +0 -0
  42. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/graph_rewriting.rst +0 -0
  43. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/graphstructures.rst +0 -0
  44. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/index.rst +0 -0
  45. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/inplace.rst +0 -0
  46. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/op.rst +0 -0
  47. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/other_ops.rst +0 -0
  48. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/pics/symbolic_graph_opt.png +0 -0
  49. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
  50. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/pipeline.rst +0 -0
  51. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/scan.rst +0 -0
  52. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/tips.rst +0 -0
  53. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/type.rst +0 -0
  54. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/unittest.rst +0 -0
  55. {pytensor-2.36.0 → pytensor-2.36.1}/doc/extending/using_params.rst +0 -0
  56. {pytensor-2.36.0 → pytensor-2.36.1}/doc/faq.rst +0 -0
  57. {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/applications/normalizing_flows_in_pytensor.ipynb +0 -0
  58. {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/autodiff/vector_jacobian_product.ipynb +0 -0
  59. {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/introduction/pytensor_intro.ipynb +0 -0
  60. {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/optimize/root.ipynb +0 -0
  61. {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/page_footer.md +0 -0
  62. {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
  63. {pytensor-2.36.0 → pytensor-2.36.1}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
  64. {pytensor-2.36.0 → pytensor-2.36.1}/doc/generate_dtype_tensor_table.py +0 -0
  65. {pytensor-2.36.0 → pytensor-2.36.1}/doc/glossary.rst +0 -0
  66. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/Elman_srnn.png +0 -0
  67. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/PyTensor.png +0 -0
  68. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/PyTensor_RGB.svg +0 -0
  69. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/PyTensor_logo.png +0 -0
  70. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/binder.svg +0 -0
  71. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/blocksparse.png +0 -0
  72. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/colab.svg +0 -0
  73. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/github.svg +0 -0
  74. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/lstm.png +0 -0
  75. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/lstm_memorycell.png +0 -0
  76. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/talk2010.gif +0 -0
  77. {pytensor-2.36.0 → pytensor-2.36.1}/doc/images/talk2010.png +0 -0
  78. {pytensor-2.36.0 → pytensor-2.36.1}/doc/index.rst +0 -0
  79. {pytensor-2.36.0 → pytensor-2.36.1}/doc/install.rst +0 -0
  80. {pytensor-2.36.0 → pytensor-2.36.1}/doc/internal/how_to_release.rst +0 -0
  81. {pytensor-2.36.0 → pytensor-2.36.1}/doc/internal/index.rst +0 -0
  82. {pytensor-2.36.0 → pytensor-2.36.1}/doc/internal/metadocumentation.rst +0 -0
  83. {pytensor-2.36.0 → pytensor-2.36.1}/doc/introduction.rst +0 -0
  84. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/debugmode.rst +0 -0
  85. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/function.rst +0 -0
  86. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/index.rst +0 -0
  87. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/io.rst +0 -0
  88. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/mode.rst +0 -0
  89. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/nanguardmode.rst +0 -0
  90. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/opfromgraph.rst +0 -0
  91. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/ops.rst +0 -0
  92. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/profilemode.rst +0 -0
  93. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/compile/shared.rst +0 -0
  94. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/config.rst +0 -0
  95. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
  96. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
  97. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
  98. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
  99. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
  100. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
  101. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
  102. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp.html +0 -0
  103. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp.png +0 -0
  104. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp2.html +0 -0
  105. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp2.pdf +0 -0
  106. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/mlp2.png +0 -0
  107. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/ofg.html +0 -0
  108. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/examples/ofg2.html +0 -0
  109. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index.ipynb +0 -0
  110. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index.rst +0 -0
  111. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_10_0.png +0 -0
  112. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_11_0.png +0 -0
  113. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_24_0.png +0 -0
  114. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/d3viz/index_files/index_25_0.png +0 -0
  115. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/features.rst +0 -0
  116. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/fgraph.rst +0 -0
  117. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/graph.rst +0 -0
  118. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/index.rst +0 -0
  119. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/op.rst +0 -0
  120. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/replace.rst +0 -0
  121. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/type.rst +0 -0
  122. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/graph/utils.rst +0 -0
  123. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/index.rst +0 -0
  124. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/misc/pkl_utils.rst +0 -0
  125. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/printing.rst +0 -0
  126. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/scalar/index.rst +0 -0
  127. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/scan.rst +0 -0
  128. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/sparse/index.rst +0 -0
  129. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/sparse/sandbox.rst +0 -0
  130. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/basic.rst +0 -0
  131. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/basic_opt.rst +0 -0
  132. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/bcast.png +0 -0
  133. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/bcast.svg +0 -0
  134. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/conv.rst +0 -0
  135. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/elemwise.rst +0 -0
  136. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/extra_ops.rst +0 -0
  137. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/fft.rst +0 -0
  138. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/functional.rst +0 -0
  139. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/index.rst +0 -0
  140. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/io.rst +0 -0
  141. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/math_opt.rst +0 -0
  142. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/nlinalg.rst +0 -0
  143. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/optimize.rst +0 -0
  144. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/plot_fft.png +0 -0
  145. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/random/distributions.rst +0 -0
  146. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/random/index.rst +0 -0
  147. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/slinalg.rst +0 -0
  148. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/tensor/utils.rst +0 -0
  149. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/typed_list.rst +0 -0
  150. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/index.md +0 -0
  151. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/linalg.md +0 -0
  152. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/math.md +0 -0
  153. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/module_functions.md +0 -0
  154. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/random.md +0 -0
  155. {pytensor-2.36.0 → pytensor-2.36.1}/doc/library/xtensor/type.md +0 -0
  156. {pytensor-2.36.0 → pytensor-2.36.1}/doc/links.rst +0 -0
  157. {pytensor-2.36.0 → pytensor-2.36.1}/doc/optimizations.rst +0 -0
  158. {pytensor-2.36.0 → pytensor-2.36.1}/doc/pylintrc +0 -0
  159. {pytensor-2.36.0 → pytensor-2.36.1}/doc/robots.txt +0 -0
  160. {pytensor-2.36.0 → pytensor-2.36.1}/doc/troubleshooting.rst +0 -0
  161. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/adding.rst +0 -0
  162. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/adding_solution_1.py +0 -0
  163. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/aliasing.rst +0 -0
  164. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/apply.png +0 -0
  165. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/apply.svg +0 -0
  166. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/bcast.png +0 -0
  167. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/broadcasting.rst +0 -0
  168. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/conditions.rst +0 -0
  169. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/debug_faq.rst +0 -0
  170. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/dlogistic.png +0 -0
  171. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/examples.rst +0 -0
  172. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/faq_tutorial.rst +0 -0
  173. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/gradients.rst +0 -0
  174. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/index.rst +0 -0
  175. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/loading_and_saving.rst +0 -0
  176. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/logistic.gp +0 -0
  177. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/logistic.png +0 -0
  178. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/loop.rst +0 -0
  179. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/loop_solution_1.py +0 -0
  180. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/modes.rst +0 -0
  181. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/modes_solution_1.py +0 -0
  182. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/multi_cores.rst +0 -0
  183. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/nan_tutorial.rst +0 -0
  184. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/d3viz.png +0 -0
  185. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
  186. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
  187. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
  188. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/printing_drawing.rst +0 -0
  189. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/prng.rst +0 -0
  190. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/profiling.rst +0 -0
  191. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/profiling_example.py +0 -0
  192. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/profiling_example_out.prof +0 -0
  193. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/shape_info.rst +0 -0
  194. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/sparse.rst +0 -0
  195. {pytensor-2.36.0 → pytensor-2.36.1}/doc/tutorial/symbolic_graphs.rst +0 -0
  196. {pytensor-2.36.0 → pytensor-2.36.1}/doc/user_guide.rst +0 -0
  197. {pytensor-2.36.0 → pytensor-2.36.1}/pyproject.toml +0 -0
  198. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/__init__.py +0 -0
  199. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/bin/__init__.py +0 -0
  200. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/bin/pytensor_cache.py +0 -0
  201. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/breakpoint.py +0 -0
  202. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/__init__.py +0 -0
  203. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/builders.py +0 -0
  204. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/compiledir.py +0 -0
  205. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/compilelock.py +0 -0
  206. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/debugmode.py +0 -0
  207. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/function/__init__.py +0 -0
  208. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/function/pfunc.py +0 -0
  209. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/function/types.py +0 -0
  210. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/io.py +0 -0
  211. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/mode.py +0 -0
  212. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/monitormode.py +0 -0
  213. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/nanguardmode.py +0 -0
  214. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/ops.py +0 -0
  215. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/profiling.py +0 -0
  216. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/compile/sharedvalue.py +0 -0
  217. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/configdefaults.py +0 -0
  218. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/configparser.py +0 -0
  219. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/__init__.py +0 -0
  220. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/css/d3-context-menu.css +0 -0
  221. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/css/d3viz.css +0 -0
  222. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/d3viz.py +0 -0
  223. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/formatting.py +0 -0
  224. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/html/template.html +0 -0
  225. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/d3-context-menu.js +0 -0
  226. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/d3.v3.min.js +0 -0
  227. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/d3viz.js +0 -0
  228. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
  229. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
  230. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/gradient.py +0 -0
  231. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/__init__.py +0 -0
  232. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/basic.py +0 -0
  233. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/destroyhandler.py +0 -0
  234. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/features.py +0 -0
  235. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/fg.py +0 -0
  236. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/null_type.py +0 -0
  237. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/op.py +0 -0
  238. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/replace.py +0 -0
  239. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/__init__.py +0 -0
  240. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/basic.py +0 -0
  241. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/db.py +0 -0
  242. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/kanren.py +0 -0
  243. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/unify.py +0 -0
  244. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/rewriting/utils.py +0 -0
  245. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/traversal.py +0 -0
  246. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/type.py +0 -0
  247. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/graph/utils.py +0 -0
  248. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/ifelse.py +0 -0
  249. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/ipython.py +0 -0
  250. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/__init__.py +0 -0
  251. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/basic.py +0 -0
  252. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/__init__.py +0 -0
  253. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/basic.py +0 -0
  254. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
  255. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
  256. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/cmodule.py +0 -0
  257. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/cutils.py +0 -0
  258. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/cvm.py +0 -0
  259. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/exceptions.py +0 -0
  260. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/interface.py +0 -0
  261. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/lazylinker_c.py +0 -0
  262. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/op.py +0 -0
  263. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/params_type.py +0 -0
  264. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/c/type.py +0 -0
  265. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/__init__.py +0 -0
  266. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/__init__.py +0 -0
  267. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/basic.py +0 -0
  268. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/blas.py +0 -0
  269. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/blockwise.py +0 -0
  270. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/einsum.py +0 -0
  271. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/elemwise.py +0 -0
  272. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
  273. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/math.py +0 -0
  274. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
  275. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/pad.py +0 -0
  276. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/random.py +0 -0
  277. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/scalar.py +0 -0
  278. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/scan.py +0 -0
  279. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/shape.py +0 -0
  280. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
  281. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
  282. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/slinalg.py +0 -0
  283. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/sort.py +0 -0
  284. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/sparse.py +0 -0
  285. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/subtensor.py +0 -0
  286. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
  287. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/linker.py +0 -0
  288. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/jax/ops.py +0 -0
  289. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/__init__.py +0 -0
  290. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/__init__.py +0 -0
  291. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/basic.py +0 -0
  292. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/blockwise.py +0 -0
  293. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/core.py +0 -0
  294. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/elemwise.py +0 -0
  295. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/extra_ops.py +0 -0
  296. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/math.py +0 -0
  297. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/nlinalg.py +0 -0
  298. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/shape.py +0 -0
  299. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/signal/__init__.py +0 -0
  300. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/signal/conv.py +0 -0
  301. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/slinalg.py +0 -0
  302. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/sort.py +0 -0
  303. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/dispatch/subtensor.py +0 -0
  304. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/mlx/linker.py +0 -0
  305. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/__init__.py +0 -0
  306. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/__init__.py +0 -0
  307. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/basic.py +0 -0
  308. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/blockwise.py +0 -0
  309. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/compile_ops.py +0 -0
  310. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/cython_support.py +0 -0
  311. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/elemwise.py +0 -0
  312. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
  313. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +0 -0
  314. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
  315. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
  316. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
  317. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
  318. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
  319. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +0 -0
  320. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/__init__.py +0 -0
  321. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/cholesky.py +0 -0
  322. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/general.py +0 -0
  323. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/lu_solve.py +0 -0
  324. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/norm.py +0 -0
  325. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/posdef.py +0 -0
  326. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/symmetric.py +0 -0
  327. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/triangular.py +0 -0
  328. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/tridiagonal.py +0 -0
  329. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/solve/utils.py +0 -0
  330. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
  331. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
  332. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/random.py +0 -0
  333. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/scalar.py +0 -0
  334. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/scan.py +0 -0
  335. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/shape.py +0 -0
  336. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
  337. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
  338. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/slinalg.py +0 -0
  339. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/sort.py +0 -0
  340. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/sparse.py +0 -0
  341. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/subtensor.py +0 -0
  342. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
  343. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/typed_list.py +0 -0
  344. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
  345. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/numba/linker.py +0 -0
  346. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
  347. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/basic.py +0 -0
  348. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/blas.py +0 -0
  349. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
  350. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
  351. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
  352. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/math.py +0 -0
  353. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
  354. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/shape.py +0 -0
  355. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/slinalg.py +0 -0
  356. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/sort.py +0 -0
  357. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
  358. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/pytorch/linker.py +0 -0
  359. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/utils.py +0 -0
  360. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/link/vm.py +0 -0
  361. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/__init__.py +0 -0
  362. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/check_blas.py +0 -0
  363. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/check_blas_many.sh +0 -0
  364. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/check_duplicate_key.py +0 -0
  365. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
  366. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/elemwise_time_test.py +0 -0
  367. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/frozendict.py +0 -0
  368. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/may_share_memory.py +0 -0
  369. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/ordered_set.py +0 -0
  370. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/misc/pkl_utils.py +0 -0
  371. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/npy_2_compat.py +0 -0
  372. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/printing.py +0 -0
  373. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/py.typed +0 -0
  374. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/raise_op.py +0 -0
  375. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/__init__.py +0 -0
  376. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/basic.py +0 -0
  377. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
  378. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
  379. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/gamma.c +0 -0
  380. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/c_code/incbet.c +0 -0
  381. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/loop.py +0 -0
  382. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/math.py +0 -0
  383. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scalar/sharedvar.py +0 -0
  384. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/__init__.py +0 -0
  385. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/checkpoints.py +0 -0
  386. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/op.py +0 -0
  387. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/rewriting.py +0 -0
  388. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/scan_perform.pyx +0 -0
  389. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/scan_perform_ext.py +0 -0
  390. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/utils.py +0 -0
  391. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/scan/views.py +0 -0
  392. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/__init__.py +0 -0
  393. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/basic.py +0 -0
  394. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/linalg.py +0 -0
  395. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/rewriting.py +0 -0
  396. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/sharedvar.py +0 -0
  397. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/type.py +0 -0
  398. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/utils.py +0 -0
  399. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/sparse/variable.py +0 -0
  400. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/__init__.py +0 -0
  401. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/solve/__init__.py +0 -0
  402. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/solve/rewriting.py +0 -0
  403. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/_linalg/solve/tridiagonal.py +0 -0
  404. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/basic.py +0 -0
  405. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blas.py +0 -0
  406. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blas_c.py +0 -0
  407. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blas_headers.py +0 -0
  408. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/blockwise.py +0 -0
  409. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
  410. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
  411. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/c_code/dimshuffle.c +0 -0
  412. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/conv/__init__.py +0 -0
  413. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/conv/abstract_conv.py +0 -0
  414. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/einsum.py +0 -0
  415. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/elemwise.py +0 -0
  416. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/elemwise_cgen.py +0 -0
  417. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/exceptions.py +0 -0
  418. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/extra_ops.py +0 -0
  419. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/fft.py +0 -0
  420. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/fourier.py +0 -0
  421. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/functional.py +0 -0
  422. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/interpolate.py +0 -0
  423. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/linalg.py +0 -0
  424. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/math.py +0 -0
  425. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/nlinalg.py +0 -0
  426. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/optimize.py +0 -0
  427. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/pad.py +0 -0
  428. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/__init__.py +0 -0
  429. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/basic.py +0 -0
  430. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/op.py +0 -0
  431. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/__init__.py +0 -0
  432. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/basic.py +0 -0
  433. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/jax.py +0 -0
  434. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/rewriting/numba.py +0 -0
  435. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/type.py +0 -0
  436. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/utils.py +0 -0
  437. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/random/var.py +0 -0
  438. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/basic.py +0 -0
  439. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/blas.py +0 -0
  440. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/blas_c.py +0 -0
  441. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/blockwise.py +0 -0
  442. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/einsum.py +0 -0
  443. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/elemwise.py +0 -0
  444. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/extra_ops.py +0 -0
  445. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/jax.py +0 -0
  446. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/linalg.py +0 -0
  447. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/math.py +0 -0
  448. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/numba.py +0 -0
  449. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/ofg.py +0 -0
  450. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/shape.py +0 -0
  451. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/special.py +0 -0
  452. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/subtensor.py +0 -0
  453. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/subtensor_lift.py +0 -0
  454. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
  455. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/shape.py +0 -0
  456. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/sharedvar.py +0 -0
  457. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/signal/__init__.py +0 -0
  458. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/signal/conv.py +0 -0
  459. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/slinalg.py +0 -0
  460. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/sort.py +0 -0
  461. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/special.py +0 -0
  462. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/subtensor.py +0 -0
  463. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/type.py +0 -0
  464. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/type_other.py +0 -0
  465. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/utils.py +0 -0
  466. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/var.py +0 -0
  467. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/variable.py +0 -0
  468. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/tensor/xlogx.py +0 -0
  469. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/__init__.py +0 -0
  470. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/basic.py +0 -0
  471. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/rewriting.py +0 -0
  472. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/typed_list/type.py +0 -0
  473. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/updates.py +0 -0
  474. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/utils.py +0 -0
  475. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/__init__.py +0 -0
  476. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/basic.py +0 -0
  477. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/indexing.py +0 -0
  478. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/linalg.py +0 -0
  479. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/math.py +0 -0
  480. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/random.py +0 -0
  481. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/reduction.py +0 -0
  482. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/__init__.py +0 -0
  483. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/basic.py +0 -0
  484. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/indexing.py +0 -0
  485. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/math.py +0 -0
  486. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/reduction.py +0 -0
  487. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/shape.py +0 -0
  488. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/utils.py +0 -0
  489. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/rewriting/vectorization.py +0 -0
  490. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/shape.py +0 -0
  491. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/type.py +0 -0
  492. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor/xtensor/vectorization.py +0 -0
  493. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/dependency_links.txt +0 -0
  494. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/entry_points.txt +0 -0
  495. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/requires.txt +0 -0
  496. {pytensor-2.36.0 → pytensor-2.36.1}/pytensor.egg-info/top_level.txt +0 -0
  497. {pytensor-2.36.0 → pytensor-2.36.1}/scripts/mypy-failing.txt +0 -0
  498. {pytensor-2.36.0 → pytensor-2.36.1}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
  499. {pytensor-2.36.0 → pytensor-2.36.1}/setup.cfg +0 -0
  500. {pytensor-2.36.0 → pytensor-2.36.1}/setup.py +0 -0
  501. {pytensor-2.36.0 → pytensor-2.36.1}/tests/link/c/c_code/test_cenum.h +0 -0
  502. {pytensor-2.36.0 → pytensor-2.36.1}/tests/link/c/c_code/test_quadratic_function.c +0 -0
  503. {pytensor-2.36.0 → pytensor-2.36.1}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
  504. {pytensor-2.36.0 → pytensor-2.36.1}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
  505. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_breakpoint.py +0 -0
  506. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_config.py +0 -0
  507. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_gradient.py +0 -0
  508. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_ifelse.py +0 -0
  509. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_printing.py +0 -0
  510. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_raise_op.py +0 -0
  511. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_rop.py +0 -0
  512. {pytensor-2.36.0 → pytensor-2.36.1}/tests/test_updates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytensor
3
- Version: 2.36.0
3
+ Version: 2.36.1
4
4
  Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
5
5
  Author-email: pymc-devs <pymc.devs@gmail.com>
6
6
  License-Expression: BSD-3-Clause
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-12-15T22:58:11+0100",
11
+ "date": "2025-12-21T14:56:52+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "6319fac84ebc71ad079c5986c6c302a52e254198",
15
- "version": "2.36.0"
14
+ "full-revisionid": "409a4b2a02e64acc0ca12cd0e046e99fd6f535b9",
15
+ "version": "2.36.1"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -11,7 +11,7 @@ from pytensor.configdefaults import config
11
11
 
12
12
 
13
13
  NUMBA_CACHE_PATH = config.base_compiledir / "numba"
14
- NUMBA_CACHE_PATH.mkdir(exist_ok=True)
14
+ NUMBA_CACHE_PATH.mkdir(parents=True, exist_ok=True)
15
15
  CACHED_SRC_FUNCTIONS: WeakKeyDictionary[Callable, str] = WeakKeyDictionary()
16
16
 
17
17
 
@@ -5,6 +5,7 @@ import torch
5
5
  from pytensor.link.pytorch.dispatch.basic import pytorch_funcify
6
6
  from pytensor.scalar.basic import (
7
7
  Cast,
8
+ Clip,
8
9
  Invert,
9
10
  ScalarOp,
10
11
  )
@@ -71,6 +72,14 @@ def pytorch_funcify_Softplus(op, node, **kwargs):
71
72
  return torch.nn.Softplus()
72
73
 
73
74
 
75
+ @pytorch_funcify.register(Clip)
76
+ def pytorch_funcify_Clip(op, node, **kwargs):
77
+ def clip(x, min_val, max_val):
78
+ return torch.where(x < min_val, min_val, torch.where(x > max_val, max_val, x))
79
+
80
+ return clip
81
+
82
+
74
83
  @pytorch_funcify.register(ScalarLoop)
75
84
  def pytorch_funicify_ScalarLoop(op, node, **kwargs):
76
85
  update = pytorch_funcify(op.fgraph, **kwargs)
@@ -1,5 +1,6 @@
1
1
  import typing
2
2
  import warnings
3
+ from functools import reduce
3
4
  from itertools import chain
4
5
 
5
6
  import numpy as np
@@ -16,7 +17,6 @@ from pytensor.graph.type import HasShape
16
17
  from pytensor.graph.utils import MissingInputError, TestValueError
17
18
  from pytensor.scan.op import Scan, ScanInfo
18
19
  from pytensor.scan.utils import expand_empty, safe_new, until
19
- from pytensor.tensor.basic import get_underlying_scalar_constant_value
20
20
  from pytensor.tensor.exceptions import NotScalarConstantError
21
21
  from pytensor.tensor.math import minimum
22
22
  from pytensor.tensor.shape import shape_padleft
@@ -143,31 +143,6 @@ def get_updates_and_outputs(ls):
143
143
  raise ValueError(error_msg)
144
144
 
145
145
 
146
- def isNaN_or_Inf_or_None(x):
147
- isNone = x is None
148
- try:
149
- isNaN = np.isnan(x)
150
- isInf = np.isinf(x)
151
- isStr = isinstance(x, str)
152
- except Exception:
153
- isNaN = False
154
- isInf = False
155
- isStr = False
156
- if not isNaN and not isInf:
157
- try:
158
- val = get_underlying_scalar_constant_value(x)
159
- isInf = np.isinf(val)
160
- isNaN = np.isnan(val)
161
- except Exception:
162
- isNaN = False
163
- isInf = False
164
- if isinstance(x, Constant) and isinstance(x.data, str):
165
- isStr = True
166
- else:
167
- isStr = False
168
- return isNone or isNaN or isInf or isStr
169
-
170
-
171
146
  def _manage_output_api_change(outputs, updates, return_updates):
172
147
  if return_updates:
173
148
  warnings.warn(
@@ -505,7 +480,7 @@ def scan(
505
480
 
506
481
  # This helper eagerly skips the Scan if n_steps is known to be 1
507
482
  single_step_requested = False
508
- if isinstance(n_steps, float | int):
483
+ if isinstance(n_steps, int | float):
509
484
  single_step_requested = n_steps == 1
510
485
  else:
511
486
  try:
@@ -676,33 +651,20 @@ def scan(
676
651
  if nw_name is not None:
677
652
  nw_seq.name = nw_name
678
653
 
679
- # Since we've added all sequences now we need to level them up based on
680
- # n_steps or their different shapes
681
- lengths_vec = [seq.shape[0] for seq in scan_seqs]
682
-
683
- if not isNaN_or_Inf_or_None(n_steps):
684
- # ^ N_steps should also be considered
685
- lengths_vec.append(pt.as_tensor(n_steps))
686
-
687
- if len(lengths_vec) == 0:
688
- # ^ No information about the number of steps
689
- raise ValueError(
690
- "No information about the number of steps "
691
- "provided. Either provide a value for "
692
- "n_steps argument of scan or provide an input "
693
- "sequence"
694
- )
695
-
696
- # If the user has provided the number of steps, do that regardless ( and
697
- # raise an error if the sequences are not long enough )
698
- if isNaN_or_Inf_or_None(n_steps):
699
- actual_n_steps = lengths_vec[0]
700
- for contestant in lengths_vec[1:]:
701
- actual_n_steps = minimum(actual_n_steps, contestant)
654
+ if n_steps is None:
655
+ if not scan_seqs:
656
+ raise ValueError(
657
+ "No information about the number of steps provided. "
658
+ "Either provide a value for n_steps argument of scan or provide an input sequence."
659
+ )
660
+ actual_n_steps = reduce(minimum, [seq.shape[0] for seq in scan_seqs])
702
661
  else:
703
- actual_n_steps = pt.as_tensor(n_steps)
662
+ actual_n_steps = pt.as_tensor(n_steps, dtype="int64", ndim=0)
704
663
 
664
+ # Since we've added all sequences now we need to level them off based on
665
+ # n_steps or their different shapes
705
666
  scan_seqs = [seq[:actual_n_steps] for seq in scan_seqs]
667
+
706
668
  # Conventions :
707
669
  # mit_mot = multiple input taps, multiple output taps ( only provided
708
670
  # by the gradient function )
@@ -899,10 +861,8 @@ def scan(
899
861
  raw_inner_outputs = fn(*args)
900
862
 
901
863
  condition, outputs, updates = get_updates_and_outputs(raw_inner_outputs)
902
- if condition is not None:
903
- as_while = True
904
- else:
905
- as_while = False
864
+ as_while = condition is not None
865
+
906
866
  ##
907
867
  # Step 3. Check if we actually need scan and remove it if we don't
908
868
  ##
@@ -934,7 +894,7 @@ def scan(
934
894
 
935
895
  # extract still missing inputs (there still might be so) and add them
936
896
  # as non sequences at the end of our args
937
- if condition is not None:
897
+ if as_while:
938
898
  outputs.append(condition)
939
899
  fake_nonseqs = [x.type() for x in non_seqs]
940
900
  fake_outputs = clone_replace(
@@ -1252,8 +1212,8 @@ def scan(
1252
1212
  rightOrder = (
1253
1213
  mit_sot_rightOrder
1254
1214
  + sit_sot_rightOrder
1255
- + untraced_sit_sot_rightOrder
1256
1215
  + nit_sot_rightOrder
1216
+ + untraced_sit_sot_rightOrder
1257
1217
  )
1258
1218
  scan_out_list = [None] * len(rightOrder)
1259
1219
  for idx, pos in enumerate(rightOrder):
@@ -41,7 +41,7 @@ def structured_elemwise(tensor_op):
41
41
 
42
42
 
43
43
  @structured_elemwise(ptm.abs)
44
- def structured_abs(x):
44
+ def abs(x):
45
45
  """
46
46
  Compute abs(x) for all non-zero elements of x.
47
47
  """
@@ -61,13 +61,6 @@ def structured_exp(x):
61
61
  """
62
62
 
63
63
 
64
- @structured_elemwise(ptm.exp2)
65
- def structured_exp2(x):
66
- """
67
- Compute exp2(x) for all non-zero elements of x.
68
- """
69
-
70
-
71
64
  @structured_elemwise(ptm.log)
72
65
  def structured_log(x):
73
66
  """
@@ -75,20 +68,6 @@ def structured_log(x):
75
68
  """
76
69
 
77
70
 
78
- @structured_elemwise(ptm.log2)
79
- def structured_log2(x):
80
- """
81
- Compute log2(x) for all non-zero elements of x.
82
- """
83
-
84
-
85
- @structured_elemwise(ptm.log10)
86
- def structured_log10(x):
87
- """
88
- Compute log10(x) for all non-zero elements of x.
89
- """
90
-
91
-
92
71
  @structured_elemwise(ptm.pow)
93
72
  def structured_pow(x, y):
94
73
  """
@@ -118,161 +97,133 @@ def structured_add(x, y):
118
97
 
119
98
 
120
99
  @structured_elemwise(ptm.sin)
121
- def structured_sin(x):
100
+ def sin(x):
122
101
  """
123
102
  Compute sin(x) for all non-zero elements of x.
124
103
  """
125
104
 
126
105
 
127
106
  @structured_elemwise(ptm.sinh)
128
- def structured_sinh(x):
107
+ def sinh(x):
129
108
  """
130
109
  Compute sinh(x) for all non-zero elements of x.
131
110
  """
132
111
 
133
112
 
134
113
  @structured_elemwise(ptm.arcsin)
135
- def structured_arcsin(x):
114
+ def arcsin(x):
136
115
  """
137
116
  Compute arcsin(x) for all non-zero elements of x.
138
117
  """
139
118
 
140
119
 
141
120
  @structured_elemwise(ptm.arcsinh)
142
- def structured_arcsinh(x):
121
+ def arcsinh(x):
143
122
  """
144
123
  Compute arcsinh(x) for all non-zero elements of x.
145
124
  """
146
125
 
147
126
 
148
- @structured_elemwise(ptm.cos)
149
- def structured_cos(x):
150
- """
151
- Compute cos(x) for all non-zero elements of x.
152
- """
153
-
154
-
155
- @structured_elemwise(ptm.cosh)
156
- def structured_cosh(x):
157
- """
158
- Compute cosh(x) for all non-zero elements of x.
159
- """
160
-
161
-
162
- @structured_elemwise(ptm.arccos)
163
- def structured_arccos(x):
164
- """
165
- Compute arccos(x) for all non-zero elements of x.
166
- """
167
-
168
-
169
- @structured_elemwise(ptm.arccosh)
170
- def structured_arccosh(x):
171
- """
172
- Compute arccosh(x) for all non-zero elements of x.
173
- """
174
-
175
-
176
127
  @structured_elemwise(ptm.tan)
177
- def structured_tan(x):
128
+ def tan(x):
178
129
  """
179
130
  Compute tan(x) for all non-zero elements of x.
180
131
  """
181
132
 
182
133
 
183
134
  @structured_elemwise(ptm.tanh)
184
- def structured_tanh(x):
135
+ def tanh(x):
185
136
  """
186
137
  Compute tanh(x) for all non-zero elements of x.
187
138
  """
188
139
 
189
140
 
190
141
  @structured_elemwise(ptm.arctan)
191
- def structured_arctan(x):
142
+ def arctan(x):
192
143
  """
193
144
  Compute arctan(x) for all non-zero elements of x.
194
145
  """
195
146
 
196
147
 
197
148
  @structured_elemwise(ptm.arctanh)
198
- def structured_arctanh(x):
149
+ def arctanh(x):
199
150
  """
200
151
  Compute arctanh(x) for all non-zero elements of x.
201
152
  """
202
153
 
203
154
 
204
155
  @structured_elemwise(ptm.round_half_to_even)
205
- def structured_rint(x):
156
+ def rint(x):
206
157
  """
207
158
  Compute round_half_to_even(x) for all non-zero elements of x.
208
159
  """
209
160
 
210
161
 
211
162
  @structured_elemwise(ptm.sign)
212
- def structured_sign(x):
163
+ def sign(x):
213
164
  """
214
165
  Compute sign(x) for all non-zero elements of x.
215
166
  """
216
167
 
217
168
 
218
169
  @structured_elemwise(ptm.ceil)
219
- def structured_ceil(x):
170
+ def ceil(x):
220
171
  """
221
172
  Compute ceil(x) for all non-zero elements of x.
222
173
  """
223
174
 
224
175
 
225
176
  @structured_elemwise(ptm.floor)
226
- def structured_floor(x):
177
+ def floor(x):
227
178
  """
228
179
  Compute floor(x) for all non-zero elements of x.
229
180
  """
230
181
 
231
182
 
232
183
  @structured_elemwise(ptm.log1p)
233
- def structured_log1p(x):
184
+ def log1p(x):
234
185
  """
235
186
  Compute log(1 + x) for all non-zero elements of x.
236
187
  """
237
188
 
238
189
 
239
190
  @structured_elemwise(ptm.expm1)
240
- def structured_expm1(x):
191
+ def expm1(x):
241
192
  """
242
193
  Compute exp(x) - 1 for all non-zero elements of x.
243
194
  """
244
195
 
245
196
 
246
197
  @structured_elemwise(ptm.deg2rad)
247
- def structured_deg2rad(x):
198
+ def deg2rad(x):
248
199
  """
249
200
  Convert degrees to radians for all non-zero elements of x.
250
201
  """
251
202
 
252
203
 
253
204
  @structured_elemwise(ptm.rad2deg)
254
- def structured_rad2deg(x):
205
+ def rad2deg(x):
255
206
  """
256
207
  Convert radians to degrees for all non-zero elements of x.
257
208
  """
258
209
 
259
210
 
260
211
  @structured_elemwise(ptm.trunc)
261
- def structured_trunc(x):
212
+ def trunc(x):
262
213
  """
263
214
  Truncate the decimal part of x for all non-zero elements of x.
264
215
  """
265
216
 
266
217
 
267
218
  @structured_elemwise(ptm.sqr)
268
- def structured_sqr(x):
219
+ def sqr(x):
269
220
  """
270
221
  Compute sqr(x) for all non-zero elements of x.
271
222
  """
272
223
 
273
224
 
274
225
  @structured_elemwise(ptm.sqrt)
275
- def structured_sqrt(x):
226
+ def sqrt(x):
276
227
  """
277
228
  Compute sqrt(x) for all non-zero elements of x.
278
229
  """
@@ -292,7 +243,7 @@ def conjugate(x):
292
243
  return _conj(_x)
293
244
 
294
245
 
295
- structured_conjugate = conjugate
246
+ structured_conjugate = conj = conjugate
296
247
 
297
248
 
298
249
  class SpSum(Op):
@@ -133,6 +133,11 @@ from pytensor.tensor.extra_ops import *
133
133
  from pytensor.tensor.interpolate import interp, interpolate1d
134
134
  from pytensor.tensor.math import *
135
135
  from pytensor.tensor.pad import pad
136
+
137
+
138
+ # isort: off
139
+ # reshape needs to be imported before shape.reshape, otherwise the tensor.reshape imports fail
140
+ from pytensor.tensor.reshape import *
136
141
  from pytensor.tensor.shape import (
137
142
  reshape,
138
143
  shape,
@@ -143,6 +148,8 @@ from pytensor.tensor.shape import (
143
148
  specify_shape,
144
149
  )
145
150
 
151
+ # isort: on
152
+
146
153
  # We import as `_shared` instead of `shared` to avoid confusion between
147
154
  # `pytensor.shared` and `tensor._shared`.
148
155
  from pytensor.tensor.sort import argsort, sort