pytensor 2.17.3__tar.gz → 2.18.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 (414) hide show
  1. {pytensor-2.17.3 → pytensor-2.18.0}/PKG-INFO +2 -2
  2. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/random/basic.rst +0 -3
  3. {pytensor-2.17.3 → pytensor-2.18.0}/pyproject.toml +2 -2
  4. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/_version.py +3 -3
  5. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/builders.py +8 -7
  6. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/function/pfunc.py +2 -1
  7. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/function/types.py +5 -5
  8. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/mode.py +3 -3
  9. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/ops.py +4 -5
  10. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/profiling.py +9 -9
  11. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/sharedvalue.py +2 -2
  12. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/configparser.py +3 -2
  13. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/gradient.py +14 -26
  14. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/__init__.py +1 -1
  15. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/basic.py +50 -52
  16. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/fg.py +21 -33
  17. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/op.py +22 -25
  18. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/replace.py +16 -5
  19. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/basic.py +20 -20
  20. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/db.py +7 -6
  21. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/kanren.py +4 -3
  22. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/unify.py +2 -2
  23. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/utils.py +2 -1
  24. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/type.py +2 -2
  25. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/utils.py +5 -4
  26. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/ifelse.py +2 -1
  27. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/basic.py +17 -26
  28. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/basic.py +3 -3
  29. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/cmodule.py +164 -211
  30. pytensor-2.18.0/pytensor/link/c/exceptions.py +29 -0
  31. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/interface.py +23 -23
  32. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/op.py +16 -28
  33. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/__init__.py +1 -0
  34. pytensor-2.18.0/pytensor/link/jax/dispatch/blockwise.py +29 -0
  35. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/scalar.py +70 -40
  36. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/cython_support.py +11 -10
  37. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/random.py +2 -3
  38. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/scalar.py +1 -2
  39. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/scan.py +12 -12
  40. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/utils.py +18 -22
  41. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/vm.py +21 -29
  42. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/check_duplicate_key.py +4 -5
  43. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/printing.py +19 -29
  44. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/basic.py +8 -8
  45. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/loop.py +3 -2
  46. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/math.py +54 -6
  47. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/op.py +5 -5
  48. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/rewriting.py +9 -9
  49. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/utils.py +7 -6
  50. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/type.py +2 -1
  51. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/__init__.py +3 -1
  52. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/basic.py +10 -10
  53. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas.py +1 -2
  54. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blockwise.py +45 -60
  55. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/elemwise.py +3 -5
  56. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/extra_ops.py +9 -9
  57. pytensor-2.18.0/pytensor/tensor/functional.py +125 -0
  58. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/math.py +6 -0
  59. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/nlinalg.py +1 -2
  60. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/basic.py +19 -38
  61. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/op.py +4 -3
  62. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/rewriting/jax.py +0 -13
  63. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/utils.py +4 -3
  64. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/elemwise.py +14 -13
  65. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/linalg.py +55 -2
  66. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/math.py +22 -2
  67. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/shape.py +65 -7
  68. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/subtensor.py +6 -5
  69. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/type.py +14 -13
  70. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/utils.py +40 -1
  71. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/variable.py +36 -0
  72. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/utils.py +2 -3
  73. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/PKG-INFO +2 -2
  74. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/SOURCES.txt +2 -0
  75. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/requires.txt +1 -1
  76. pytensor-2.17.3/pytensor/link/c/exceptions.py +0 -18
  77. {pytensor-2.17.3 → pytensor-2.18.0}/LICENSE.txt +0 -0
  78. {pytensor-2.17.3 → pytensor-2.18.0}/MANIFEST.in +0 -0
  79. {pytensor-2.17.3 → pytensor-2.18.0}/README.rst +0 -0
  80. {pytensor-2.17.3 → pytensor-2.18.0}/bin/__init__.py +0 -0
  81. {pytensor-2.17.3 → pytensor-2.18.0}/bin/pytensor-cache +0 -0
  82. {pytensor-2.17.3 → pytensor-2.18.0}/bin/pytensor_cache.py +0 -0
  83. {pytensor-2.17.3 → pytensor-2.18.0}/doc/.templates/PLACEHOLDER +0 -0
  84. {pytensor-2.17.3 → pytensor-2.18.0}/doc/.templates/layout.html +0 -0
  85. {pytensor-2.17.3 → pytensor-2.18.0}/doc/LICENSE.txt +0 -0
  86. {pytensor-2.17.3 → pytensor-2.18.0}/doc/README.md +0 -0
  87. {pytensor-2.17.3 → pytensor-2.18.0}/doc/acknowledgement.rst +0 -0
  88. {pytensor-2.17.3 → pytensor-2.18.0}/doc/bcast.png +0 -0
  89. {pytensor-2.17.3 → pytensor-2.18.0}/doc/bcast.svg +0 -0
  90. {pytensor-2.17.3 → pytensor-2.18.0}/doc/conf.py +0 -0
  91. {pytensor-2.17.3 → pytensor-2.18.0}/doc/core_development_guide.rst +0 -0
  92. {pytensor-2.17.3 → pytensor-2.18.0}/doc/css.inc +0 -0
  93. {pytensor-2.17.3 → pytensor-2.18.0}/doc/dev_start_guide.rst +0 -0
  94. {pytensor-2.17.3 → pytensor-2.18.0}/doc/environment.yml +0 -0
  95. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/apply.png +0 -0
  96. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/apply.svg +0 -0
  97. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/apply2.svg +0 -0
  98. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/creating_a_c_op.rst +0 -0
  99. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/creating_a_numba_jax_op.rst +0 -0
  100. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/creating_an_op.rst +0 -0
  101. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/ctype.rst +0 -0
  102. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/extending_faq.rst +0 -0
  103. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/extending_pytensor_solution_1.py +0 -0
  104. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/graph_rewriting.rst +0 -0
  105. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/graphstructures.rst +0 -0
  106. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/index.rst +0 -0
  107. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/inplace.rst +0 -0
  108. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/op.rst +0 -0
  109. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/other_ops.rst +0 -0
  110. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/pics/symbolic_graph_opt.png +0 -0
  111. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
  112. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/pipeline.rst +0 -0
  113. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/scan.rst +0 -0
  114. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/tips.rst +0 -0
  115. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/type.rst +0 -0
  116. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/unittest.rst +0 -0
  117. {pytensor-2.17.3 → pytensor-2.18.0}/doc/extending/using_params.rst +0 -0
  118. {pytensor-2.17.3 → pytensor-2.18.0}/doc/faq.rst +0 -0
  119. {pytensor-2.17.3 → pytensor-2.18.0}/doc/generate_dtype_tensor_table.py +0 -0
  120. {pytensor-2.17.3 → pytensor-2.18.0}/doc/glossary.rst +0 -0
  121. {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/Elman_srnn.png +0 -0
  122. {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/PyTensor_RGB.svg +0 -0
  123. {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/blocksparse.png +0 -0
  124. {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/lstm.png +0 -0
  125. {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/lstm_memorycell.png +0 -0
  126. {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/talk2010.gif +0 -0
  127. {pytensor-2.17.3 → pytensor-2.18.0}/doc/images/talk2010.png +0 -0
  128. {pytensor-2.17.3 → pytensor-2.18.0}/doc/index.rst +0 -0
  129. {pytensor-2.17.3 → pytensor-2.18.0}/doc/install.rst +0 -0
  130. {pytensor-2.17.3 → pytensor-2.18.0}/doc/internal/how_to_release.rst +0 -0
  131. {pytensor-2.17.3 → pytensor-2.18.0}/doc/internal/index.rst +0 -0
  132. {pytensor-2.17.3 → pytensor-2.18.0}/doc/internal/metadocumentation.rst +0 -0
  133. {pytensor-2.17.3 → pytensor-2.18.0}/doc/introduction.rst +0 -0
  134. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/debugmode.rst +0 -0
  135. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/function.rst +0 -0
  136. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/index.rst +0 -0
  137. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/io.rst +0 -0
  138. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/mode.rst +0 -0
  139. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/nanguardmode.rst +0 -0
  140. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/opfromgraph.rst +0 -0
  141. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/ops.rst +0 -0
  142. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/profilemode.rst +0 -0
  143. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/compile/shared.rst +0 -0
  144. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/config.rst +0 -0
  145. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
  146. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
  147. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
  148. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
  149. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
  150. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
  151. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
  152. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp.html +0 -0
  153. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp.png +0 -0
  154. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp2.html +0 -0
  155. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp2.pdf +0 -0
  156. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/mlp2.png +0 -0
  157. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/ofg.html +0 -0
  158. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/examples/ofg2.html +0 -0
  159. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index.ipynb +0 -0
  160. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index.rst +0 -0
  161. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_10_0.png +0 -0
  162. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_11_0.png +0 -0
  163. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_24_0.png +0 -0
  164. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/d3viz/index_files/index_25_0.png +0 -0
  165. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/gradient.rst +0 -0
  166. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/features.rst +0 -0
  167. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/fgraph.rst +0 -0
  168. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/graph.rst +0 -0
  169. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/index.rst +0 -0
  170. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/op.rst +0 -0
  171. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/type.rst +0 -0
  172. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/graph/utils.rst +0 -0
  173. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/index.rst +0 -0
  174. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/misc/pkl_utils.rst +0 -0
  175. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/printing.rst +0 -0
  176. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sandbox/index.rst +0 -0
  177. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sandbox/linalg.rst +0 -0
  178. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/scalar/index.rst +0 -0
  179. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/scan.rst +0 -0
  180. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sparse/index.rst +0 -0
  181. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/sparse/sandbox.rst +0 -0
  182. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/basic.rst +0 -0
  183. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/basic_opt.rst +0 -0
  184. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/bcast.png +0 -0
  185. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/bcast.svg +0 -0
  186. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/conv.rst +0 -0
  187. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/elemwise.rst +0 -0
  188. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/extra_ops.rst +0 -0
  189. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/fft.rst +0 -0
  190. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/index.rst +0 -0
  191. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/io.rst +0 -0
  192. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/math_opt.rst +0 -0
  193. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/nlinalg.rst +0 -0
  194. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/plot_fft.png +0 -0
  195. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/random/index.rst +0 -0
  196. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/random/utils.rst +0 -0
  197. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/slinalg.rst +0 -0
  198. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/tensor/utils.rst +0 -0
  199. {pytensor-2.17.3 → pytensor-2.18.0}/doc/library/typed_list.rst +0 -0
  200. {pytensor-2.17.3 → pytensor-2.18.0}/doc/links.rst +0 -0
  201. {pytensor-2.17.3 → pytensor-2.18.0}/doc/optimizations.rst +0 -0
  202. {pytensor-2.17.3 → pytensor-2.18.0}/doc/pylintrc +0 -0
  203. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/ccodegen.rst +0 -0
  204. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/compilation.rst +0 -0
  205. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/debugging_with_stepmode.rst +0 -0
  206. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/elemwise_compiler.rst +0 -0
  207. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/function.rst +0 -0
  208. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/functional.rst +0 -0
  209. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/how_to_make_ops.rst +0 -0
  210. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/index.rst +0 -0
  211. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/index2.rst +0 -0
  212. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/interactive_debugger.rst +0 -0
  213. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/logistic_regression_example.rst +0 -0
  214. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/performance.rst +0 -0
  215. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/randomnumbers.rst +0 -0
  216. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/rethinkccodegen.rst +0 -0
  217. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/sandbox.rst +0 -0
  218. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/software.rst +0 -0
  219. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/sparse.rst +0 -0
  220. {pytensor-2.17.3 → pytensor-2.18.0}/doc/sandbox/tensoroptools.rst +0 -0
  221. {pytensor-2.17.3 → pytensor-2.18.0}/doc/scripts/docgen.py +0 -0
  222. {pytensor-2.17.3 → pytensor-2.18.0}/doc/troubleshooting.rst +0 -0
  223. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/adding.rst +0 -0
  224. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/adding_solution_1.py +0 -0
  225. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/aliasing.rst +0 -0
  226. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/apply.png +0 -0
  227. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/apply.svg +0 -0
  228. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/bcast.png +0 -0
  229. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/broadcasting.rst +0 -0
  230. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/conditions.rst +0 -0
  231. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/debug_faq.rst +0 -0
  232. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/dlogistic.png +0 -0
  233. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/examples.rst +0 -0
  234. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/faq_tutorial.rst +0 -0
  235. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/gradients.rst +0 -0
  236. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/index.rst +0 -0
  237. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/loading_and_saving.rst +0 -0
  238. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/logistic.gp +0 -0
  239. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/logistic.png +0 -0
  240. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/loop.rst +0 -0
  241. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/loop_solution_1.py +0 -0
  242. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/modes.rst +0 -0
  243. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/modes_solution_1.py +0 -0
  244. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/multi_cores.rst +0 -0
  245. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/nan_tutorial.rst +0 -0
  246. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/d3viz.png +0 -0
  247. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
  248. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
  249. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
  250. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/printing_drawing.rst +0 -0
  251. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/profiling.rst +0 -0
  252. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/profiling_example.py +0 -0
  253. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/profiling_example_out.prof +0 -0
  254. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/shape_info.rst +0 -0
  255. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/sparse.rst +0 -0
  256. {pytensor-2.17.3 → pytensor-2.18.0}/doc/tutorial/symbolic_graphs.rst +0 -0
  257. {pytensor-2.17.3 → pytensor-2.18.0}/doc/user_guide.rst +0 -0
  258. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/__init__.py +0 -0
  259. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/bin/__init__.py +0 -0
  260. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/bin/pytensor_cache.py +0 -0
  261. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/breakpoint.py +0 -0
  262. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/__init__.py +0 -0
  263. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/compiledir.py +0 -0
  264. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/compilelock.py +0 -0
  265. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/debugmode.py +0 -0
  266. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/function/__init__.py +0 -0
  267. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/io.py +0 -0
  268. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/monitormode.py +0 -0
  269. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/compile/nanguardmode.py +0 -0
  270. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/configdefaults.py +0 -0
  271. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/__init__.py +0 -0
  272. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/css/d3-context-menu.css +0 -0
  273. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/css/d3viz.css +0 -0
  274. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/d3viz.py +0 -0
  275. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/formatting.py +0 -0
  276. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/d3-context-menu.js +0 -0
  277. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/d3.v3.min.js +0 -0
  278. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/d3viz.js +0 -0
  279. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
  280. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
  281. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/destroyhandler.py +0 -0
  282. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/features.py +0 -0
  283. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/null_type.py +0 -0
  284. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/graph/rewriting/__init__.py +0 -0
  285. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/__init__.py +0 -0
  286. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/__init__.py +0 -0
  287. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
  288. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
  289. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/cutils.py +0 -0
  290. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/cvm.py +0 -0
  291. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/lazylinker_c.py +0 -0
  292. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/params_type.py +0 -0
  293. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/c/type.py +0 -0
  294. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/__init__.py +0 -0
  295. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/basic.py +0 -0
  296. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/elemwise.py +0 -0
  297. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
  298. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
  299. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/random.py +0 -0
  300. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/scan.py +0 -0
  301. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/shape.py +0 -0
  302. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/slinalg.py +0 -0
  303. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/sparse.py +0 -0
  304. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/subtensor.py +0 -0
  305. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
  306. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/jax/linker.py +0 -0
  307. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/__init__.py +0 -0
  308. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/__init__.py +0 -0
  309. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/basic.py +0 -0
  310. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/elemwise.py +0 -0
  311. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/elemwise_codegen.py +0 -0
  312. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
  313. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
  314. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/slinalg.py +0 -0
  315. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/sparse.py +0 -0
  316. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
  317. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/link/numba/linker.py +0 -0
  318. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/__init__.py +0 -0
  319. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/check_blas.py +0 -0
  320. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/check_blas_many.sh +0 -0
  321. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
  322. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/elemwise_time_test.py +0 -0
  323. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/frozendict.py +0 -0
  324. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/may_share_memory.py +0 -0
  325. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/ordered_set.py +0 -0
  326. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/pkl_utils.py +0 -0
  327. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/misc/safe_asarray.py +0 -0
  328. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/py.typed +0 -0
  329. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/raise_op.py +0 -0
  330. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/__init__.py +0 -0
  331. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
  332. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
  333. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/c_code/gamma.c +0 -0
  334. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scalar/sharedvar.py +0 -0
  335. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/__init__.py +0 -0
  336. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/basic.py +0 -0
  337. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/checkpoints.py +0 -0
  338. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/scan_perform.pyx +0 -0
  339. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/scan_perform_ext.py +0 -0
  340. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/scan/views.py +0 -0
  341. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/__init__.py +0 -0
  342. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/basic.py +0 -0
  343. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/rewriting.py +0 -0
  344. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sandbox/__init__.py +0 -0
  345. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sandbox/sp.py +0 -0
  346. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sandbox/sp2.py +0 -0
  347. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/sharedvar.py +0 -0
  348. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/sparse/utils.py +0 -0
  349. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas_c.py +0 -0
  350. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas_headers.py +0 -0
  351. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/blas_scipy.py +0 -0
  352. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
  353. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
  354. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/c_code/dimshuffle.c +0 -0
  355. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/conv/__init__.py +0 -0
  356. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/conv/abstract_conv.py +0 -0
  357. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/elemwise_cgen.py +0 -0
  358. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/exceptions.py +0 -0
  359. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/fft.py +0 -0
  360. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/fourier.py +0 -0
  361. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/inplace.py +0 -0
  362. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/io.py +0 -0
  363. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/linalg.py +0 -0
  364. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/__init__.py +0 -0
  365. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/rewriting/__init__.py +0 -0
  366. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/rewriting/basic.py +0 -0
  367. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/type.py +0 -0
  368. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/random/var.py +0 -0
  369. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/__init__.py +0 -0
  370. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/basic.py +0 -0
  371. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blas.py +0 -0
  372. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blas_c.py +0 -0
  373. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blas_scipy.py +0 -0
  374. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/blockwise.py +0 -0
  375. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/extra_ops.py +0 -0
  376. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/jax.py +0 -0
  377. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/shape.py +0 -0
  378. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/special.py +0 -0
  379. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/subtensor.py +0 -0
  380. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
  381. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/sharedvar.py +0 -0
  382. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/slinalg.py +0 -0
  383. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/sort.py +0 -0
  384. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/special.py +0 -0
  385. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/type_other.py +0 -0
  386. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/var.py +0 -0
  387. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/tensor/xlogx.py +0 -0
  388. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/__init__.py +0 -0
  389. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/basic.py +0 -0
  390. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/rewriting.py +0 -0
  391. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/typed_list/type.py +0 -0
  392. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/updates.py +0 -0
  393. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor/version.py +0 -0
  394. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/dependency_links.txt +0 -0
  395. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/entry_points.txt +0 -0
  396. {pytensor-2.17.3 → pytensor-2.18.0}/pytensor.egg-info/top_level.txt +0 -0
  397. {pytensor-2.17.3 → pytensor-2.18.0}/scripts/downstream_pr.sh +0 -0
  398. {pytensor-2.17.3 → pytensor-2.18.0}/scripts/mypy-failing.txt +0 -0
  399. {pytensor-2.17.3 → pytensor-2.18.0}/scripts/upstream_pr.sh +0 -0
  400. {pytensor-2.17.3 → pytensor-2.18.0}/setup.cfg +0 -0
  401. {pytensor-2.17.3 → pytensor-2.18.0}/setup.py +0 -0
  402. {pytensor-2.17.3 → pytensor-2.18.0}/tests/link/c/c_code/test_cenum.h +0 -0
  403. {pytensor-2.17.3 → pytensor-2.18.0}/tests/link/c/c_code/test_quadratic_function.c +0 -0
  404. {pytensor-2.17.3 → pytensor-2.18.0}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
  405. {pytensor-2.17.3 → pytensor-2.18.0}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
  406. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_breakpoint.py +0 -0
  407. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_config.py +0 -0
  408. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_gradient.py +0 -0
  409. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_ifelse.py +0 -0
  410. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_printing.py +0 -0
  411. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_raise_op.py +0 -0
  412. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_rop.py +0 -0
  413. {pytensor-2.17.3 → pytensor-2.18.0}/tests/test_updates.py +0 -0
  414. {pytensor-2.17.3 → pytensor-2.18.0}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytensor
3
- Version: 2.17.3
3
+ Version: 2.18.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:
@@ -74,7 +74,7 @@ Description-Content-Type: text/x-rst
74
74
  License-File: LICENSE.txt
75
75
  Requires-Dist: setuptools>=48.0.0
76
76
  Requires-Dist: scipy>=0.14
77
- Requires-Dist: numpy<1.26,>=1.17.0
77
+ Requires-Dist: numpy>=1.17.0
78
78
  Requires-Dist: filelock
79
79
  Requires-Dist: etuples
80
80
  Requires-Dist: logical-unification
@@ -82,9 +82,6 @@ PyTensor can produce :class:`RandomVariable`\s that draw samples from many diffe
82
82
  .. autoclass:: pytensor.tensor.random.basic.CategoricalRV
83
83
  :members: __call__
84
84
 
85
- .. autoclass:: pytensor.tensor.random.basic.ChiSquareRV
86
- :members: __call__
87
-
88
85
  .. autoclass:: pytensor.tensor.random.basic.DirichletRV
89
86
  :members: __call__
90
87
 
@@ -2,7 +2,7 @@
2
2
  requires = [
3
3
  "setuptools>=48.0.0",
4
4
  "cython",
5
- "numpy>=1.17.0,<1.26",
5
+ "numpy>=1.17.0",
6
6
  "versioneer[toml]==0.28",
7
7
  ]
8
8
  build-backend = "setuptools.build_meta"
@@ -52,7 +52,7 @@ keywords = [
52
52
  dependencies = [
53
53
  "setuptools>=48.0.0",
54
54
  "scipy>=0.14",
55
- "numpy>=1.17.0,<1.26",
55
+ "numpy>=1.17.0",
56
56
  "filelock",
57
57
  "etuples",
58
58
  "logical-unification",
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2023-10-17T14:13:56+0200",
11
+ "date": "2023-11-20T14:04:50+0100",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "7bb18f3a3590d47132245b7868b3a4a6587a4667",
15
- "version": "2.17.3"
14
+ "full-revisionid": "eb552eef7a8381e47a38ce0694244700693cb978",
15
+ "version": "2.18.0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -1,8 +1,9 @@
1
1
  """Define new Ops from existing Ops"""
2
2
  from collections import OrderedDict
3
+ from collections.abc import Sequence
3
4
  from copy import copy
4
5
  from functools import partial
5
- from typing import Dict, List, Optional, Sequence, Tuple, cast
6
+ from typing import Optional, cast
6
7
 
7
8
  import pytensor.tensor as at
8
9
  from pytensor import function
@@ -83,11 +84,11 @@ def infer_shape(outs, inputs, input_shapes):
83
84
 
84
85
  def construct_nominal_fgraph(
85
86
  inputs: Sequence[Variable], outputs: Sequence[Variable]
86
- ) -> Tuple[
87
+ ) -> tuple[
87
88
  FunctionGraph,
88
89
  Sequence[Variable],
89
- Dict[Variable, Variable],
90
- Dict[Variable, Variable],
90
+ dict[Variable, Variable],
91
+ dict[Variable, Variable],
91
92
  ]:
92
93
  """Construct an inner-`FunctionGraph` with ordered nominal inputs."""
93
94
  dummy_inputs = []
@@ -306,13 +307,13 @@ class OpFromGraph(Op, HasInnerGraph):
306
307
 
307
308
  def __init__(
308
309
  self,
309
- inputs: List[Variable],
310
- outputs: List[Variable],
310
+ inputs: list[Variable],
311
+ outputs: list[Variable],
311
312
  inline: bool = False,
312
313
  lop_overrides: str = "default",
313
314
  grad_overrides: str = "default",
314
315
  rop_overrides: str = "default",
315
- connection_pattern: Optional[List[List[bool]]] = None,
316
+ connection_pattern: Optional[list[list[bool]]] = None,
316
317
  name: Optional[str] = None,
317
318
  **kwargs,
318
319
  ):
@@ -3,8 +3,9 @@ Provide a simple user friendly API.
3
3
 
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from copy import copy
7
- from typing import Optional, Sequence, Union, overload
8
+ from typing import Optional, Union, overload
8
9
 
9
10
  from pytensor.compile.function.types import Function, UnusedInputError, orig_function
10
11
  from pytensor.compile.io import In, Out
@@ -6,7 +6,7 @@ import logging
6
6
  import time
7
7
  import warnings
8
8
  from itertools import chain
9
- from typing import TYPE_CHECKING, List, Optional, Tuple, Type
9
+ from typing import TYPE_CHECKING, Optional
10
10
 
11
11
  import numpy as np
12
12
 
@@ -170,13 +170,13 @@ class Supervisor(Feature):
170
170
 
171
171
 
172
172
  def std_fgraph(
173
- input_specs: List[SymbolicInput],
174
- output_specs: List[SymbolicOutput],
173
+ input_specs: list[SymbolicInput],
174
+ output_specs: list[SymbolicOutput],
175
175
  accept_inplace: bool = False,
176
176
  fgraph: Optional[FunctionGraph] = None,
177
- features: List[Type[Feature]] = [PreserveVariableAttributes],
177
+ features: list[type[Feature]] = [PreserveVariableAttributes],
178
178
  force_clone=False,
179
- ) -> Tuple[FunctionGraph, List[SymbolicOutput]]:
179
+ ) -> tuple[FunctionGraph, list[SymbolicOutput]]:
180
180
  """Make or set up `FunctionGraph` corresponding to the input specs and the output specs.
181
181
 
182
182
  Any `SymbolicInput` in the `input_specs`, if its `update` field is not
@@ -5,7 +5,7 @@ WRITEME
5
5
 
6
6
  import logging
7
7
  import warnings
8
- from typing import Literal, Optional, Tuple, Union
8
+ from typing import Literal, Optional, Union
9
9
 
10
10
  from pytensor.compile.function.types import Supervisor
11
11
  from pytensor.configdefaults import config
@@ -260,7 +260,7 @@ optdb.register(
260
260
  # final pass just to make sure
261
261
  optdb.register("merge3", MergeOptimizer(), "fast_run", "merge", position=100)
262
262
 
263
- _tags: Union[Tuple[str, str], Tuple]
263
+ _tags: Union[tuple[str, str], tuple]
264
264
 
265
265
  if config.check_stack_trace in ("raise", "warn", "log"):
266
266
  _tags = ("fast_run", "fast_compile")
@@ -548,7 +548,7 @@ def register_mode(name, mode):
548
548
  predefined_modes[name] = mode
549
549
 
550
550
 
551
- def get_target_language(mode=None) -> Tuple[Literal["py", "c", "numba", "jax"], ...]:
551
+ def get_target_language(mode=None) -> tuple[Literal["py", "c", "numba", "jax"], ...]:
552
552
  """Get the compilation target language."""
553
553
 
554
554
  if mode is None:
@@ -8,7 +8,6 @@ help make new Ops more rapidly.
8
8
  import copy
9
9
  import pickle
10
10
  import warnings
11
- from typing import Dict, Tuple
12
11
 
13
12
  from pytensor.graph.basic import Apply
14
13
  from pytensor.graph.op import Op
@@ -44,8 +43,8 @@ class ViewOp(COp):
44
43
  # Mapping from Type to C code (and version) to use.
45
44
  # In the C code, the name of the input variable is %(iname)s,
46
45
  # the output variable is %(oname)s.
47
- c_code_and_version: Dict = {}
48
- __props__: Tuple = ()
46
+ c_code_and_version: dict = {}
47
+ __props__: tuple = ()
49
48
  _f16_ok: bool = True
50
49
 
51
50
  def make_node(self, x):
@@ -150,10 +149,10 @@ class DeepCopyOp(COp):
150
149
  # Mapping from Type to C code (and version) to use.
151
150
  # In the C code, the name of the input variable is %(iname)s,
152
151
  # the output variable is %(oname)s.
153
- c_code_and_version: Dict = {}
152
+ c_code_and_version: dict = {}
154
153
 
155
154
  check_input: bool = False
156
- __props__: Tuple = ()
155
+ __props__: tuple = ()
157
156
  _f16_ok: bool = True
158
157
 
159
158
  def __init__(self):
@@ -16,7 +16,7 @@ import sys
16
16
  import time
17
17
  from collections import defaultdict
18
18
  from contextlib import contextmanager
19
- from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
19
+ from typing import TYPE_CHECKING, Any, Optional, Union
20
20
 
21
21
  import numpy as np
22
22
 
@@ -48,7 +48,7 @@ total_fct_exec_time: float = 0.0
48
48
  total_graph_rewrite_time: float = 0.0
49
49
  total_time_linker: float = 0.0
50
50
 
51
- _atexit_print_list: List["ProfileStats"] = []
51
+ _atexit_print_list: list["ProfileStats"] = []
52
52
  _atexit_registered: bool = False
53
53
 
54
54
 
@@ -234,11 +234,11 @@ class ProfileStats:
234
234
  # Total time spent in Function.vm.__call__
235
235
  #
236
236
 
237
- apply_time: Optional[Dict[Union["FunctionGraph", Variable], float]] = None
237
+ apply_time: Optional[dict[Union["FunctionGraph", Variable], float]] = None
238
238
 
239
- apply_callcount: Optional[Dict[Union["FunctionGraph", Variable], int]] = None
239
+ apply_callcount: Optional[dict[Union["FunctionGraph", Variable], int]] = None
240
240
 
241
- apply_cimpl: Optional[Dict[Apply, bool]] = None
241
+ apply_cimpl: Optional[dict[Apply, bool]] = None
242
242
  # dict from node -> bool (1 if c, 0 if py)
243
243
  #
244
244
 
@@ -246,15 +246,15 @@ class ProfileStats:
246
246
  # pretty string to print in summary, to identify this output
247
247
  #
248
248
 
249
- variable_shape: Dict[Variable, Any] = {}
249
+ variable_shape: dict[Variable, Any] = {}
250
250
  # Variable -> shapes
251
251
  #
252
252
 
253
- variable_strides: Dict[Variable, Any] = {}
253
+ variable_strides: dict[Variable, Any] = {}
254
254
  # Variable -> strides
255
255
  #
256
256
 
257
- variable_offset: Dict[Variable, Any] = {}
257
+ variable_offset: dict[Variable, Any] = {}
258
258
  # Variable -> offset
259
259
  #
260
260
 
@@ -274,7 +274,7 @@ class ProfileStats:
274
274
 
275
275
  linker_node_make_thunks: float = 0.0
276
276
 
277
- linker_make_thunk_time: Dict = {}
277
+ linker_make_thunk_time: dict = {}
278
278
 
279
279
  line_width = config.profiling__output_line_width
280
280
 
@@ -3,7 +3,7 @@
3
3
  import copy
4
4
  from contextlib import contextmanager
5
5
  from functools import singledispatch
6
- from typing import TYPE_CHECKING, List, Optional
6
+ from typing import TYPE_CHECKING, Optional
7
7
 
8
8
  from pytensor.graph.basic import Variable
9
9
  from pytensor.graph.utils import add_tag_trace
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
15
15
  from pytensor.graph.type import Type
16
16
 
17
17
 
18
- __SHARED_CONTEXT__: Optional[List[Variable]] = None
18
+ __SHARED_CONTEXT__: Optional[list[Variable]] = None
19
19
 
20
20
 
21
21
  @contextmanager
@@ -3,6 +3,7 @@ import os
3
3
  import shlex
4
4
  import sys
5
5
  import warnings
6
+ from collections.abc import Sequence
6
7
  from configparser import (
7
8
  ConfigParser,
8
9
  InterpolationError,
@@ -12,7 +13,7 @@ from configparser import (
12
13
  )
13
14
  from functools import wraps
14
15
  from io import StringIO
15
- from typing import Callable, Dict, Optional, Sequence, Union
16
+ from typing import Callable, Optional, Union
16
17
 
17
18
  from pytensor.utils import hash_from_code
18
19
 
@@ -72,7 +73,7 @@ class PyTensorConfigParser:
72
73
  self._flags_dict = flags_dict
73
74
  self._pytensor_cfg = pytensor_cfg
74
75
  self._pytensor_raw_cfg = pytensor_raw_cfg
75
- self._config_var_dict: Dict = {}
76
+ self._config_var_dict: dict = {}
76
77
  super().__init__()
77
78
 
78
79
  def __str__(self, print_doc=True):
@@ -2,21 +2,9 @@
2
2
 
3
3
  import time
4
4
  import warnings
5
+ from collections.abc import Mapping, MutableSequence, Sequence
5
6
  from functools import partial, reduce
6
- from typing import (
7
- TYPE_CHECKING,
8
- Callable,
9
- Dict,
10
- List,
11
- Literal,
12
- Mapping,
13
- MutableSequence,
14
- Optional,
15
- Sequence,
16
- Tuple,
17
- TypeVar,
18
- Union,
19
- )
7
+ from typing import TYPE_CHECKING, Callable, Literal, Optional, TypeVar, Union
20
8
 
21
9
  import numpy as np
22
10
 
@@ -44,7 +32,7 @@ grad_time: float = 0.0
44
32
  # TODO: Add `overload` variants
45
33
  def as_list_or_tuple(
46
34
  use_list: bool, use_tuple: bool, outputs: Union[V, Sequence[V]]
47
- ) -> Union[V, List[V], Tuple[V, ...]]:
35
+ ) -> Union[V, list[V], tuple[V, ...]]:
48
36
  """Return either a single object or a list/tuple of objects.
49
37
 
50
38
  If `use_list` is True, `outputs` is returned as a list (if `outputs`
@@ -113,7 +101,7 @@ def grad_undefined(op, x_pos, x, comment=""):
113
101
  return (
114
102
  NullType(
115
103
  "This variable is Null because the grad method for "
116
- f"input {x_pos} ({x}) of the {op} op is not implemented. {comment}"
104
+ f"input {x_pos} ({x}) of the {op} op is undefined. {comment}"
117
105
  )
118
106
  )()
119
107
 
@@ -206,17 +194,17 @@ def Rop(
206
194
  """
207
195
 
208
196
  if not isinstance(wrt, (list, tuple)):
209
- _wrt: List[Variable] = [pytensor.tensor.as_tensor_variable(wrt)]
197
+ _wrt: list[Variable] = [pytensor.tensor.as_tensor_variable(wrt)]
210
198
  else:
211
199
  _wrt = [pytensor.tensor.as_tensor_variable(x) for x in wrt]
212
200
 
213
201
  if not isinstance(eval_points, (list, tuple)):
214
- _eval_points: List[Variable] = [pytensor.tensor.as_tensor_variable(eval_points)]
202
+ _eval_points: list[Variable] = [pytensor.tensor.as_tensor_variable(eval_points)]
215
203
  else:
216
204
  _eval_points = [pytensor.tensor.as_tensor_variable(x) for x in eval_points]
217
205
 
218
206
  if not isinstance(f, (list, tuple)):
219
- _f: List[Variable] = [pytensor.tensor.as_tensor_variable(f)]
207
+ _f: list[Variable] = [pytensor.tensor.as_tensor_variable(f)]
220
208
  else:
221
209
  _f = [pytensor.tensor.as_tensor_variable(x) for x in f]
222
210
 
@@ -237,7 +225,7 @@ def Rop(
237
225
  # Tensor, Sparse have the ndim attribute
238
226
  pass
239
227
 
240
- seen_nodes: Dict[Apply, Sequence[Variable]] = {}
228
+ seen_nodes: dict[Apply, Sequence[Variable]] = {}
241
229
 
242
230
  def _traverse(node):
243
231
  """TODO: writeme"""
@@ -310,7 +298,7 @@ def Rop(
310
298
  for out in _f:
311
299
  _traverse(out.owner)
312
300
 
313
- rval: List[Optional[Variable]] = []
301
+ rval: list[Optional[Variable]] = []
314
302
  for out in _f:
315
303
  if out in _wrt:
316
304
  rval.append(_eval_points[_wrt.index(out)])
@@ -394,19 +382,19 @@ def Lop(
394
382
  If `f` is a list/tuple, then return a list/tuple with the results.
395
383
  """
396
384
  if not isinstance(eval_points, (list, tuple)):
397
- _eval_points: List[Variable] = [pytensor.tensor.as_tensor_variable(eval_points)]
385
+ _eval_points: list[Variable] = [pytensor.tensor.as_tensor_variable(eval_points)]
398
386
  else:
399
387
  _eval_points = [pytensor.tensor.as_tensor_variable(x) for x in eval_points]
400
388
 
401
389
  if not isinstance(f, (list, tuple)):
402
- _f: List[Variable] = [pytensor.tensor.as_tensor_variable(f)]
390
+ _f: list[Variable] = [pytensor.tensor.as_tensor_variable(f)]
403
391
  else:
404
392
  _f = [pytensor.tensor.as_tensor_variable(x) for x in f]
405
393
 
406
394
  grads = list(_eval_points)
407
395
 
408
396
  if not isinstance(wrt, (list, tuple)):
409
- _wrt: List[Variable] = [pytensor.tensor.as_tensor_variable(wrt)]
397
+ _wrt: list[Variable] = [pytensor.tensor.as_tensor_variable(wrt)]
410
398
  else:
411
399
  _wrt = [pytensor.tensor.as_tensor_variable(x) for x in wrt]
412
400
 
@@ -504,7 +492,7 @@ def grad(
504
492
  raise TypeError("Cost must be a scalar.")
505
493
 
506
494
  if not isinstance(wrt, Sequence):
507
- _wrt: List[Variable] = [wrt]
495
+ _wrt: list[Variable] = [wrt]
508
496
  else:
509
497
  _wrt = list(wrt)
510
498
 
@@ -1677,7 +1665,7 @@ def mode_not_slow(mode):
1677
1665
 
1678
1666
  def verify_grad(
1679
1667
  fun: Callable,
1680
- pt: List[np.ndarray],
1668
+ pt: list[np.ndarray],
1681
1669
  n_tests: int = 2,
1682
1670
  rng: Optional[Union[np.random.Generator, np.random.RandomState]] = None,
1683
1671
  eps: Optional[float] = None,
@@ -9,7 +9,7 @@ from pytensor.graph.basic import (
9
9
  clone,
10
10
  ancestors,
11
11
  )
12
- from pytensor.graph.replace import clone_replace, graph_replace, vectorize
12
+ from pytensor.graph.replace import clone_replace, graph_replace, vectorize_graph
13
13
  from pytensor.graph.op import Op
14
14
  from pytensor.graph.type import Type
15
15
  from pytensor.graph.fg import FunctionGraph