pytensor 2.26.3__tar.gz → 2.27.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. {pytensor-2.26.3/pytensor.egg-info → pytensor-2.27.0}/PKG-INFO +2 -2
  2. pytensor-2.27.0/doc/.templates/nb-badges.html +24 -0
  3. pytensor-2.27.0/doc/.templates/rendered_citation.html +13 -0
  4. pytensor-2.27.0/doc/blog.md +7 -0
  5. {pytensor-2.26.3 → pytensor-2.27.0}/doc/conf.py +97 -34
  6. {pytensor-2.26.3 → pytensor-2.27.0}/doc/core_development_guide.rst +0 -8
  7. {pytensor-2.26.3 → pytensor-2.27.0}/doc/environment.yml +8 -0
  8. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/creating_a_numba_jax_op.rst +8 -8
  9. pytensor-2.27.0/doc/gallery/page_footer.md +27 -0
  10. pytensor-2.27.0/doc/gallery/rewrites/graph_rewrites.ipynb +1104 -0
  11. pytensor-2.27.0/doc/gallery/scan/scan_tutorial.ipynb +852 -0
  12. pytensor-2.27.0/doc/images/PyTensor.png +0 -0
  13. pytensor-2.27.0/doc/images/PyTensor_logo.png +0 -0
  14. pytensor-2.27.0/doc/images/binder.svg +1 -0
  15. pytensor-2.27.0/doc/images/colab.svg +1 -0
  16. pytensor-2.27.0/doc/images/github.svg +1 -0
  17. {pytensor-2.26.3 → pytensor-2.27.0}/doc/index.rst +1 -0
  18. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/index.rst +0 -1
  19. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/misc/pkl_utils.rst +0 -4
  20. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/basic.rst +1 -1
  21. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/random/index.rst +1 -0
  22. pytensor-2.27.0/doc/robots.txt +3 -0
  23. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/examples.rst +3 -0
  24. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/loading_and_saving.rst +1 -1
  25. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/prng.rst +3 -1
  26. {pytensor-2.26.3 → pytensor-2.27.0}/pyproject.toml +5 -1
  27. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/__init__.py +9 -7
  28. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/_version.py +3 -3
  29. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/__init__.py +0 -1
  30. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/builders.py +22 -11
  31. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/compilelock.py +5 -4
  32. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/debugmode.py +9 -7
  33. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/function/pfunc.py +3 -3
  34. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/function/types.py +95 -83
  35. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/mode.py +37 -41
  36. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/configdefaults.py +6 -5
  37. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/configparser.py +2 -2
  38. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/formatting.py +8 -11
  39. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/gradient.py +22 -22
  40. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/basic.py +9 -9
  41. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/op.py +2 -2
  42. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/replace.py +3 -3
  43. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/basic.py +29 -16
  44. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/utils.py +0 -2
  45. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/ifelse.py +12 -6
  46. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/basic.py +25 -50
  47. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/basic.py +18 -9
  48. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/cmodule.py +17 -26
  49. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/op.py +2 -2
  50. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/params_type.py +1 -1
  51. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/extra_ops.py +11 -0
  52. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/scan.py +10 -5
  53. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/shape.py +1 -1
  54. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/tensor_basic.py +5 -4
  55. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/linker.py +5 -9
  56. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/__init__.py +5 -4
  57. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/basic.py +19 -5
  58. pytensor-2.27.0/pytensor/link/numba/dispatch/blockwise.py +91 -0
  59. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/cython_support.py +7 -2
  60. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/elemwise.py +105 -281
  61. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/extra_ops.py +6 -6
  62. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/random.py +1 -1
  63. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/scalar.py +11 -15
  64. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/scan.py +4 -2
  65. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/slinalg.py +2 -1
  66. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/subtensor.py +150 -8
  67. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/tensor_basic.py +6 -2
  68. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/vectorize_codegen.py +22 -13
  69. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/linker.py +0 -17
  70. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/basic.py +5 -6
  71. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/blockwise.py +3 -3
  72. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/elemwise.py +70 -3
  73. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/scalar.py +50 -2
  74. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/shape.py +2 -1
  75. pytensor-2.27.0/pytensor/link/pytorch/linker.py +88 -0
  76. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/utils.py +14 -5
  77. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/vm.py +9 -6
  78. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/check_blas.py +1 -1
  79. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/printing.py +50 -46
  80. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/basic.py +15 -35
  81. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/loop.py +7 -6
  82. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/basic.py +6 -4
  83. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/op.py +45 -22
  84. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/rewriting.py +57 -38
  85. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/utils.py +1 -1
  86. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/basic.py +6 -2
  87. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/__init__.py +1 -0
  88. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/basic.py +157 -90
  89. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas.py +15 -364
  90. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas_scipy.py +4 -15
  91. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blockwise.py +73 -21
  92. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/conv/abstract_conv.py +7 -11
  93. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/einsum.py +7 -3
  94. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/elemwise.py +50 -26
  95. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/elemwise_cgen.py +16 -11
  96. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/extra_ops.py +6 -3
  97. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/functional.py +4 -2
  98. pytensor-2.27.0/pytensor/tensor/interpolate.py +200 -0
  99. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/math.py +1 -76
  100. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/nlinalg.py +30 -3
  101. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/pad.py +3 -1
  102. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/basic.py +2 -1
  103. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/op.py +9 -5
  104. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/basic.py +4 -4
  105. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/numba.py +1 -1
  106. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/utils.py +18 -8
  107. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/__init__.py +1 -0
  108. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/basic.py +126 -120
  109. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/blas.py +1 -1
  110. pytensor-2.27.0/pytensor/tensor/rewriting/blas_scipy.py +37 -0
  111. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/blockwise.py +6 -3
  112. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/elemwise.py +15 -12
  113. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/linalg.py +72 -48
  114. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/math.py +244 -175
  115. pytensor-2.27.0/pytensor/tensor/rewriting/numba.py +108 -0
  116. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/ofg.py +1 -1
  117. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/shape.py +42 -21
  118. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/subtensor.py +53 -29
  119. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/shape.py +22 -29
  120. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/slinalg.py +5 -4
  121. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/subtensor.py +41 -19
  122. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/type.py +7 -2
  123. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/utils.py +1 -1
  124. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/variable.py +34 -13
  125. {pytensor-2.26.3 → pytensor-2.27.0/pytensor.egg-info}/PKG-INFO +2 -2
  126. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/SOURCES.txt +16 -2
  127. pytensor-2.27.0/scripts/slowest_tests/update-slowest-times-issue.sh +113 -0
  128. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_gradient.py +11 -6
  129. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_ifelse.py +2 -2
  130. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_printing.py +10 -3
  131. pytensor-2.26.3/doc/library/sandbox/index.rst +0 -16
  132. pytensor-2.26.3/doc/library/sandbox/linalg.rst +0 -19
  133. pytensor-2.26.3/pytensor/link/pytorch/linker.py +0 -36
  134. pytensor-2.26.3/pytensor/tensor/rewriting/blas_scipy.py +0 -37
  135. {pytensor-2.26.3 → pytensor-2.27.0}/LICENSE.txt +0 -0
  136. {pytensor-2.26.3 → pytensor-2.27.0}/MANIFEST.in +0 -0
  137. {pytensor-2.26.3 → pytensor-2.27.0}/README.rst +0 -0
  138. {pytensor-2.26.3 → pytensor-2.27.0}/doc/.templates/PLACEHOLDER +0 -0
  139. {pytensor-2.26.3 → pytensor-2.27.0}/doc/.templates/layout.html +0 -0
  140. {pytensor-2.26.3 → pytensor-2.27.0}/doc/LICENSE.txt +0 -0
  141. {pytensor-2.26.3 → pytensor-2.27.0}/doc/README.md +0 -0
  142. {pytensor-2.26.3 → pytensor-2.27.0}/doc/acknowledgement.rst +0 -0
  143. {pytensor-2.26.3 → pytensor-2.27.0}/doc/bcast.png +0 -0
  144. {pytensor-2.26.3 → pytensor-2.27.0}/doc/bcast.svg +0 -0
  145. {pytensor-2.26.3 → pytensor-2.27.0}/doc/css.inc +0 -0
  146. {pytensor-2.26.3 → pytensor-2.27.0}/doc/dev_start_guide.rst +0 -0
  147. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/apply.png +0 -0
  148. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/apply.svg +0 -0
  149. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/apply2.svg +0 -0
  150. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/creating_a_c_op.rst +0 -0
  151. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/creating_an_op.rst +0 -0
  152. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/ctype.rst +0 -0
  153. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/extending_faq.rst +0 -0
  154. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
  155. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/graph_rewriting.rst +0 -0
  156. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/graphstructures.rst +0 -0
  157. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/index.rst +0 -0
  158. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/inplace.rst +0 -0
  159. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/op.rst +0 -0
  160. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/other_ops.rst +0 -0
  161. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
  162. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
  163. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/pipeline.rst +0 -0
  164. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/scan.rst +0 -0
  165. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/tips.rst +0 -0
  166. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/type.rst +0 -0
  167. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/unittest.rst +0 -0
  168. {pytensor-2.26.3 → pytensor-2.27.0}/doc/extending/using_params.rst +0 -0
  169. {pytensor-2.26.3 → pytensor-2.27.0}/doc/faq.rst +0 -0
  170. {pytensor-2.26.3 → pytensor-2.27.0}/doc/generate_dtype_tensor_table.py +0 -0
  171. {pytensor-2.26.3 → pytensor-2.27.0}/doc/glossary.rst +0 -0
  172. {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/Elman_srnn.png +0 -0
  173. {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/PyTensor_RGB.svg +0 -0
  174. {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/blocksparse.png +0 -0
  175. {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/lstm.png +0 -0
  176. {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/lstm_memorycell.png +0 -0
  177. {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/talk2010.gif +0 -0
  178. {pytensor-2.26.3 → pytensor-2.27.0}/doc/images/talk2010.png +0 -0
  179. {pytensor-2.26.3 → pytensor-2.27.0}/doc/install.rst +0 -0
  180. {pytensor-2.26.3 → pytensor-2.27.0}/doc/internal/how_to_release.rst +0 -0
  181. {pytensor-2.26.3 → pytensor-2.27.0}/doc/internal/index.rst +0 -0
  182. {pytensor-2.26.3 → pytensor-2.27.0}/doc/internal/metadocumentation.rst +0 -0
  183. {pytensor-2.26.3 → pytensor-2.27.0}/doc/introduction.rst +0 -0
  184. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/debugmode.rst +0 -0
  185. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/function.rst +0 -0
  186. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/index.rst +0 -0
  187. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/io.rst +0 -0
  188. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/mode.rst +0 -0
  189. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/nanguardmode.rst +0 -0
  190. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/opfromgraph.rst +0 -0
  191. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/ops.rst +0 -0
  192. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/profilemode.rst +0 -0
  193. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/compile/shared.rst +0 -0
  194. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/config.rst +0 -0
  195. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
  196. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
  197. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
  198. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
  199. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
  200. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
  201. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
  202. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp.html +0 -0
  203. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp.png +0 -0
  204. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp2.html +0 -0
  205. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
  206. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/mlp2.png +0 -0
  207. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/ofg.html +0 -0
  208. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/examples/ofg2.html +0 -0
  209. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index.ipynb +0 -0
  210. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index.rst +0 -0
  211. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
  212. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
  213. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
  214. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
  215. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/gradient.rst +0 -0
  216. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/features.rst +0 -0
  217. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/fgraph.rst +0 -0
  218. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/graph.rst +0 -0
  219. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/index.rst +0 -0
  220. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/op.rst +0 -0
  221. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/replace.rst +0 -0
  222. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/type.rst +0 -0
  223. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/graph/utils.rst +0 -0
  224. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/printing.rst +0 -0
  225. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/scalar/index.rst +0 -0
  226. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/scan.rst +0 -0
  227. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/sparse/index.rst +0 -0
  228. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/sparse/sandbox.rst +0 -0
  229. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/basic_opt.rst +0 -0
  230. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/bcast.png +0 -0
  231. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/bcast.svg +0 -0
  232. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/conv.rst +0 -0
  233. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/elemwise.rst +0 -0
  234. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/extra_ops.rst +0 -0
  235. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/fft.rst +0 -0
  236. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/functional.rst +0 -0
  237. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/index.rst +0 -0
  238. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/io.rst +0 -0
  239. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/math_opt.rst +0 -0
  240. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/nlinalg.rst +0 -0
  241. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/plot_fft.png +0 -0
  242. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/random/distributions.rst +0 -0
  243. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/slinalg.rst +0 -0
  244. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/tensor/utils.rst +0 -0
  245. {pytensor-2.26.3 → pytensor-2.27.0}/doc/library/typed_list.rst +0 -0
  246. {pytensor-2.26.3 → pytensor-2.27.0}/doc/links.rst +0 -0
  247. {pytensor-2.26.3 → pytensor-2.27.0}/doc/optimizations.rst +0 -0
  248. {pytensor-2.26.3 → pytensor-2.27.0}/doc/pylintrc +0 -0
  249. {pytensor-2.26.3 → pytensor-2.27.0}/doc/troubleshooting.rst +0 -0
  250. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/adding.rst +0 -0
  251. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/adding_solution_1.py +0 -0
  252. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/aliasing.rst +0 -0
  253. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/apply.png +0 -0
  254. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/apply.svg +0 -0
  255. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/bcast.png +0 -0
  256. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/broadcasting.rst +0 -0
  257. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/conditions.rst +0 -0
  258. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/debug_faq.rst +0 -0
  259. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/dlogistic.png +0 -0
  260. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/faq_tutorial.rst +0 -0
  261. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/gradients.rst +0 -0
  262. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/index.rst +0 -0
  263. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/logistic.gp +0 -0
  264. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/logistic.png +0 -0
  265. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/loop.rst +0 -0
  266. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/loop_solution_1.py +0 -0
  267. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/modes.rst +0 -0
  268. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/modes_solution_1.py +0 -0
  269. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/multi_cores.rst +0 -0
  270. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/nan_tutorial.rst +0 -0
  271. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/d3viz.png +0 -0
  272. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
  273. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
  274. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
  275. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/printing_drawing.rst +0 -0
  276. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/profiling.rst +0 -0
  277. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/profiling_example.py +0 -0
  278. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/profiling_example_out.prof +0 -0
  279. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/shape_info.rst +0 -0
  280. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/sparse.rst +0 -0
  281. {pytensor-2.26.3 → pytensor-2.27.0}/doc/tutorial/symbolic_graphs.rst +0 -0
  282. {pytensor-2.26.3 → pytensor-2.27.0}/doc/user_guide.rst +0 -0
  283. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/bin/__init__.py +0 -0
  284. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/bin/pytensor_cache.py +0 -0
  285. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/breakpoint.py +0 -0
  286. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/compiledir.py +0 -0
  287. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/function/__init__.py +0 -0
  288. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/io.py +0 -0
  289. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/monitormode.py +0 -0
  290. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/nanguardmode.py +0 -0
  291. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/ops.py +0 -0
  292. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/profiling.py +0 -0
  293. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/compile/sharedvalue.py +0 -0
  294. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/__init__.py +0 -0
  295. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
  296. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/css/d3viz.css +0 -0
  297. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/d3viz.py +0 -0
  298. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
  299. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
  300. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/d3viz.js +0 -0
  301. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
  302. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
  303. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/__init__.py +0 -0
  304. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/destroyhandler.py +0 -0
  305. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/features.py +0 -0
  306. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/fg.py +0 -0
  307. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/null_type.py +0 -0
  308. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/__init__.py +0 -0
  309. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/db.py +0 -0
  310. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/kanren.py +0 -0
  311. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/unify.py +0 -0
  312. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/rewriting/utils.py +0 -0
  313. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/graph/type.py +0 -0
  314. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/__init__.py +0 -0
  315. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/__init__.py +0 -0
  316. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
  317. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
  318. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/cutils.py +0 -0
  319. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/cvm.py +0 -0
  320. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/exceptions.py +0 -0
  321. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/interface.py +0 -0
  322. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/lazylinker_c.py +0 -0
  323. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/c/type.py +0 -0
  324. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/__init__.py +0 -0
  325. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/__init__.py +0 -0
  326. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/basic.py +0 -0
  327. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/blas.py +0 -0
  328. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/blockwise.py +0 -0
  329. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/einsum.py +0 -0
  330. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
  331. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/math.py +0 -0
  332. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
  333. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/pad.py +0 -0
  334. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/random.py +0 -0
  335. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/scalar.py +0 -0
  336. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/slinalg.py +0 -0
  337. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/sort.py +0 -0
  338. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
  339. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/jax/dispatch/subtensor.py +0 -0
  340. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/__init__.py +0 -0
  341. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
  342. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/numba/dispatch/sparse.py +0 -0
  343. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
  344. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/blas.py +0 -0
  345. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
  346. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/math.py +0 -0
  347. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/nlinalg.py +0 -0
  348. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/sort.py +0 -0
  349. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/link/pytorch/dispatch/subtensor.py +0 -0
  350. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/__init__.py +0 -0
  351. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/check_blas_many.sh +0 -0
  352. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/check_duplicate_key.py +0 -0
  353. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
  354. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/elemwise_time_test.py +0 -0
  355. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/frozendict.py +0 -0
  356. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/may_share_memory.py +0 -0
  357. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/ordered_set.py +0 -0
  358. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/misc/pkl_utils.py +0 -0
  359. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/py.typed +0 -0
  360. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/raise_op.py +0 -0
  361. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/__init__.py +0 -0
  362. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
  363. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
  364. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/gamma.c +0 -0
  365. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/c_code/incbet.c +0 -0
  366. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/math.py +0 -0
  367. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scalar/sharedvar.py +0 -0
  368. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/__init__.py +0 -0
  369. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/checkpoints.py +0 -0
  370. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/scan_perform.pyx +0 -0
  371. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/scan_perform_ext.py +0 -0
  372. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/scan/views.py +0 -0
  373. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/__init__.py +0 -0
  374. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/rewriting.py +0 -0
  375. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sandbox/__init__.py +0 -0
  376. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sandbox/sp.py +0 -0
  377. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sandbox/sp2.py +0 -0
  378. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/sharedvar.py +0 -0
  379. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/type.py +0 -0
  380. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/sparse/utils.py +0 -0
  381. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas_c.py +0 -0
  382. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/blas_headers.py +0 -0
  383. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
  384. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
  385. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/c_code/dimshuffle.c +0 -0
  386. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/conv/__init__.py +0 -0
  387. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/exceptions.py +0 -0
  388. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/fft.py +0 -0
  389. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/fourier.py +0 -0
  390. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/inplace.py +0 -0
  391. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/io.py +0 -0
  392. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/linalg.py +0 -0
  393. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/__init__.py +0 -0
  394. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
  395. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/rewriting/jax.py +0 -0
  396. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/type.py +0 -0
  397. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/random/var.py +0 -0
  398. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
  399. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/einsum.py +0 -0
  400. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
  401. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/jax.py +0 -0
  402. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/special.py +0 -0
  403. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
  404. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/sharedvar.py +0 -0
  405. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/sort.py +0 -0
  406. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/special.py +0 -0
  407. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/type_other.py +0 -0
  408. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/var.py +0 -0
  409. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/tensor/xlogx.py +0 -0
  410. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/__init__.py +0 -0
  411. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/basic.py +0 -0
  412. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/rewriting.py +0 -0
  413. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/typed_list/type.py +0 -0
  414. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/updates.py +0 -0
  415. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor/utils.py +0 -0
  416. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/dependency_links.txt +0 -0
  417. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/entry_points.txt +0 -0
  418. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/requires.txt +0 -0
  419. {pytensor-2.26.3 → pytensor-2.27.0}/pytensor.egg-info/top_level.txt +0 -0
  420. {pytensor-2.26.3 → pytensor-2.27.0}/scripts/mypy-failing.txt +0 -0
  421. {pytensor-2.26.3 → pytensor-2.27.0}/setup.cfg +0 -0
  422. {pytensor-2.26.3 → pytensor-2.27.0}/setup.py +0 -0
  423. {pytensor-2.26.3 → pytensor-2.27.0}/tests/link/c/c_code/test_cenum.h +0 -0
  424. {pytensor-2.26.3 → pytensor-2.27.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
  425. {pytensor-2.26.3 → pytensor-2.27.0}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
  426. {pytensor-2.26.3 → pytensor-2.27.0}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
  427. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_breakpoint.py +0 -0
  428. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_config.py +0 -0
  429. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_raise_op.py +0 -0
  430. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_rop.py +0 -0
  431. {pytensor-2.26.3 → pytensor-2.27.0}/tests/test_updates.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: pytensor
3
- Version: 2.26.3
3
+ Version: 2.27.0
4
4
  Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
5
5
  Author-email: pymc-devs <pymc.devs@gmail.com>
6
6
  License: .. _license:
@@ -0,0 +1,24 @@
1
+ {% if pagename in ablog %}
2
+
3
+ <!-- Generate correct links and render github/binder/colab badges -->
4
+ {% set gh_basepath = github_user + '/' + github_repo + '/blob/' + github_version + '/' %}
5
+ {% set encoded_base = github_user + '%252F' + github_repo %}
6
+ {% set gh_binder = github_user + '/' + github_repo + '/' + github_version %}
7
+ {% set doc_path_aux = doc_path | trim('/') %}
8
+ {% set file_path = doc_path_aux + '/' + pagename + ".ipynb" %}
9
+ {% set encoded_path = file_path | replace("/", "%252F") %}
10
+
11
+
12
+ <div class="sd-text-right">
13
+ <p>
14
+ <a href="{{ github_url + '/' + gh_basepath + file_path }}", role="button" target="_blank">
15
+ <img src="{{ pathto('_static/github.svg', 1) }}" alt="View On GitHub"></a>
16
+
17
+ <a href="{{ 'https://mybinder.org/v2/gh/' + sandbox_repo + '?urlpath=git-pull%3Frepo%3Dhttps%253A%252F%252Fgithub.com%252F' + encoded_base + '%26urlpath%3Dtree%252F' + github_repo + '%252F' + encoded_path + '%26branch%3D' + github_version }}" target="_blank">
18
+ <img src="{{ pathto('_static/binder.svg', 1) }}" alt="Open In Binder"></a>
19
+
20
+ <a href="{{ 'https://colab.research.google.com/github/' + gh_basepath + file_path }}" target="_blank">
21
+ <img src="{{ pathto('_static/colab.svg', 1) }}" alt="Open In Colab"/></a>
22
+ </p>
23
+ </div>
24
+ {% endif %}
@@ -0,0 +1,13 @@
1
+ <!-- continuation of examples/page_footer.md -->
2
+ {% if pagename in ablog %}
3
+ {% set post = ablog[pagename] %}
4
+ {% for coll in post.author %}
5
+ {% if coll|length %}
6
+ {{ coll }}
7
+ {% if loop.index < post.author | length %},{% endif %}
8
+ {% else %}
9
+ {{ coll }}
10
+ {% if loop.index < post.author | length %},{% endif %}
11
+ {% endif %}
12
+ {% endfor %}. "{{ title.split(' — ')[0] }}". In: <i>Pytensor Examples</i>. Ed. by Pytensor Team. <!-- DOI: <a href={{ doi_url }}>{{ doi_code }}</a> -->
13
+ {% endif %}
@@ -0,0 +1,7 @@
1
+ ---
2
+ orphan: true
3
+ ---
4
+
5
+ # Recent updates
6
+
7
+ <!-- auto generated by ablog so it's empty -->
@@ -1,31 +1,13 @@
1
- # pytensor documentation build configuration file, created by
2
- # sphinx-quickstart on Tue Oct 7 16:34:06 2008.
3
- #
4
- # This file is execfile()d with the current directory set to its containing
5
- # directory.
6
- #
7
- # The contents of this file are pickled, so don't put values in the namespace
8
- # that aren't pickleable (module imports are okay, they're removed
9
- # automatically).
10
- #
11
- # All configuration values have a default value; values that are commented out
12
- # serve to show the default value.
13
-
14
- # If your extensions are in another directory, add it here. If the directory
15
- # is relative to the documentation root, use Path.absolute to make it
16
- # absolute, like shown here.
17
- # sys.path.append(str(Path("some/directory").absolute()))
18
-
19
1
  import os
20
2
  import inspect
21
3
  import sys
22
4
  import pytensor
5
+ from pathlib import Path
6
+
7
+ sys.path.insert(0, str(Path("..").resolve() / "scripts"))
23
8
 
24
9
  # General configuration
25
10
  # ---------------------
26
-
27
- # Add any Sphinx extension module names here, as strings. They can be
28
- # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
29
11
  extensions = [
30
12
  "sphinx.ext.autodoc",
31
13
  "sphinx.ext.todo",
@@ -34,9 +16,22 @@ extensions = [
34
16
  "sphinx.ext.linkcode",
35
17
  "sphinx.ext.mathjax",
36
18
  "sphinx_design",
37
- "sphinx.ext.intersphinx"
19
+ "sphinx.ext.intersphinx",
20
+ "sphinx.ext.autosummary",
21
+ "sphinx.ext.autosectionlabel",
22
+ "ablog",
23
+ "myst_nb",
24
+ "generate_gallery",
25
+ "sphinx_sitemap",
38
26
  ]
39
27
 
28
+ # Don't auto-generate summary for class members.
29
+ numpydoc_show_class_members = False
30
+ autosummary_generate = True
31
+ autodoc_typehints = "none"
32
+ remove_from_toctrees = ["**/classmethods/*"]
33
+
34
+
40
35
  intersphinx_mapping = {
41
36
  "jax": ("https://jax.readthedocs.io/en/latest", None),
42
37
  "numpy": ("https://numpy.org/doc/stable", None),
@@ -92,6 +87,7 @@ today_fmt = "%B %d, %Y"
92
87
  # List of directories, relative to source directories, that shouldn't be
93
88
  # searched for source files.
94
89
  exclude_dirs = ["images", "scripts", "sandbox"]
90
+ exclude_patterns = ['page_footer.md', '**/*.myst.md']
95
91
 
96
92
  # The reST default role (used for this markup: `text`) to use for all
97
93
  # documents.
@@ -115,19 +111,15 @@ pygments_style = "sphinx"
115
111
  # Options for HTML output
116
112
  # -----------------------
117
113
 
118
- # The style sheet to use for HTML and HTML Help pages. A file of that name
119
- # must exist either in Sphinx' static/ path, or in one of the custom paths
120
- # given in html_static_path.
121
- # html_style = 'default.css'
122
- # html_theme = 'sphinxdoc'
114
+ # The theme to use for HTML and HTML Help pages. See the documentation for
115
+ # a list of builtin themes.
116
+ html_theme = "pymc_sphinx_theme"
117
+ html_logo = "images/PyTensor_RGB.svg"
118
+
119
+ html_baseurl = "https://pytensor.readthedocs.io"
120
+ sitemap_url_scheme = f"{{lang}}{rtd_version}/{{link}}"
123
121
 
124
- # html4_writer added to Fix colon & whitespace misalignment
125
- # https://github.com/readthedocs/sphinx_rtd_theme/issues/766#issuecomment-513852197
126
- # https://github.com/readthedocs/sphinx_rtd_theme/issues/766#issuecomment-629666319
127
- # html4_writer = False
128
122
 
129
- html_logo = "images/PyTensor_RGB.svg"
130
- html_theme = "pymc_sphinx_theme"
131
123
  html_theme_options = {
132
124
  "use_search_override": False,
133
125
  "icon_links": [
@@ -156,15 +148,27 @@ html_theme_options = {
156
148
  "type": "fontawesome",
157
149
  },
158
150
  ],
151
+ "secondary_sidebar_items": ["page-toc", "edit-this-page", "sourcelink", "donate"],
152
+ "navbar_start": ["navbar-logo"],
153
+ "article_header_end": ["nb-badges"],
154
+ "article_footer_items": ["rendered_citation.html"],
159
155
  }
160
156
  html_context = {
157
+ "github_url": "https://github.com",
161
158
  "github_user": "pymc-devs",
162
159
  "github_repo": "pytensor",
163
- "github_version": "main",
160
+ "github_version": version if "." in rtd_version else "main",
161
+ "sandbox_repo": f"pymc-devs/pymc-sandbox/{version}",
164
162
  "doc_path": "doc",
165
163
  "default_mode": "light",
166
164
  }
167
165
 
166
+ # Add any paths that contain custom static files (such as style sheets) here,
167
+ # relative to this directory. They are copied after the builtin static files,
168
+ # so a file named "default.css" will overwrite the builtin "default.css".
169
+ # html_static_path = ["../_static"]
170
+ html_extra_path = ["_thumbnails", 'images', "robots.txt"]
171
+ templates_path = [".templates"]
168
172
 
169
173
  # The name for this set of Sphinx documents. If None, it defaults to
170
174
  # "<project> v<release> documentation".
@@ -295,3 +299,62 @@ latex_documents = [
295
299
 
296
300
  # If false, no module index is generated.
297
301
  # latex_use_modindex = True
302
+
303
+
304
+ # -- MyST config -------------------------------------------------
305
+ myst_enable_extensions = [
306
+ "colon_fence",
307
+ "deflist",
308
+ "dollarmath",
309
+ "amsmath",
310
+ "substitution",
311
+ ]
312
+ myst_dmath_double_inline = True
313
+
314
+ citation_code = f"""
315
+ ```bibtex
316
+ @incollection{{citekey,
317
+ author = "<notebook authors, see above>",
318
+ title = "<notebook title>",
319
+ editor = "Pytensor Team",
320
+ booktitle = "Pytensor Examples",
321
+ }}
322
+ ```
323
+ """
324
+
325
+ myst_substitutions = {
326
+ "pip_dependencies": "{{ extra_dependencies }}",
327
+ "conda_dependencies": "{{ extra_dependencies }}",
328
+ "extra_install_notes": "",
329
+ "citation_code": citation_code,
330
+ }
331
+
332
+ nb_execution_mode = "off"
333
+ nbsphinx_execute = "never"
334
+ nbsphinx_allow_errors = True
335
+
336
+ rediraffe_redirects = {
337
+ "index.md": "gallery.md",
338
+ }
339
+
340
+ # -- Bibtex config -------------------------------------------------
341
+ bibtex_bibfiles = ["references.bib"]
342
+ bibtex_default_style = "unsrt"
343
+ bibtex_reference_style = "author_year"
344
+
345
+
346
+ # -- ablog config -------------------------------------------------
347
+ blog_baseurl = "https://pytensor.readthedocs.io/en/latest/index.html"
348
+ blog_title = "Pytensor Examples"
349
+ blog_path = "blog"
350
+ blog_authors = {
351
+ "contributors": ("Pytensor Contributors", "https://pytensor.readthedocs.io"),
352
+ }
353
+ blog_default_author = "contributors"
354
+ post_show_prev_next = False
355
+ fontawesome_included = True
356
+ # post_redirect_refresh = 1
357
+ # post_auto_image = 1
358
+ # post_auto_excerpt = 2
359
+
360
+ # notfound_urls_prefix = ""
@@ -26,12 +26,4 @@ some of them might be outdated though:
26
26
 
27
27
  * :ref:`unittest` -- Tutorial on how to use unittest in testing PyTensor.
28
28
 
29
- * :ref:`sandbox_debugging_step_mode` -- How to step through the execution of
30
- an PyTensor function and print the inputs and outputs of each op.
31
-
32
- * :ref:`sandbox_elemwise` -- Description of element wise operations.
33
-
34
- * :ref:`sandbox_randnb` -- Description of how PyTensor deals with random
35
- numbers.
36
-
37
29
  * :ref:`sparse` -- Description of the ``sparse`` type in PyTensor.
@@ -14,6 +14,14 @@ dependencies:
14
14
  - pillow
15
15
  - pymc-sphinx-theme
16
16
  - sphinx-design
17
+ - pygments
18
+ - pydot
19
+ - ipython
20
+ - myst-nb
21
+ - matplotlib
22
+ - watermark
23
+ - ablog
17
24
  - pip
18
25
  - pip:
26
+ - sphinx_sitemap
19
27
  - -e ..
@@ -1,5 +1,5 @@
1
1
  Adding JAX, Numba and Pytorch support for `Op`\s
2
- =======================================
2
+ ================================================
3
3
 
4
4
  PyTensor is able to convert its graphs into JAX, Numba and Pytorch compiled functions. In order to do
5
5
  this, each :class:`Op` in an PyTensor graph must have an equivalent JAX/Numba/Pytorch implementation function.
@@ -7,7 +7,7 @@ this, each :class:`Op` in an PyTensor graph must have an equivalent JAX/Numba/Py
7
7
  This tutorial will explain how JAX, Numba and Pytorch implementations are created for an :class:`Op`.
8
8
 
9
9
  Step 1: Identify the PyTensor :class:`Op` you'd like to implement
10
- ------------------------------------------------------------------------
10
+ -----------------------------------------------------------------
11
11
 
12
12
  Find the source for the PyTensor :class:`Op` you'd like to be supported and
13
13
  identify the function signature and return values. These can be determined by
@@ -98,7 +98,7 @@ how the inputs and outputs are used to compute the outputs for an :class:`Op`
98
98
  in Python. This method is effectively what needs to be implemented.
99
99
 
100
100
  Step 2: Find the relevant method in JAX/Numba/Pytorch (or something close)
101
- ---------------------------------------------------------
101
+ --------------------------------------------------------------------------
102
102
 
103
103
  With a precise idea of what the PyTensor :class:`Op` does we need to figure out how
104
104
  to implement it in JAX, Numba or Pytorch. In the best case scenario, there is a similarly named
@@ -269,7 +269,7 @@ and :func:`torch.cumprod`
269
269
  z[0] = np.cumprod(x, axis=self.axis)
270
270
 
271
271
  Step 3: Register the function with the respective dispatcher
272
- ---------------------------------------------------------------
272
+ ------------------------------------------------------------
273
273
 
274
274
  With the PyTensor `Op` replicated, we'll need to register the
275
275
  function with the backends `Linker`. This is done through the use of
@@ -358,13 +358,13 @@ Here's an example for the `CumOp`\ `Op`:
358
358
  if mode == "add":
359
359
  if axis is None or ndim == 1:
360
360
 
361
- @numba_basic.numba_njit(fastmath=config.numba__fastmath)
361
+ @numba_basic.numba_njit()
362
362
  def cumop(x):
363
363
  return np.cumsum(x)
364
364
 
365
365
  else:
366
366
 
367
- @numba_basic.numba_njit(boundscheck=False, fastmath=config.numba__fastmath)
367
+ @numba_basic.numba_njit(boundscheck=False)
368
368
  def cumop(x):
369
369
  out_dtype = x.dtype
370
370
  if x.shape[axis] < 2:
@@ -382,13 +382,13 @@ Here's an example for the `CumOp`\ `Op`:
382
382
  else:
383
383
  if axis is None or ndim == 1:
384
384
 
385
- @numba_basic.numba_njit(fastmath=config.numba__fastmath)
385
+ @numba_basic.numba_njit()
386
386
  def cumop(x):
387
387
  return np.cumprod(x)
388
388
 
389
389
  else:
390
390
 
391
- @numba_basic.numba_njit(boundscheck=False, fastmath=config.numba__fastmath)
391
+ @numba_basic.numba_njit(boundscheck=False)
392
392
  def cumop(x):
393
393
  out_dtype = x.dtype
394
394
  if x.shape[axis] < 2:
@@ -0,0 +1,27 @@
1
+ ## License notice
2
+ All the notebooks in this example gallery are provided under a
3
+ [3-Clause BSD License](https://github.com/pymc-devs/pytensor/blob/main/doc/LICENSE.txt)
4
+ which allows modification, and redistribution for any
5
+ use provided the copyright and license notices are preserved.
6
+
7
+ ## Citing Pytensor Examples
8
+
9
+ To cite this notebook, please use the suggested citation below.
10
+
11
+ :::{important}
12
+ Many notebooks are adapted from other sources: blogs, books... In such cases you should
13
+ cite the original source as well.
14
+
15
+ Also remember to cite the relevant libraries used by your code.
16
+ :::
17
+
18
+ Here is an example citation template in bibtex:
19
+
20
+ {{ citation_code }}
21
+
22
+ which once rendered could look like:
23
+
24
+ <!-- continues in _templates/page.html!!! -->
25
+ <!-- I wanted to get some kind of automation to the process,
26
+ and html templates have access to many variables that are not available
27
+ from jinja-myst -->