pytensor 2.36.1__tar.gz → 2.36.2__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.1/pytensor.egg-info → pytensor-2.36.2}/PKG-INFO +1 -1
  2. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/_version.py +3 -3
  3. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/builders.py +1 -1
  4. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/fg.py +6 -2
  5. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/basic.py +1 -1
  6. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/compile_ops.py +26 -19
  7. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/random.py +30 -15
  8. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/subtensor.py +0 -1
  9. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/basic.py +2 -90
  10. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/loop.py +1 -1
  11. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/op.py +1 -1
  12. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/optimize.py +1 -1
  13. {pytensor-2.36.1 → pytensor-2.36.2/pytensor.egg-info}/PKG-INFO +1 -1
  14. {pytensor-2.36.1 → pytensor-2.36.2}/LICENSE.txt +0 -0
  15. {pytensor-2.36.1 → pytensor-2.36.2}/MANIFEST.in +0 -0
  16. {pytensor-2.36.1 → pytensor-2.36.2}/README.rst +0 -0
  17. {pytensor-2.36.1 → pytensor-2.36.2}/doc/.templates/PLACEHOLDER +0 -0
  18. {pytensor-2.36.1 → pytensor-2.36.2}/doc/.templates/layout.html +0 -0
  19. {pytensor-2.36.1 → pytensor-2.36.2}/doc/.templates/nb-badges.html +0 -0
  20. {pytensor-2.36.1 → pytensor-2.36.2}/doc/.templates/rendered_citation.html +0 -0
  21. {pytensor-2.36.1 → pytensor-2.36.2}/doc/LICENSE.txt +0 -0
  22. {pytensor-2.36.1 → pytensor-2.36.2}/doc/README.md +0 -0
  23. {pytensor-2.36.1 → pytensor-2.36.2}/doc/_drafts/benchmark_mlx_v_jax_corrected.ipynb +0 -0
  24. {pytensor-2.36.1 → pytensor-2.36.2}/doc/_thumbnails/autodiff/vector_jacobian_product.png +0 -0
  25. {pytensor-2.36.1 → pytensor-2.36.2}/doc/acknowledgement.rst +0 -0
  26. {pytensor-2.36.1 → pytensor-2.36.2}/doc/bcast.png +0 -0
  27. {pytensor-2.36.1 → pytensor-2.36.2}/doc/bcast.svg +0 -0
  28. {pytensor-2.36.1 → pytensor-2.36.2}/doc/blog.md +0 -0
  29. {pytensor-2.36.1 → pytensor-2.36.2}/doc/conf.py +0 -0
  30. {pytensor-2.36.1 → pytensor-2.36.2}/doc/core_development_guide.rst +0 -0
  31. {pytensor-2.36.1 → pytensor-2.36.2}/doc/css.inc +0 -0
  32. {pytensor-2.36.1 → pytensor-2.36.2}/doc/dev_start_guide.rst +0 -0
  33. {pytensor-2.36.1 → pytensor-2.36.2}/doc/environment.yml +0 -0
  34. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/apply.png +0 -0
  35. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/apply.svg +0 -0
  36. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/apply2.svg +0 -0
  37. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/creating_a_c_op.rst +0 -0
  38. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/creating_a_numba_jax_op.rst +0 -0
  39. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/creating_an_op.rst +0 -0
  40. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/ctype.rst +0 -0
  41. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/extending_faq.rst +0 -0
  42. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/extending_pytensor_solution_1.py +0 -0
  43. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/graph_rewriting.rst +0 -0
  44. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/graphstructures.rst +0 -0
  45. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/index.rst +0 -0
  46. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/inplace.rst +0 -0
  47. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/op.rst +0 -0
  48. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/other_ops.rst +0 -0
  49. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/pics/symbolic_graph_opt.png +0 -0
  50. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
  51. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/pipeline.rst +0 -0
  52. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/scan.rst +0 -0
  53. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/tips.rst +0 -0
  54. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/type.rst +0 -0
  55. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/unittest.rst +0 -0
  56. {pytensor-2.36.1 → pytensor-2.36.2}/doc/extending/using_params.rst +0 -0
  57. {pytensor-2.36.1 → pytensor-2.36.2}/doc/faq.rst +0 -0
  58. {pytensor-2.36.1 → pytensor-2.36.2}/doc/gallery/applications/normalizing_flows_in_pytensor.ipynb +0 -0
  59. {pytensor-2.36.1 → pytensor-2.36.2}/doc/gallery/autodiff/vector_jacobian_product.ipynb +0 -0
  60. {pytensor-2.36.1 → pytensor-2.36.2}/doc/gallery/introduction/pytensor_intro.ipynb +0 -0
  61. {pytensor-2.36.1 → pytensor-2.36.2}/doc/gallery/optimize/root.ipynb +0 -0
  62. {pytensor-2.36.1 → pytensor-2.36.2}/doc/gallery/page_footer.md +0 -0
  63. {pytensor-2.36.1 → pytensor-2.36.2}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
  64. {pytensor-2.36.1 → pytensor-2.36.2}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
  65. {pytensor-2.36.1 → pytensor-2.36.2}/doc/generate_dtype_tensor_table.py +0 -0
  66. {pytensor-2.36.1 → pytensor-2.36.2}/doc/glossary.rst +0 -0
  67. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/Elman_srnn.png +0 -0
  68. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/PyTensor.png +0 -0
  69. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/PyTensor_RGB.svg +0 -0
  70. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/PyTensor_logo.png +0 -0
  71. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/binder.svg +0 -0
  72. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/blocksparse.png +0 -0
  73. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/colab.svg +0 -0
  74. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/github.svg +0 -0
  75. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/lstm.png +0 -0
  76. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/lstm_memorycell.png +0 -0
  77. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/talk2010.gif +0 -0
  78. {pytensor-2.36.1 → pytensor-2.36.2}/doc/images/talk2010.png +0 -0
  79. {pytensor-2.36.1 → pytensor-2.36.2}/doc/index.rst +0 -0
  80. {pytensor-2.36.1 → pytensor-2.36.2}/doc/install.rst +0 -0
  81. {pytensor-2.36.1 → pytensor-2.36.2}/doc/internal/how_to_release.rst +0 -0
  82. {pytensor-2.36.1 → pytensor-2.36.2}/doc/internal/index.rst +0 -0
  83. {pytensor-2.36.1 → pytensor-2.36.2}/doc/internal/metadocumentation.rst +0 -0
  84. {pytensor-2.36.1 → pytensor-2.36.2}/doc/introduction.rst +0 -0
  85. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/debugmode.rst +0 -0
  86. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/function.rst +0 -0
  87. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/index.rst +0 -0
  88. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/io.rst +0 -0
  89. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/mode.rst +0 -0
  90. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/nanguardmode.rst +0 -0
  91. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/opfromgraph.rst +0 -0
  92. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/ops.rst +0 -0
  93. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/profilemode.rst +0 -0
  94. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/compile/shared.rst +0 -0
  95. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/config.rst +0 -0
  96. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
  97. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
  98. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
  99. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
  100. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
  101. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
  102. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
  103. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/mlp.html +0 -0
  104. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/mlp.png +0 -0
  105. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/mlp2.html +0 -0
  106. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/mlp2.pdf +0 -0
  107. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/mlp2.png +0 -0
  108. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/ofg.html +0 -0
  109. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/examples/ofg2.html +0 -0
  110. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/index.ipynb +0 -0
  111. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/index.rst +0 -0
  112. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/index_files/index_10_0.png +0 -0
  113. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/index_files/index_11_0.png +0 -0
  114. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/index_files/index_24_0.png +0 -0
  115. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/d3viz/index_files/index_25_0.png +0 -0
  116. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/features.rst +0 -0
  117. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/fgraph.rst +0 -0
  118. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/graph.rst +0 -0
  119. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/index.rst +0 -0
  120. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/op.rst +0 -0
  121. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/replace.rst +0 -0
  122. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/type.rst +0 -0
  123. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/graph/utils.rst +0 -0
  124. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/index.rst +0 -0
  125. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/misc/pkl_utils.rst +0 -0
  126. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/printing.rst +0 -0
  127. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/scalar/index.rst +0 -0
  128. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/scan.rst +0 -0
  129. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/sparse/index.rst +0 -0
  130. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/sparse/sandbox.rst +0 -0
  131. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/basic.rst +0 -0
  132. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/basic_opt.rst +0 -0
  133. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/bcast.png +0 -0
  134. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/bcast.svg +0 -0
  135. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/conv.rst +0 -0
  136. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/elemwise.rst +0 -0
  137. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/extra_ops.rst +0 -0
  138. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/fft.rst +0 -0
  139. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/functional.rst +0 -0
  140. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/index.rst +0 -0
  141. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/io.rst +0 -0
  142. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/math_opt.rst +0 -0
  143. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/nlinalg.rst +0 -0
  144. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/optimize.rst +0 -0
  145. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/plot_fft.png +0 -0
  146. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/random/distributions.rst +0 -0
  147. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/random/index.rst +0 -0
  148. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/slinalg.rst +0 -0
  149. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/tensor/utils.rst +0 -0
  150. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/typed_list.rst +0 -0
  151. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/xtensor/index.md +0 -0
  152. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/xtensor/linalg.md +0 -0
  153. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/xtensor/math.md +0 -0
  154. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/xtensor/module_functions.md +0 -0
  155. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/xtensor/random.md +0 -0
  156. {pytensor-2.36.1 → pytensor-2.36.2}/doc/library/xtensor/type.md +0 -0
  157. {pytensor-2.36.1 → pytensor-2.36.2}/doc/links.rst +0 -0
  158. {pytensor-2.36.1 → pytensor-2.36.2}/doc/optimizations.rst +0 -0
  159. {pytensor-2.36.1 → pytensor-2.36.2}/doc/pylintrc +0 -0
  160. {pytensor-2.36.1 → pytensor-2.36.2}/doc/robots.txt +0 -0
  161. {pytensor-2.36.1 → pytensor-2.36.2}/doc/troubleshooting.rst +0 -0
  162. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/adding.rst +0 -0
  163. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/adding_solution_1.py +0 -0
  164. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/aliasing.rst +0 -0
  165. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/apply.png +0 -0
  166. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/apply.svg +0 -0
  167. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/bcast.png +0 -0
  168. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/broadcasting.rst +0 -0
  169. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/conditions.rst +0 -0
  170. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/debug_faq.rst +0 -0
  171. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/dlogistic.png +0 -0
  172. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/examples.rst +0 -0
  173. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/faq_tutorial.rst +0 -0
  174. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/gradients.rst +0 -0
  175. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/index.rst +0 -0
  176. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/loading_and_saving.rst +0 -0
  177. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/logistic.gp +0 -0
  178. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/logistic.png +0 -0
  179. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/loop.rst +0 -0
  180. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/loop_solution_1.py +0 -0
  181. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/modes.rst +0 -0
  182. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/modes_solution_1.py +0 -0
  183. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/multi_cores.rst +0 -0
  184. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/nan_tutorial.rst +0 -0
  185. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/pics/d3viz.png +0 -0
  186. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
  187. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
  188. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
  189. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/printing_drawing.rst +0 -0
  190. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/prng.rst +0 -0
  191. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/profiling.rst +0 -0
  192. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/profiling_example.py +0 -0
  193. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/profiling_example_out.prof +0 -0
  194. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/shape_info.rst +0 -0
  195. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/sparse.rst +0 -0
  196. {pytensor-2.36.1 → pytensor-2.36.2}/doc/tutorial/symbolic_graphs.rst +0 -0
  197. {pytensor-2.36.1 → pytensor-2.36.2}/doc/user_guide.rst +0 -0
  198. {pytensor-2.36.1 → pytensor-2.36.2}/pyproject.toml +0 -0
  199. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/__init__.py +0 -0
  200. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/bin/__init__.py +0 -0
  201. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/bin/pytensor_cache.py +0 -0
  202. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/breakpoint.py +0 -0
  203. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/__init__.py +0 -0
  204. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/compiledir.py +0 -0
  205. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/compilelock.py +0 -0
  206. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/debugmode.py +0 -0
  207. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/function/__init__.py +0 -0
  208. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/function/pfunc.py +0 -0
  209. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/function/types.py +0 -0
  210. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/io.py +0 -0
  211. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/mode.py +0 -0
  212. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/monitormode.py +0 -0
  213. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/nanguardmode.py +0 -0
  214. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/ops.py +0 -0
  215. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/profiling.py +0 -0
  216. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/compile/sharedvalue.py +0 -0
  217. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/configdefaults.py +0 -0
  218. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/configparser.py +0 -0
  219. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/__init__.py +0 -0
  220. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/css/d3-context-menu.css +0 -0
  221. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/css/d3viz.css +0 -0
  222. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/d3viz.py +0 -0
  223. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/formatting.py +0 -0
  224. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/html/template.html +0 -0
  225. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/js/d3-context-menu.js +0 -0
  226. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/js/d3.v3.min.js +0 -0
  227. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/js/d3viz.js +0 -0
  228. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
  229. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
  230. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/gradient.py +0 -0
  231. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/__init__.py +0 -0
  232. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/basic.py +0 -0
  233. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/destroyhandler.py +0 -0
  234. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/features.py +0 -0
  235. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/null_type.py +0 -0
  236. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/op.py +0 -0
  237. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/replace.py +0 -0
  238. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/rewriting/__init__.py +0 -0
  239. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/rewriting/basic.py +0 -0
  240. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/rewriting/db.py +0 -0
  241. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/rewriting/kanren.py +0 -0
  242. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/rewriting/unify.py +0 -0
  243. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/rewriting/utils.py +0 -0
  244. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/traversal.py +0 -0
  245. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/type.py +0 -0
  246. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/graph/utils.py +0 -0
  247. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/ifelse.py +0 -0
  248. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/ipython.py +0 -0
  249. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/__init__.py +0 -0
  250. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/basic.py +0 -0
  251. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/__init__.py +0 -0
  252. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/basic.py +0 -0
  253. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
  254. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
  255. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/cmodule.py +0 -0
  256. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/cutils.py +0 -0
  257. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/cvm.py +0 -0
  258. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/exceptions.py +0 -0
  259. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/interface.py +0 -0
  260. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/lazylinker_c.py +0 -0
  261. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/op.py +0 -0
  262. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/params_type.py +0 -0
  263. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/c/type.py +0 -0
  264. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/__init__.py +0 -0
  265. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/__init__.py +0 -0
  266. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/basic.py +0 -0
  267. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/blas.py +0 -0
  268. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/blockwise.py +0 -0
  269. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/einsum.py +0 -0
  270. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/elemwise.py +0 -0
  271. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
  272. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/math.py +0 -0
  273. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
  274. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/pad.py +0 -0
  275. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/random.py +0 -0
  276. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/scalar.py +0 -0
  277. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/scan.py +0 -0
  278. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/shape.py +0 -0
  279. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
  280. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
  281. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/slinalg.py +0 -0
  282. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/sort.py +0 -0
  283. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/sparse.py +0 -0
  284. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/subtensor.py +0 -0
  285. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
  286. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/linker.py +0 -0
  287. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/jax/ops.py +0 -0
  288. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/__init__.py +0 -0
  289. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/__init__.py +0 -0
  290. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/basic.py +0 -0
  291. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/blockwise.py +0 -0
  292. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/core.py +0 -0
  293. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/elemwise.py +0 -0
  294. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/extra_ops.py +0 -0
  295. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/math.py +0 -0
  296. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/nlinalg.py +0 -0
  297. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/shape.py +0 -0
  298. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/signal/__init__.py +0 -0
  299. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/signal/conv.py +0 -0
  300. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/slinalg.py +0 -0
  301. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/sort.py +0 -0
  302. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/dispatch/subtensor.py +0 -0
  303. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/mlx/linker.py +0 -0
  304. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/__init__.py +0 -0
  305. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/cache.py +0 -0
  306. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/__init__.py +0 -0
  307. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/blockwise.py +0 -0
  308. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/cython_support.py +0 -0
  309. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/elemwise.py +0 -0
  310. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
  311. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +0 -0
  312. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
  313. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
  314. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
  315. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
  316. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
  317. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +0 -0
  318. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/__init__.py +0 -0
  319. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/cholesky.py +0 -0
  320. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/general.py +0 -0
  321. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/lu_solve.py +0 -0
  322. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/norm.py +0 -0
  323. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/posdef.py +0 -0
  324. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/symmetric.py +0 -0
  325. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/triangular.py +0 -0
  326. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/tridiagonal.py +0 -0
  327. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/solve/utils.py +0 -0
  328. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
  329. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
  330. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/scalar.py +0 -0
  331. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/scan.py +0 -0
  332. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/shape.py +0 -0
  333. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
  334. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
  335. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/slinalg.py +0 -0
  336. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/sort.py +0 -0
  337. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/sparse.py +0 -0
  338. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
  339. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/typed_list.py +0 -0
  340. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
  341. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/numba/linker.py +0 -0
  342. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
  343. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/basic.py +0 -0
  344. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/blas.py +0 -0
  345. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
  346. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
  347. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
  348. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/math.py +0 -0
  349. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
  350. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
  351. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/shape.py +0 -0
  352. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/slinalg.py +0 -0
  353. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/sort.py +0 -0
  354. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
  355. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/pytorch/linker.py +0 -0
  356. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/utils.py +0 -0
  357. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/link/vm.py +0 -0
  358. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/__init__.py +0 -0
  359. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/check_blas.py +0 -0
  360. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/check_blas_many.sh +0 -0
  361. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/check_duplicate_key.py +0 -0
  362. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
  363. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/elemwise_time_test.py +0 -0
  364. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/frozendict.py +0 -0
  365. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/may_share_memory.py +0 -0
  366. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/ordered_set.py +0 -0
  367. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/misc/pkl_utils.py +0 -0
  368. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/npy_2_compat.py +0 -0
  369. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/printing.py +0 -0
  370. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/py.typed +0 -0
  371. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/raise_op.py +0 -0
  372. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/__init__.py +0 -0
  373. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
  374. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
  375. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/c_code/gamma.c +0 -0
  376. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/c_code/incbet.c +0 -0
  377. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/math.py +0 -0
  378. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scalar/sharedvar.py +0 -0
  379. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/__init__.py +0 -0
  380. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/basic.py +0 -0
  381. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/checkpoints.py +0 -0
  382. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/rewriting.py +0 -0
  383. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/scan_perform.pyx +0 -0
  384. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/scan_perform_ext.py +0 -0
  385. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/utils.py +0 -0
  386. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/scan/views.py +0 -0
  387. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/__init__.py +0 -0
  388. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/basic.py +0 -0
  389. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/linalg.py +0 -0
  390. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/math.py +0 -0
  391. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/rewriting.py +0 -0
  392. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/sharedvar.py +0 -0
  393. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/type.py +0 -0
  394. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/utils.py +0 -0
  395. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/sparse/variable.py +0 -0
  396. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/__init__.py +0 -0
  397. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/_linalg/__init__.py +0 -0
  398. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/_linalg/solve/__init__.py +0 -0
  399. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/_linalg/solve/rewriting.py +0 -0
  400. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/_linalg/solve/tridiagonal.py +0 -0
  401. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/basic.py +0 -0
  402. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/blas.py +0 -0
  403. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/blas_c.py +0 -0
  404. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/blas_headers.py +0 -0
  405. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/blockwise.py +0 -0
  406. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
  407. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
  408. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/c_code/dimshuffle.c +0 -0
  409. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/conv/__init__.py +0 -0
  410. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/conv/abstract_conv.py +0 -0
  411. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/einsum.py +0 -0
  412. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/elemwise.py +0 -0
  413. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/elemwise_cgen.py +0 -0
  414. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/exceptions.py +0 -0
  415. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/extra_ops.py +0 -0
  416. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/fft.py +0 -0
  417. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/fourier.py +0 -0
  418. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/functional.py +0 -0
  419. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/interpolate.py +0 -0
  420. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/linalg.py +0 -0
  421. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/math.py +0 -0
  422. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/nlinalg.py +0 -0
  423. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/pad.py +0 -0
  424. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/__init__.py +0 -0
  425. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/basic.py +0 -0
  426. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/op.py +0 -0
  427. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/rewriting/__init__.py +0 -0
  428. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/rewriting/basic.py +0 -0
  429. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/rewriting/jax.py +0 -0
  430. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/rewriting/numba.py +0 -0
  431. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/type.py +0 -0
  432. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/utils.py +0 -0
  433. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/random/var.py +0 -0
  434. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/reshape.py +0 -0
  435. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/__init__.py +0 -0
  436. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/basic.py +0 -0
  437. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/blas.py +0 -0
  438. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/blas_c.py +0 -0
  439. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/blockwise.py +0 -0
  440. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/einsum.py +0 -0
  441. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/elemwise.py +0 -0
  442. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/extra_ops.py +0 -0
  443. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/jax.py +0 -0
  444. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/linalg.py +0 -0
  445. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/math.py +0 -0
  446. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/numba.py +0 -0
  447. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/ofg.py +0 -0
  448. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/reshape.py +0 -0
  449. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/shape.py +0 -0
  450. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/special.py +0 -0
  451. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/subtensor.py +0 -0
  452. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/subtensor_lift.py +0 -0
  453. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
  454. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/shape.py +0 -0
  455. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/sharedvar.py +0 -0
  456. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/signal/__init__.py +0 -0
  457. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/signal/conv.py +0 -0
  458. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/slinalg.py +0 -0
  459. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/sort.py +0 -0
  460. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/special.py +0 -0
  461. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/subtensor.py +0 -0
  462. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/type.py +0 -0
  463. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/type_other.py +0 -0
  464. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/utils.py +0 -0
  465. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/var.py +0 -0
  466. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/variable.py +0 -0
  467. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/tensor/xlogx.py +0 -0
  468. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/typed_list/__init__.py +0 -0
  469. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/typed_list/basic.py +0 -0
  470. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/typed_list/rewriting.py +0 -0
  471. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/typed_list/type.py +0 -0
  472. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/updates.py +0 -0
  473. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/utils.py +0 -0
  474. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/__init__.py +0 -0
  475. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/basic.py +0 -0
  476. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/indexing.py +0 -0
  477. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/linalg.py +0 -0
  478. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/math.py +0 -0
  479. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/random.py +0 -0
  480. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/reduction.py +0 -0
  481. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/__init__.py +0 -0
  482. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/basic.py +0 -0
  483. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/indexing.py +0 -0
  484. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/math.py +0 -0
  485. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/reduction.py +0 -0
  486. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/shape.py +0 -0
  487. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/utils.py +0 -0
  488. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/rewriting/vectorization.py +0 -0
  489. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/shape.py +0 -0
  490. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/type.py +0 -0
  491. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor/xtensor/vectorization.py +0 -0
  492. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor.egg-info/SOURCES.txt +0 -0
  493. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor.egg-info/dependency_links.txt +0 -0
  494. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor.egg-info/entry_points.txt +0 -0
  495. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor.egg-info/requires.txt +0 -0
  496. {pytensor-2.36.1 → pytensor-2.36.2}/pytensor.egg-info/top_level.txt +0 -0
  497. {pytensor-2.36.1 → pytensor-2.36.2}/scripts/mypy-failing.txt +0 -0
  498. {pytensor-2.36.1 → pytensor-2.36.2}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
  499. {pytensor-2.36.1 → pytensor-2.36.2}/setup.cfg +0 -0
  500. {pytensor-2.36.1 → pytensor-2.36.2}/setup.py +0 -0
  501. {pytensor-2.36.1 → pytensor-2.36.2}/tests/link/c/c_code/test_cenum.h +0 -0
  502. {pytensor-2.36.1 → pytensor-2.36.2}/tests/link/c/c_code/test_quadratic_function.c +0 -0
  503. {pytensor-2.36.1 → pytensor-2.36.2}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
  504. {pytensor-2.36.1 → pytensor-2.36.2}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
  505. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_breakpoint.py +0 -0
  506. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_config.py +0 -0
  507. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_gradient.py +0 -0
  508. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_ifelse.py +0 -0
  509. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_printing.py +0 -0
  510. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_raise_op.py +0 -0
  511. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_rop.py +0 -0
  512. {pytensor-2.36.1 → pytensor-2.36.2}/tests/test_updates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytensor
3
- Version: 2.36.1
3
+ Version: 2.36.2
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-21T14:56:52+0000",
11
+ "date": "2026-01-02T17:20:52+0100",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "409a4b2a02e64acc0ca12cd0e046e99fd6f535b9",
15
- "version": "2.36.1"
14
+ "full-revisionid": "0f864a33958e68e5110d043c4b5ef549cd1d6074",
15
+ "version": "2.36.2"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -872,7 +872,7 @@ class OpFromGraph(Op, HasInnerGraph):
872
872
 
873
873
  def clone(self):
874
874
  res = copy(self)
875
- res.fgraph = res.fgraph.clone()
875
+ res.fgraph = res.fgraph.clone(clone_inner_graphs=True)
876
876
  return res
877
877
 
878
878
  def perform(self, node, inputs, outputs):
@@ -838,9 +838,13 @@ class FunctionGraph(MetaObject):
838
838
  def __repr__(self):
839
839
  return f"FunctionGraph({', '.join(graph_as_string(self.inputs, self.outputs))})"
840
840
 
841
- def clone(self, check_integrity=True) -> "FunctionGraph":
841
+ def clone(
842
+ self, check_integrity=True, clone_inner_graphs: bool = False
843
+ ) -> "FunctionGraph":
842
844
  """Clone the graph."""
843
- return self.clone_get_equiv(check_integrity)[0]
845
+ return self.clone_get_equiv(
846
+ check_integrity, clone_inner_graphs=clone_inner_graphs
847
+ )[0]
844
848
 
845
849
  def clone_get_equiv(
846
850
  self, check_integrity: bool = True, attach_feature: bool = True, **kwargs
@@ -478,7 +478,7 @@ def numba_funcify_ensure_cache(op, *args, **kwargs) -> tuple[Callable, str | Non
478
478
  src=f"def {op_name}(*args): return jitable_func(*args)",
479
479
  function_name=op_name,
480
480
  global_env=globals() | {"jitable_func": jitable_func},
481
- cache_key=cache_key,
481
+ cache_key=f"{cache_key}_fastmath{int(config.numba__fastmath)}",
482
482
  )
483
483
  return numba_njit(cached_func, cache=True), cache_key
484
484
 
@@ -1,5 +1,6 @@
1
1
  from copy import deepcopy
2
2
  from hashlib import sha256
3
+ from textwrap import dedent
3
4
 
4
5
  import numba
5
6
  import numpy as np
@@ -10,6 +11,7 @@ from pytensor.compile.io import In, Out
10
11
  from pytensor.compile.mode import NUMBA
11
12
  from pytensor.compile.ops import DeepCopyOp, TypeCastingOp
12
13
  from pytensor.ifelse import IfElse
14
+ from pytensor.link.numba.cache import compile_numba_function_src
13
15
  from pytensor.link.numba.dispatch import basic as numba_basic
14
16
  from pytensor.link.numba.dispatch.basic import (
15
17
  numba_funcify_and_cache_key,
@@ -106,30 +108,35 @@ def numba_funcify_DeepCopyOp(op, node, **kwargs):
106
108
  @register_funcify_default_op_cache_key(IfElse)
107
109
  def numba_funcify_IfElse(op, **kwargs):
108
110
  n_outs = op.n_outs
111
+ as_view = op.as_view
109
112
 
110
- if n_outs > 1:
111
-
112
- @numba_basic.numba_njit
113
- def ifelse(cond, *args):
114
- if cond:
115
- res = args[:n_outs]
116
- else:
117
- res = args[n_outs:]
118
-
119
- return res
113
+ true_names = [f"t{i}" for i in range(n_outs)]
114
+ false_names = [f"f{i}" for i in range(n_outs)]
115
+ arg_list = ", ".join((*true_names, *false_names))
120
116
 
117
+ if as_view:
118
+ true_returns = ", ".join(true_names)
121
119
  else:
120
+ true_returns = ", ".join(f"{name}.copy()" for name in true_names)
121
+ # We only ever view (alias) variables from the true branch. False branch variables must always be copied.
122
+ false_returns = ", ".join(f"{name}.copy()" for name in false_names)
123
+
124
+ func_src = dedent(
125
+ f"""
126
+ def ifelse(cond, {arg_list}):
127
+ if cond:
128
+ return {true_returns}
129
+ else:
130
+ return {false_returns}
131
+ """
132
+ )
122
133
 
123
- @numba_basic.numba_njit
124
- def ifelse(cond, *args):
125
- if cond:
126
- res = args[:n_outs]
127
- else:
128
- res = args[n_outs:]
129
-
130
- return res[0]
134
+ ifelse_func = numba_basic.numba_njit(
135
+ compile_numba_function_src(func_src, "ifelse", globals())
136
+ )
131
137
 
132
- return ifelse
138
+ cache_version = 1
139
+ return ifelse_func, cache_version
133
140
 
134
141
 
135
142
  @register_funcify_and_cache_key(CheckAndRaise)
@@ -216,14 +216,16 @@ def core_MvNormalRV(op, node):
216
216
 
217
217
  @numba_core_rv_funcify.register(ptr.DirichletRV)
218
218
  def core_DirichletRV(op, node):
219
+ dtype = op.dtype
220
+
219
221
  @numba_basic.numba_njit
220
222
  def random_fn(rng, alpha):
221
- y = np.empty_like(alpha)
223
+ y = np.empty_like(alpha, dtype=dtype)
222
224
  for i in range(len(alpha)):
223
225
  y[i] = rng.gamma(alpha[i], 1.0)
224
226
  return y / y.sum()
225
227
 
226
- return random_fn
228
+ return random_fn, 1
227
229
 
228
230
 
229
231
  @numba_core_rv_funcify.register(ptr.GumbelRV)
@@ -410,7 +412,7 @@ def numba_funcify_RandomVariable(op: RandomVariableWithCoreShape, node, **kwargs
410
412
  rv_op: RandomVariable = rv_node.op
411
413
 
412
414
  try:
413
- core_rv_fn = numba_core_rv_funcify(rv_op, rv_node)
415
+ core_rv_fn_and_cache_key = numba_core_rv_funcify(rv_op, rv_node)
414
416
  except NotImplementedError:
415
417
  py_impl = generate_fallback_impl(rv_op, node=rv_node, **kwargs)
416
418
 
@@ -420,6 +422,16 @@ def numba_funcify_RandomVariable(op: RandomVariableWithCoreShape, node, **kwargs
420
422
 
421
423
  return fallback_rv, None
422
424
 
425
+ match core_rv_fn_and_cache_key:
426
+ case (core_rv_fn, (int() | None) as core_cache_key):
427
+ pass
428
+ case (_core_rv_fn, invalid_core_cache_key):
429
+ raise ValueError(
430
+ f"Invalid core_cache_key returned from numba_core_rv_funcify: {invalid_core_cache_key}. Must be int or None."
431
+ )
432
+ case core_rv_fn:
433
+ core_cache_key = "__None__"
434
+
423
435
  size = rv_op.size_param(rv_node)
424
436
  dist_params = rv_op.dist_params(rv_node)
425
437
  size_len = None if isinstance(size.type, NoneTypeT) else get_vector_length(size)
@@ -469,16 +481,19 @@ def numba_funcify_RandomVariable(op: RandomVariableWithCoreShape, node, **kwargs
469
481
 
470
482
  return impl
471
483
 
472
- rv_op_props_dict = rv_op.props_dict() if hasattr(rv_op, "props_dict") else {}
473
- random_rv_key_contents = (
474
- type(op),
475
- type(rv_op),
476
- rv_op,
477
- tuple(rv_op_props_dict.items()),
478
- size_len,
479
- core_shape_len,
480
- inplace,
481
- input_bc_patterns,
482
- )
483
- random_rv_key = sha256(str(random_rv_key_contents).encode()).hexdigest()
484
+ if core_cache_key is None:
485
+ # If the core RV can't be cached, then the whole RV can't be cached
486
+ random_rv_key = None # type: ignore[unreachable]
487
+ else:
488
+ random_rv_key_contents = (
489
+ type(op),
490
+ type(rv_op),
491
+ tuple(rv_op._props_dict().items()), # type: ignore[attr-defined]
492
+ size_len,
493
+ core_shape_len,
494
+ input_bc_patterns,
495
+ output_bc_patterns,
496
+ core_cache_key,
497
+ )
498
+ random_rv_key = sha256(str(random_rv_key_contents).encode()).hexdigest()
484
499
  return random, random_rv_key
@@ -649,7 +649,6 @@ def vector_integer_advanced_indexing(
649
649
  codegen,
650
650
  function_name=func_name,
651
651
  global_env=globals(),
652
- cache_key=cache_key,
653
652
  )
654
653
  )
655
654
  return ret_func, cache_key
@@ -4300,14 +4300,8 @@ class Composite(ScalarInnerGraphOp):
4300
4300
  self._fgraph = fgraph
4301
4301
  return self._fgraph
4302
4302
 
4303
- def clone_float32(self):
4304
- # This will not modify the fgraph or the nodes
4305
- new_ins, new_outs = composite_f32.apply(self.fgraph)
4306
- return Composite(new_ins, new_outs)
4307
-
4308
4303
  def clone(self):
4309
- new_ins, new_outs = composite_f32.apply(self.fgraph)
4310
- return Composite(new_ins, new_outs)
4304
+ return self.__class__(self.fgraph.inputs, self.fgraph.outputs)
4311
4305
 
4312
4306
  def output_types(self, input_types):
4313
4307
  if tuple(input_types) != self.inputs_type:
@@ -4423,86 +4417,4 @@ class Composite(ScalarInnerGraphOp):
4423
4417
  return self.c_code_template % d
4424
4418
 
4425
4419
  def c_code_cache_version_outer(self) -> tuple[int, ...]:
4426
- return (6,)
4427
-
4428
-
4429
- class Compositef32:
4430
- # This is a dict of scalar op classes that need special handling
4431
- special: dict = {}
4432
-
4433
- def apply(self, fgraph):
4434
- mapping = {}
4435
- topo = fgraph.toposort()
4436
- for i in fgraph.inputs:
4437
- if i.dtype == "float16":
4438
- mapping[i] = get_scalar_type("float32")()
4439
- if hasattr(i.tag, "test_value"):
4440
- mapping[i].tag.test_value = i.tag.test_value
4441
- else:
4442
- mapping[i] = i
4443
- for node in topo:
4444
- # Patch up for constants
4445
- for i in node.inputs:
4446
- if i not in mapping:
4447
- assert type(i) is ScalarConstant
4448
- if i.type == float16:
4449
- ni = ScalarConstant(float32, i.data)
4450
- else:
4451
- ni = i
4452
- mapping[i] = ni
4453
- if isinstance(node.op, tuple(self.special)):
4454
- self.special[type(node.op)](node, mapping)
4455
- continue
4456
- new_node = node.clone_with_new_inputs(
4457
- [mapping[inp] for inp in node.inputs], strict=False
4458
- )
4459
- # make sure we don't produce any float16.
4460
- assert not any(o.dtype == "float16" for o in new_node.outputs)
4461
- mapping.update(zip(node.outputs, new_node.outputs, strict=True))
4462
-
4463
- new_ins = [mapping[inp] for inp in fgraph.inputs]
4464
- new_outs = [mapping[out] for out in fgraph.outputs]
4465
- return new_ins, new_outs
4466
-
4467
-
4468
- composite_f32 = Compositef32()
4469
-
4470
-
4471
- def handle_cast(node, mapping):
4472
- inp = mapping[node.inputs[0]]
4473
- out = node.outputs[0]
4474
- node_ok = False
4475
- if node.op.o_type == float16:
4476
- if node.inputs[0].type == float32:
4477
- # cast f32 -> f16, remove
4478
- mapping[out] = inp
4479
- return
4480
- else:
4481
- # cast to f16, convert to f32
4482
- new_out = cast(inp, "float32")
4483
- # change the node for the following if
4484
- node = new_out.owner
4485
- mapping[out] = new_out
4486
- node_ok = True
4487
- if node.inputs[0].type == float16:
4488
- if node.op.o_type == inp.type:
4489
- # cast f16 to new input type, remove
4490
- mapping[out] = inp
4491
- return
4492
- if not node_ok:
4493
- new_node = node.clone_with_new_inputs([inp], strict=False)
4494
- mapping[out] = new_node.outputs[0]
4495
-
4496
-
4497
- Compositef32.special[Cast] = handle_cast
4498
-
4499
-
4500
- def handle_composite(node, mapping):
4501
- new_op = node.op.clone_float32()
4502
- new_outs = new_op(*[mapping[i] for i in node.inputs], return_list=True)
4503
- assert len(new_outs) == len(node.outputs)
4504
- for o, no in zip(node.outputs, new_outs, strict=True):
4505
- mapping[o] = no
4506
-
4507
-
4508
- Compositef32.special[Composite] = handle_composite
4420
+ return (7,)
@@ -123,7 +123,7 @@ class ScalarLoop(ScalarInnerGraphOp):
123
123
  update, until = self.outputs, None
124
124
  init = self.inputs[: len(update)]
125
125
  constant = self.inputs[len(update) :]
126
- return ScalarLoop(
126
+ return self.__class__(
127
127
  init=init,
128
128
  update=update,
129
129
  constant=constant,
@@ -1521,7 +1521,7 @@ class Scan(Op, ScanMethodsMixin, HasInnerGraph):
1521
1521
 
1522
1522
  def clone(self) -> "Scan":
1523
1523
  res = copy(self)
1524
- res.fgraph = res.fgraph.clone()
1524
+ res.fgraph = res.fgraph.clone(clone_inner_graphs=True)
1525
1525
  return res
1526
1526
 
1527
1527
  def make_thunk(self, node, storage_map, compute_map, no_recycling, impl=None):
@@ -211,7 +211,7 @@ class ScipyWrapperOp(Op, HasInnerGraph):
211
211
 
212
212
  def clone(self):
213
213
  copy_op = copy(self)
214
- copy_op.fgraph = self.fgraph.clone()
214
+ copy_op.fgraph = self.fgraph.clone(clone_inner_graphs=True)
215
215
  return copy_op
216
216
 
217
217
  def prepare_node(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytensor
3
- Version: 2.36.1
3
+ Version: 2.36.2
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes