pytafast 0.1.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 (540) hide show
  1. pytafast-0.1.0/.gitignore +12 -0
  2. pytafast-0.1.0/.gitmodules +6 -0
  3. pytafast-0.1.0/.python-version +1 -0
  4. pytafast-0.1.0/CMakeLists.txt +22 -0
  5. pytafast-0.1.0/GEMINI.md +70 -0
  6. pytafast-0.1.0/PKG-INFO +10 -0
  7. pytafast-0.1.0/README.md +0 -0
  8. pytafast-0.1.0/pyproject.toml +58 -0
  9. pytafast-0.1.0/src/pytafast/__init__.py +197 -0
  10. pytafast-0.1.0/src/pytafast/aio.py +35 -0
  11. pytafast-0.1.0/src/pytafast_ext.cpp +480 -0
  12. pytafast-0.1.0/tests/test_async_leak.py +53 -0
  13. pytafast-0.1.0/tests/test_benchmark.py +24 -0
  14. pytafast-0.1.0/tests/test_ta_lib.py +169 -0
  15. pytafast-0.1.0/third_party/nanobind/.github/ISSUE_TEMPLATE/all-other.yml +23 -0
  16. pytafast-0.1.0/third_party/nanobind/.github/ISSUE_TEMPLATE/bug-report.yml +33 -0
  17. pytafast-0.1.0/third_party/nanobind/.github/workflows/ci.yml +286 -0
  18. pytafast-0.1.0/third_party/nanobind/.github/workflows/nvcc-win.yml +45 -0
  19. pytafast-0.1.0/third_party/nanobind/.gitignore +43 -0
  20. pytafast-0.1.0/third_party/nanobind/.gitmodules +3 -0
  21. pytafast-0.1.0/third_party/nanobind/.readthedocs.yaml +18 -0
  22. pytafast-0.1.0/third_party/nanobind/CMakeLists.txt +160 -0
  23. pytafast-0.1.0/third_party/nanobind/LICENSE +26 -0
  24. pytafast-0.1.0/third_party/nanobind/README.md +117 -0
  25. pytafast-0.1.0/third_party/nanobind/cmake/collect-symbols-pypy.py +29 -0
  26. pytafast-0.1.0/third_party/nanobind/cmake/collect-symbols.py +42 -0
  27. pytafast-0.1.0/third_party/nanobind/cmake/darwin-ld-cpython.sym +991 -0
  28. pytafast-0.1.0/third_party/nanobind/cmake/darwin-ld-pypy.sym +1135 -0
  29. pytafast-0.1.0/third_party/nanobind/cmake/darwin-python-path.py +15 -0
  30. pytafast-0.1.0/third_party/nanobind/cmake/nanobind-config.cmake +739 -0
  31. pytafast-0.1.0/third_party/nanobind/ext/robin_map/.clang-format +1 -0
  32. pytafast-0.1.0/third_party/nanobind/ext/robin_map/.codecov.yml +5 -0
  33. pytafast-0.1.0/third_party/nanobind/ext/robin_map/.git +1 -0
  34. pytafast-0.1.0/third_party/nanobind/ext/robin_map/.github/workflows/ci.yml +136 -0
  35. pytafast-0.1.0/third_party/nanobind/ext/robin_map/CMakeLists.txt +87 -0
  36. pytafast-0.1.0/third_party/nanobind/ext/robin_map/LICENSE +21 -0
  37. pytafast-0.1.0/third_party/nanobind/ext/robin_map/README.md +521 -0
  38. pytafast-0.1.0/third_party/nanobind/ext/robin_map/cmake/tsl-robin-mapConfig.cmake.in +9 -0
  39. pytafast-0.1.0/third_party/nanobind/ext/robin_map/doxygen.conf +2483 -0
  40. pytafast-0.1.0/third_party/nanobind/ext/robin_map/include/tsl/robin_growth_policy.h +415 -0
  41. pytafast-0.1.0/third_party/nanobind/ext/robin_map/include/tsl/robin_hash.h +1589 -0
  42. pytafast-0.1.0/third_party/nanobind/ext/robin_map/include/tsl/robin_map.h +815 -0
  43. pytafast-0.1.0/third_party/nanobind/ext/robin_map/include/tsl/robin_set.h +668 -0
  44. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tests/CMakeLists.txt +26 -0
  45. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tests/custom_allocator_tests.cpp +138 -0
  46. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tests/main.cpp +26 -0
  47. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tests/policy_tests.cpp +97 -0
  48. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tests/robin_map_tests.cpp +1462 -0
  49. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tests/robin_set_tests.cpp +174 -0
  50. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tests/utils.h +443 -0
  51. pytafast-0.1.0/third_party/nanobind/ext/robin_map/tsl-robin-map.natvis +78 -0
  52. pytafast-0.1.0/third_party/nanobind/include/nanobind/eigen/dense.h +481 -0
  53. pytafast-0.1.0/third_party/nanobind/include/nanobind/eigen/sparse.h +290 -0
  54. pytafast-0.1.0/third_party/nanobind/include/nanobind/eval.h +61 -0
  55. pytafast-0.1.0/third_party/nanobind/include/nanobind/intrusive/counter.h +261 -0
  56. pytafast-0.1.0/third_party/nanobind/include/nanobind/intrusive/counter.inl +148 -0
  57. pytafast-0.1.0/third_party/nanobind/include/nanobind/intrusive/ref.h +153 -0
  58. pytafast-0.1.0/third_party/nanobind/include/nanobind/make_iterator.h +160 -0
  59. pytafast-0.1.0/third_party/nanobind/include/nanobind/nanobind.h +66 -0
  60. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_accessor.h +258 -0
  61. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_attr.h +445 -0
  62. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_call.h +152 -0
  63. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_cast.h +750 -0
  64. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_class.h +864 -0
  65. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_defs.h +207 -0
  66. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_descr.h +155 -0
  67. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_enums.h +26 -0
  68. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_error.h +152 -0
  69. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_func.h +436 -0
  70. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_lib.h +584 -0
  71. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_misc.h +125 -0
  72. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_python.h +61 -0
  73. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_traits.h +226 -0
  74. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_tuple.h +80 -0
  75. pytafast-0.1.0/third_party/nanobind/include/nanobind/nb_types.h +1012 -0
  76. pytafast-0.1.0/third_party/nanobind/include/nanobind/ndarray.h +597 -0
  77. pytafast-0.1.0/third_party/nanobind/include/nanobind/operators.h +149 -0
  78. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/array.h +22 -0
  79. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/bind_map.h +181 -0
  80. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/bind_vector.h +225 -0
  81. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/chrono.h +229 -0
  82. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/complex.h +54 -0
  83. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/detail/chrono.h +299 -0
  84. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/detail/nb_array.h +67 -0
  85. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/detail/nb_dict.h +95 -0
  86. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/detail/nb_list.h +83 -0
  87. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/detail/nb_optional.h +49 -0
  88. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/detail/nb_set.h +81 -0
  89. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/detail/traits.h +92 -0
  90. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/filesystem.h +89 -0
  91. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/function.h +95 -0
  92. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/list.h +22 -0
  93. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/map.h +23 -0
  94. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/optional.h +30 -0
  95. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/pair.h +92 -0
  96. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/set.h +24 -0
  97. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/shared_ptr.h +137 -0
  98. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/string.h +39 -0
  99. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/string_view.h +39 -0
  100. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/tuple.h +109 -0
  101. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/unique_ptr.h +178 -0
  102. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/unordered_map.h +23 -0
  103. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/unordered_set.h +24 -0
  104. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/variant.h +113 -0
  105. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/vector.h +22 -0
  106. pytafast-0.1.0/third_party/nanobind/include/nanobind/stl/wstring.h +39 -0
  107. pytafast-0.1.0/third_party/nanobind/include/nanobind/trampoline.h +76 -0
  108. pytafast-0.1.0/third_party/nanobind/include/nanobind/typing.h +36 -0
  109. pytafast-0.1.0/third_party/nanobind/pyproject.toml +58 -0
  110. pytafast-0.1.0/third_party/nanobind/src/__init__.py +26 -0
  111. pytafast-0.1.0/third_party/nanobind/src/__main__.py +36 -0
  112. pytafast-0.1.0/third_party/nanobind/src/buffer.h +166 -0
  113. pytafast-0.1.0/third_party/nanobind/src/common.cpp +1295 -0
  114. pytafast-0.1.0/third_party/nanobind/src/error.cpp +314 -0
  115. pytafast-0.1.0/third_party/nanobind/src/hash.h +33 -0
  116. pytafast-0.1.0/third_party/nanobind/src/implicit.cpp +75 -0
  117. pytafast-0.1.0/third_party/nanobind/src/nb_abi.h +102 -0
  118. pytafast-0.1.0/third_party/nanobind/src/nb_combined.cpp +87 -0
  119. pytafast-0.1.0/third_party/nanobind/src/nb_enum.cpp +304 -0
  120. pytafast-0.1.0/third_party/nanobind/src/nb_ft.cpp +56 -0
  121. pytafast-0.1.0/third_party/nanobind/src/nb_ft.h +39 -0
  122. pytafast-0.1.0/third_party/nanobind/src/nb_func.cpp +1586 -0
  123. pytafast-0.1.0/third_party/nanobind/src/nb_internals.cpp +590 -0
  124. pytafast-0.1.0/third_party/nanobind/src/nb_internals.h +577 -0
  125. pytafast-0.1.0/third_party/nanobind/src/nb_ndarray.cpp +1051 -0
  126. pytafast-0.1.0/third_party/nanobind/src/nb_static_property.cpp +76 -0
  127. pytafast-0.1.0/third_party/nanobind/src/nb_type.cpp +2271 -0
  128. pytafast-0.1.0/third_party/nanobind/src/stubgen.py +1553 -0
  129. pytafast-0.1.0/third_party/nanobind/src/trampoline.cpp +188 -0
  130. pytafast-0.1.0/third_party/nanobind/src/version.py +131 -0
  131. pytafast-0.1.0/third_party/nanobind/tests/CMakeLists.txt +231 -0
  132. pytafast-0.1.0/third_party/nanobind/tests/common.py +42 -0
  133. pytafast-0.1.0/third_party/nanobind/tests/conftest.py +6 -0
  134. pytafast-0.1.0/third_party/nanobind/tests/inter_module.cpp +13 -0
  135. pytafast-0.1.0/third_party/nanobind/tests/inter_module.h +15 -0
  136. pytafast-0.1.0/third_party/nanobind/tests/object_py.h +28 -0
  137. pytafast-0.1.0/third_party/nanobind/tests/pattern_file.nb +25 -0
  138. pytafast-0.1.0/third_party/nanobind/tests/py_recursive_stub_test/__init__.py +3 -0
  139. pytafast-0.1.0/third_party/nanobind/tests/py_recursive_stub_test/__init__.pyi.ref +4 -0
  140. pytafast-0.1.0/third_party/nanobind/tests/py_recursive_stub_test/bar.py +1 -0
  141. pytafast-0.1.0/third_party/nanobind/tests/py_recursive_stub_test/bar.pyi.ref +3 -0
  142. pytafast-0.1.0/third_party/nanobind/tests/py_stub_test.py +69 -0
  143. pytafast-0.1.0/third_party/nanobind/tests/py_stub_test.pyi.ref +50 -0
  144. pytafast-0.1.0/third_party/nanobind/tests/test_accessor.cpp +39 -0
  145. pytafast-0.1.0/third_party/nanobind/tests/test_accessor.py +41 -0
  146. pytafast-0.1.0/third_party/nanobind/tests/test_callbacks.cpp +138 -0
  147. pytafast-0.1.0/third_party/nanobind/tests/test_callbacks.py +58 -0
  148. pytafast-0.1.0/third_party/nanobind/tests/test_chrono.cpp +93 -0
  149. pytafast-0.1.0/third_party/nanobind/tests/test_chrono.py +340 -0
  150. pytafast-0.1.0/third_party/nanobind/tests/test_classes.cpp +815 -0
  151. pytafast-0.1.0/third_party/nanobind/tests/test_classes.h +21 -0
  152. pytafast-0.1.0/third_party/nanobind/tests/test_classes.py +994 -0
  153. pytafast-0.1.0/third_party/nanobind/tests/test_classes_ext.pyi.ref +399 -0
  154. pytafast-0.1.0/third_party/nanobind/tests/test_classes_extra.cpp +22 -0
  155. pytafast-0.1.0/third_party/nanobind/tests/test_eigen.cpp +281 -0
  156. pytafast-0.1.0/third_party/nanobind/tests/test_eigen.py +485 -0
  157. pytafast-0.1.0/third_party/nanobind/tests/test_enum.cpp +99 -0
  158. pytafast-0.1.0/third_party/nanobind/tests/test_enum.py +204 -0
  159. pytafast-0.1.0/third_party/nanobind/tests/test_enum_ext.pyi.ref +131 -0
  160. pytafast-0.1.0/third_party/nanobind/tests/test_eval.cpp +87 -0
  161. pytafast-0.1.0/third_party/nanobind/tests/test_eval.py +44 -0
  162. pytafast-0.1.0/third_party/nanobind/tests/test_exception.cpp +62 -0
  163. pytafast-0.1.0/third_party/nanobind/tests/test_exception.py +104 -0
  164. pytafast-0.1.0/third_party/nanobind/tests/test_functions.cpp +526 -0
  165. pytafast-0.1.0/third_party/nanobind/tests/test_functions.py +792 -0
  166. pytafast-0.1.0/third_party/nanobind/tests/test_functions_ext.pyi.ref +269 -0
  167. pytafast-0.1.0/third_party/nanobind/tests/test_holders.cpp +261 -0
  168. pytafast-0.1.0/third_party/nanobind/tests/test_holders.py +449 -0
  169. pytafast-0.1.0/third_party/nanobind/tests/test_inter_module.py +89 -0
  170. pytafast-0.1.0/third_party/nanobind/tests/test_inter_module_1.cpp +8 -0
  171. pytafast-0.1.0/third_party/nanobind/tests/test_inter_module_2.cpp +10 -0
  172. pytafast-0.1.0/third_party/nanobind/tests/test_intrusive.cpp +66 -0
  173. pytafast-0.1.0/third_party/nanobind/tests/test_intrusive.py +58 -0
  174. pytafast-0.1.0/third_party/nanobind/tests/test_intrusive_impl.cpp +1 -0
  175. pytafast-0.1.0/third_party/nanobind/tests/test_issue.cpp +68 -0
  176. pytafast-0.1.0/third_party/nanobind/tests/test_issue.py +37 -0
  177. pytafast-0.1.0/third_party/nanobind/tests/test_jax.cpp +25 -0
  178. pytafast-0.1.0/third_party/nanobind/tests/test_jax.py +97 -0
  179. pytafast-0.1.0/third_party/nanobind/tests/test_jax_ext.pyi.ref +4 -0
  180. pytafast-0.1.0/third_party/nanobind/tests/test_make_iterator.cpp +102 -0
  181. pytafast-0.1.0/third_party/nanobind/tests/test_make_iterator.py +48 -0
  182. pytafast-0.1.0/third_party/nanobind/tests/test_make_iterator_ext.pyi.ref +33 -0
  183. pytafast-0.1.0/third_party/nanobind/tests/test_ndarray.cpp +557 -0
  184. pytafast-0.1.0/third_party/nanobind/tests/test_ndarray.py +1036 -0
  185. pytafast-0.1.0/third_party/nanobind/tests/test_ndarray_ext.pyi.ref +215 -0
  186. pytafast-0.1.0/third_party/nanobind/tests/test_specialization.py +103 -0
  187. pytafast-0.1.0/third_party/nanobind/tests/test_stl.cpp +537 -0
  188. pytafast-0.1.0/third_party/nanobind/tests/test_stl.py +881 -0
  189. pytafast-0.1.0/third_party/nanobind/tests/test_stl_bind_map.cpp +95 -0
  190. pytafast-0.1.0/third_party/nanobind/tests/test_stl_bind_map.py +219 -0
  191. pytafast-0.1.0/third_party/nanobind/tests/test_stl_bind_vector.cpp +56 -0
  192. pytafast-0.1.0/third_party/nanobind/tests/test_stl_bind_vector.py +188 -0
  193. pytafast-0.1.0/third_party/nanobind/tests/test_stl_ext.pyi.ref +276 -0
  194. pytafast-0.1.0/third_party/nanobind/tests/test_stubs.py +74 -0
  195. pytafast-0.1.0/third_party/nanobind/tests/test_tensorflow.cpp +27 -0
  196. pytafast-0.1.0/third_party/nanobind/tests/test_tensorflow.py +97 -0
  197. pytafast-0.1.0/third_party/nanobind/tests/test_tensorflow_ext.pyi.ref +4 -0
  198. pytafast-0.1.0/third_party/nanobind/tests/test_thread.cpp +93 -0
  199. pytafast-0.1.0/third_party/nanobind/tests/test_thread.py +118 -0
  200. pytafast-0.1.0/third_party/nanobind/tests/test_typing.cpp +124 -0
  201. pytafast-0.1.0/third_party/nanobind/tests/test_typing.py +12 -0
  202. pytafast-0.1.0/third_party/nanobind/tests/test_typing_ext.pyi.ref +80 -0
  203. pytafast-0.1.0/third_party/ta-lib/.editorconfig +14 -0
  204. pytafast-0.1.0/third_party/ta-lib/.github/actions/diffs/action.yml +34 -0
  205. pytafast-0.1.0/third_party/ta-lib/.github/workflows/dev-nightly-tests.yml +114 -0
  206. pytafast-0.1.0/third_party/ta-lib/.github/workflows/docs.yml +35 -0
  207. pytafast-0.1.0/third_party/ta-lib/.github/workflows/main-nightly-tests.yml +92 -0
  208. pytafast-0.1.0/third_party/ta-lib/.github/workflows/release-step-1.yml +214 -0
  209. pytafast-0.1.0/third_party/ta-lib/.github/workflows/release-step-2.yml +87 -0
  210. pytafast-0.1.0/third_party/ta-lib/.gitignore +92 -0
  211. pytafast-0.1.0/third_party/ta-lib/.vscode/settings.json +9 -0
  212. pytafast-0.1.0/third_party/ta-lib/CHANGELOG.md +65 -0
  213. pytafast-0.1.0/third_party/ta-lib/CLAUDE.md +52 -0
  214. pytafast-0.1.0/third_party/ta-lib/CMakeLists.txt +711 -0
  215. pytafast-0.1.0/third_party/ta-lib/CNAME +1 -0
  216. pytafast-0.1.0/third_party/ta-lib/LICENSE +26 -0
  217. pytafast-0.1.0/third_party/ta-lib/Makefile.am +22 -0
  218. pytafast-0.1.0/third_party/ta-lib/README-DEVS.md +86 -0
  219. pytafast-0.1.0/third_party/ta-lib/README.md +11 -0
  220. pytafast-0.1.0/third_party/ta-lib/RUST_CONVERSION_PLAN.md +93 -0
  221. pytafast-0.1.0/third_party/ta-lib/VERSION +1 -0
  222. pytafast-0.1.0/third_party/ta-lib/autogen.sh +16 -0
  223. pytafast-0.1.0/third_party/ta-lib/bin/.cvsignore +7 -0
  224. pytafast-0.1.0/third_party/ta-lib/bin/HOLDER +2 -0
  225. pytafast-0.1.0/third_party/ta-lib/cmake/toolchain-linux-arm64.cmake +4 -0
  226. pytafast-0.1.0/third_party/ta-lib/cmake/toolchain-linux-i386.cmake +4 -0
  227. pytafast-0.1.0/third_party/ta-lib/cmake/toolchain-linux-x86_64.cmake +4 -0
  228. pytafast-0.1.0/third_party/ta-lib/configure.ac +51 -0
  229. pytafast-0.1.0/third_party/ta-lib/include/Makefile.am +11 -0
  230. pytafast-0.1.0/third_party/ta-lib/include/ta_abstract.h +553 -0
  231. pytafast-0.1.0/third_party/ta-lib/include/ta_common.h +160 -0
  232. pytafast-0.1.0/third_party/ta-lib/include/ta_config.h +36 -0
  233. pytafast-0.1.0/third_party/ta-lib/include/ta_config.h.cmake +36 -0
  234. pytafast-0.1.0/third_party/ta-lib/include/ta_defs.h +408 -0
  235. pytafast-0.1.0/third_party/ta-lib/include/ta_func.h +5346 -0
  236. pytafast-0.1.0/third_party/ta-lib/include/ta_libc.h +51 -0
  237. pytafast-0.1.0/third_party/ta-lib/install +74 -0
  238. pytafast-0.1.0/third_party/ta-lib/lib/HOLDER +2 -0
  239. pytafast-0.1.0/third_party/ta-lib/m4/HOLDER +2 -0
  240. pytafast-0.1.0/third_party/ta-lib/mkdocs.yml +83 -0
  241. pytafast-0.1.0/third_party/ta-lib/rust/Cargo.lock +606 -0
  242. pytafast-0.1.0/third_party/ta-lib/rust/Cargo.toml +35 -0
  243. pytafast-0.1.0/third_party/ta-lib/rust/src/lib.rs +13 -0
  244. pytafast-0.1.0/third_party/ta-lib/rust/src/ta_func/mod.rs +57 -0
  245. pytafast-0.1.0/third_party/ta-lib/rust/src/ta_func/mult.rs +103 -0
  246. pytafast-0.1.0/third_party/ta-lib/rust/tests/mult_test.rs +177 -0
  247. pytafast-0.1.0/third_party/ta-lib/scripts/README.md +3 -0
  248. pytafast-0.1.0/third_party/ta-lib/scripts/install_tests/__init__.py +1 -0
  249. pytafast-0.1.0/third_party/ta-lib/scripts/install_tests/python.py +73 -0
  250. pytafast-0.1.0/third_party/ta-lib/scripts/merge-ta-lib-temp.py +73 -0
  251. pytafast-0.1.0/third_party/ta-lib/scripts/merge.py +88 -0
  252. pytafast-0.1.0/third_party/ta-lib/scripts/package.py +1001 -0
  253. pytafast-0.1.0/third_party/ta-lib/scripts/post-release-brew.py +254 -0
  254. pytafast-0.1.0/third_party/ta-lib/scripts/post-release-docs.py +88 -0
  255. pytafast-0.1.0/third_party/ta-lib/scripts/pre-release-checks.py +138 -0
  256. pytafast-0.1.0/third_party/ta-lib/scripts/sync.py +155 -0
  257. pytafast-0.1.0/third_party/ta-lib/scripts/test-dist.py +68 -0
  258. pytafast-0.1.0/third_party/ta-lib/scripts/utilities/__init__.py +1 -0
  259. pytafast-0.1.0/third_party/ta-lib/scripts/utilities/common.py +485 -0
  260. pytafast-0.1.0/third_party/ta-lib/scripts/utilities/files.py +255 -0
  261. pytafast-0.1.0/third_party/ta-lib/scripts/utilities/package_digest.py +239 -0
  262. pytafast-0.1.0/third_party/ta-lib/scripts/utilities/versions.py +604 -0
  263. pytafast-0.1.0/third_party/ta-lib/scripts/utilities/windows.py +99 -0
  264. pytafast-0.1.0/third_party/ta-lib/src/Makefile.am +12 -0
  265. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/Makefile.am +48 -0
  266. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/frames/ta_frame.c +3469 -0
  267. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/frames/ta_frame.h +1508 -0
  268. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/ta_abstract.c +1313 -0
  269. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/ta_def_ui.c +573 -0
  270. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/ta_def_ui.h +293 -0
  271. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/ta_frame_priv.h +128 -0
  272. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/ta_func_api.c +9159 -0
  273. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/ta_group_idx.c +453 -0
  274. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/ta_java_defs.h +366 -0
  275. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_a.c +441 -0
  276. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_b.c +196 -0
  277. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_c.c +1885 -0
  278. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_d.c +129 -0
  279. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_e.c +102 -0
  280. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_f.c +76 -0
  281. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_g.c +72 -0
  282. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_h.c +246 -0
  283. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_i.c +99 -0
  284. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_j.c +72 -0
  285. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_k.c +98 -0
  286. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_l.c +188 -0
  287. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_m.c +739 -0
  288. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_n.c +127 -0
  289. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_o.c +96 -0
  290. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_p.c +186 -0
  291. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_q.c +72 -0
  292. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_r.c +206 -0
  293. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_s.c +630 -0
  294. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_t.c +277 -0
  295. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_u.c +142 -0
  296. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_v.c +98 -0
  297. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_w.c +149 -0
  298. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_x.c +72 -0
  299. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_y.c +72 -0
  300. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/tables/table_z.c +72 -0
  301. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/CoreAnnotated.java.template +69 -0
  302. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/Makefile.am.template +11 -0
  303. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/excel_glue.c.template +45 -0
  304. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_frame.c.template +63 -0
  305. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_frame.h.template +60 -0
  306. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_func.h.template +66 -0
  307. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_func.swg.template +45 -0
  308. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_func_api.c.template +55 -0
  309. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_func_mod.rs.template +57 -0
  310. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_group_idx.c.template +56 -0
  311. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_java_defs.h.template +45 -0
  312. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_retcode.c.template +92 -0
  313. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_x.c.template +84 -0
  314. pytafast-0.1.0/third_party/ta-lib/src/ta_abstract/templates/ta_x.rs.template +55 -0
  315. pytafast-0.1.0/third_party/ta-lib/src/ta_common/Makefile.am +13 -0
  316. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_global.c +178 -0
  317. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_global.h +119 -0
  318. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_magic_nb.h +31 -0
  319. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_memory.h +362 -0
  320. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_pragma.h +87 -0
  321. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_retcode.c +109 -0
  322. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_retcode.csv +18 -0
  323. pytafast-0.1.0/third_party/ta-lib/src/ta_common/ta_version.c +97 -0
  324. pytafast-0.1.0/third_party/ta-lib/src/ta_func/Makefile.am +171 -0
  325. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ACCBANDS.c +568 -0
  326. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ACOS.c +294 -0
  327. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_AD.c +370 -0
  328. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ADD.c +306 -0
  329. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ADOSC.c +545 -0
  330. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ADX.c +844 -0
  331. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ADXR.c +433 -0
  332. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_APO.c +674 -0
  333. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_AROON.c +511 -0
  334. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_AROONOSC.c +514 -0
  335. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ASIN.c +293 -0
  336. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ATAN.c +295 -0
  337. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ATR.c +512 -0
  338. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_AVGDEV.c +378 -0
  339. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_AVGPRICE.c +334 -0
  340. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_BBANDS.c +722 -0
  341. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_BETA.c +545 -0
  342. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_BOP.c +335 -0
  343. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CCI.c +475 -0
  344. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDL2CROWS.c +412 -0
  345. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDL3BLACKCROWS.c +440 -0
  346. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDL3INSIDE.c +431 -0
  347. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDL3LINESTRIKE.c +453 -0
  348. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDL3OUTSIDE.c +394 -0
  349. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDL3STARSINSOUTH.c +508 -0
  350. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDL3WHITESOLDIERS.c +532 -0
  351. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLABANDONEDBABY.c +519 -0
  352. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLADVANCEBLOCK.c +604 -0
  353. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLBELTHOLD.c +432 -0
  354. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLBREAKAWAY.c +439 -0
  355. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLCLOSINGMARUBOZU.c +433 -0
  356. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLCONCEALBABYSWALL.c +442 -0
  357. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLCOUNTERATTACK.c +435 -0
  358. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLDARKCLOUDCOVER.c +444 -0
  359. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLDOJI.c +393 -0
  360. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLDOJISTAR.c +425 -0
  361. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLDRAGONFLYDOJI.c +422 -0
  362. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLENGULFING.c +404 -0
  363. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLEVENINGDOJISTAR.c +487 -0
  364. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLEVENINGSTAR.c +473 -0
  365. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLGAPSIDESIDEWHITE.c +441 -0
  366. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLGRAVESTONEDOJI.c +421 -0
  367. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHAMMER.c +470 -0
  368. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHANGINGMAN.c +470 -0
  369. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHARAMI.c +444 -0
  370. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHARAMICROSS.c +439 -0
  371. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHIGHWAVE.c +415 -0
  372. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHIKKAKE.c +455 -0
  373. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHIKKAKEMOD.c +513 -0
  374. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLHOMINGPIGEON.c +427 -0
  375. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLIDENTICAL3CROWS.c +476 -0
  376. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLINNECK.c +430 -0
  377. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLINVERTEDHAMMER.c +446 -0
  378. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLKICKING.c +463 -0
  379. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLKICKINGBYLENGTH.c +464 -0
  380. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLLADDERBOTTOM.c +418 -0
  381. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLLONGLEGGEDDOJI.c +421 -0
  382. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLLONGLINE.c +415 -0
  383. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLMARUBOZU.c +416 -0
  384. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLMATCHINGLOW.c +402 -0
  385. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLMATHOLD.c +516 -0
  386. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLMORNINGDOJISTAR.c +485 -0
  387. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLMORNINGSTAR.c +471 -0
  388. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLONNECK.c +429 -0
  389. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLPIERCING.c +420 -0
  390. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLRICKSHAWMAN.c +454 -0
  391. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLRISEFALL3METHODS.c +480 -0
  392. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLSEPARATINGLINES.c +462 -0
  393. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLSHOOTINGSTAR.c +446 -0
  394. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLSHORTLINE.c +415 -0
  395. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLSPINNINGTOP.c +399 -0
  396. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLSTALLEDPATTERN.c +512 -0
  397. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLSTICKSANDWICH.c +408 -0
  398. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLTAKURI.c +444 -0
  399. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLTASUKIGAP.c +441 -0
  400. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLTHRUSTING.c +431 -0
  401. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLTRISTAR.c +422 -0
  402. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLUNIQUE3RIVER.c +431 -0
  403. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLUPSIDEGAP2CROWS.c +433 -0
  404. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CDLXSIDEGAP3METHODS.c +406 -0
  405. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CEIL.c +294 -0
  406. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CMO.c +660 -0
  407. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_CORREL.c +465 -0
  408. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_COS.c +294 -0
  409. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_COSH.c +294 -0
  410. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_DEMA.c +545 -0
  411. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_DIV.c +306 -0
  412. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_DX.c +751 -0
  413. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_EMA.c +559 -0
  414. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_EXP.c +294 -0
  415. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_FLOOR.c +294 -0
  416. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_HT_DCPERIOD.c +615 -0
  417. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_HT_DCPHASE.c +733 -0
  418. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_HT_PHASOR.c +638 -0
  419. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_HT_SINE.c +752 -0
  420. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_HT_TRENDLINE.c +695 -0
  421. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_HT_TRENDMODE.c +848 -0
  422. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_IMI.c +386 -0
  423. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_KAMA.c +555 -0
  424. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_LINEARREG.c +412 -0
  425. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_LINEARREG_ANGLE.c +412 -0
  426. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_LINEARREG_INTERCEPT.c +410 -0
  427. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_LINEARREG_SLOPE.c +406 -0
  428. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_LN.c +294 -0
  429. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_LOG10.c +294 -0
  430. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MA.c +539 -0
  431. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MACD.c +865 -0
  432. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MACDEXT.c +792 -0
  433. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MACDFIX.c +365 -0
  434. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MAMA.c +780 -0
  435. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MAVP.c +563 -0
  436. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MAX.c +431 -0
  437. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MAXINDEX.c +426 -0
  438. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MEDPRICE.c +318 -0
  439. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MFI.c +632 -0
  440. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MIDPOINT.c +403 -0
  441. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MIDPRICE.c +415 -0
  442. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MIN.c +431 -0
  443. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MININDEX.c +426 -0
  444. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MINMAX.c +490 -0
  445. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MINMAXINDEX.c +490 -0
  446. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MINUS_DI.c +762 -0
  447. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MINUS_DM.c +637 -0
  448. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MOM.c +393 -0
  449. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_MULT.c +304 -0
  450. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_NATR.c +545 -0
  451. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_NVI.c +197 -0
  452. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_OBV.c +338 -0
  453. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_PLUS_DI.c +762 -0
  454. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_PLUS_DM.c +638 -0
  455. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_PPO.c +422 -0
  456. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_PVI.c +197 -0
  457. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ROC.c +404 -0
  458. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ROCP.c +405 -0
  459. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ROCR.c +406 -0
  460. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ROCR100.c +405 -0
  461. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_RSI.c +664 -0
  462. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SAR.c +774 -0
  463. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SAREXT.c +1078 -0
  464. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SIN.c +294 -0
  465. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SINH.c +294 -0
  466. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SMA.c +478 -0
  467. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SQRT.c +294 -0
  468. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_STDDEV.c +570 -0
  469. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_STOCH.c +884 -0
  470. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_STOCHF.c +794 -0
  471. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_STOCHRSI.c +583 -0
  472. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SUB.c +307 -0
  473. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_SUM.c +391 -0
  474. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_T3.c +587 -0
  475. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TAN.c +293 -0
  476. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TANH.c +294 -0
  477. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TEMA.c +539 -0
  478. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TRANGE.c +383 -0
  479. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TRIMA.c +706 -0
  480. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TRIX.c +508 -0
  481. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TSF.c +412 -0
  482. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_TYPPRICE.c +326 -0
  483. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_ULTOSC.c +648 -0
  484. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_VAR.c +549 -0
  485. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_WCLPRICE.c +325 -0
  486. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_WILLR.c +512 -0
  487. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_WMA.c +483 -0
  488. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_utility.c +134 -0
  489. pytafast-0.1.0/third_party/ta-lib/src/ta_func/ta_utility.h +362 -0
  490. pytafast-0.1.0/third_party/ta-lib/src/tools/Makefile.am +2 -0
  491. pytafast-0.1.0/third_party/ta-lib/src/tools/gen_code/Makefile.am +16 -0
  492. pytafast-0.1.0/third_party/ta-lib/src/tools/gen_code/gen_code.c +4895 -0
  493. pytafast-0.1.0/third_party/ta-lib/src/tools/gen_code/gen_rust.c +518 -0
  494. pytafast-0.1.0/third_party/ta-lib/src/tools/gen_code/java/Main.java +90 -0
  495. pytafast-0.1.0/third_party/ta-lib/src/tools/gen_code/java/PrettyCode.java +224 -0
  496. pytafast-0.1.0/third_party/ta-lib/src/tools/gen_code/mcpp.exe +0 -0
  497. pytafast-0.1.0/third_party/ta-lib/src/tools/post-build-bin.sh +17 -0
  498. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/Makefile.am +43 -0
  499. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ReadMe.txt +12 -0
  500. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_error_number.h +297 -0
  501. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_gDataClose.c +723 -0
  502. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_gDataHigh.c +723 -0
  503. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_gDataLow.c +719 -0
  504. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_gDataOpen.c +667 -0
  505. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_regtest.c +301 -0
  506. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_1in_1out.c +507 -0
  507. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_1in_2out.c +469 -0
  508. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_adx.c +682 -0
  509. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_avgdev.c +256 -0
  510. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_bbands.c +533 -0
  511. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_candlestick.c +744 -0
  512. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_imi.c +293 -0
  513. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_ma.c +816 -0
  514. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_macd.c +603 -0
  515. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_minmax.c +834 -0
  516. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_mom.c +553 -0
  517. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_per_ema.c +307 -0
  518. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_per_hl.c +640 -0
  519. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_per_hlc.c +651 -0
  520. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_per_hlcv.c +710 -0
  521. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_per_ohlc.c +527 -0
  522. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_po.c +440 -0
  523. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_rsi.c +507 -0
  524. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_sar.c +301 -0
  525. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_stddev.c +265 -0
  526. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_stoch.c +794 -0
  527. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func/test_trange.c +349 -0
  528. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_func.h +28 -0
  529. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/ta_test_priv.h +210 -0
  530. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/test_abstract.c +788 -0
  531. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/test_data.c +145 -0
  532. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/test_internals.c +274 -0
  533. pytafast-0.1.0/third_party/ta-lib/src/tools/ta_regtest/test_util.c +1338 -0
  534. pytafast-0.1.0/third_party/ta-lib/ta-lib.dpkg.in +16 -0
  535. pytafast-0.1.0/third_party/ta-lib/ta-lib.pc.in +11 -0
  536. pytafast-0.1.0/third_party/ta-lib/ta-lib.spec.in +70 -0
  537. pytafast-0.1.0/third_party/ta-lib/ta_func_api.xml +6903 -0
  538. pytafast-0.1.0/third_party/ta-lib/ta_func_list.txt +161 -0
  539. pytafast-0.1.0/third_party/ta-lib/uninstall +121 -0
  540. pytafast-0.1.0/uv.lock +361 -0
@@ -0,0 +1,12 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ .pytest_cache
12
+ .benchmarks
@@ -0,0 +1,6 @@
1
+ [submodule "third_party/nanobind"]
2
+ path = third_party/nanobind
3
+ url = https://github.com/wjakob/nanobind
4
+ [submodule "third_party/ta-lib"]
5
+ path = third_party/ta-lib
6
+ url = https://github.com/TA-Lib/ta-lib
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,22 @@
1
+ cmake_minimum_required(VERSION 3.15...3.27)
2
+ project(pytalib VERSION 0.1.0)
3
+
4
+ # Build ta-lib
5
+ # ta-lib provides a configure script, but CMake can build it directly if we list its sources.
6
+ # Since ta-lib v0.6.4 is already a robust C library, a clean approach is either to use its configure/make (ExternalProject_Add)
7
+ # or just compile its `src` folder directly. Let's use `add_subdirectory` if it has CMake, else we build the sources.
8
+ # Let's inspect ta-lib after checkout.
9
+ add_subdirectory(third_party/ta-lib)
10
+
11
+ # include nanobind
12
+ find_package(Python 3.11 COMPONENTS Interpreter Development.Module REQUIRED)
13
+ add_subdirectory(third_party/nanobind)
14
+
15
+ # The main python module
16
+ nanobind_add_module(pytafast_ext src/pytafast_ext.cpp)
17
+
18
+ # Link against ta-lib
19
+ target_link_libraries(pytafast_ext PRIVATE ta-lib-static)
20
+
21
+ # Install extension in package
22
+ install(TARGETS pytafast_ext DESTINATION pytafast)
@@ -0,0 +1,70 @@
1
+ # pytafast
2
+
3
+ A high-performance Python wrapper for the `ta-lib` C library using `nanobind`.
4
+
5
+ ## Project Overview
6
+
7
+ - **Core Technology:** Uses `nanobind` for efficient C++/Python bindings and `scikit-build-core` for the build system.
8
+ - **Architecture:**
9
+ - A C++ extension (`pytafast_ext`) wraps the raw `ta-lib` functions.
10
+ - A Python layer (`pytafast`) provides a high-level API that supports both `numpy` arrays and `pandas` Series.
11
+ - **Key Features:**
12
+ - Preservation of `pandas.Series` metadata (index, name).
13
+ - Automatic `TA_Initialize()` and `TA_Shutdown()` management.
14
+ - Performance-oriented, utilizing `nb::ndarray` for zero-copy data access where possible.
15
+
16
+ ## Building and Running
17
+
18
+ ### Prerequisites
19
+
20
+ - C++ compiler (supporting C++17 or later)
21
+ - CMake (3.15+)
22
+ - Python (3.11+)
23
+
24
+ ### Installation
25
+
26
+ For development, it is recommended to use `uv` or `pip` in editable mode:
27
+
28
+ ```bash
29
+ # Using uv (recommended)
30
+ uv pip install -v -e .
31
+
32
+ # Using pip
33
+ pip install -v -e .
34
+ ```
35
+
36
+ The `-v` flag is helpful to see the CMake build output.
37
+
38
+ ### Testing
39
+
40
+ Tests are managed with `pytest`.
41
+
42
+ ```bash
43
+ # Run all tests
44
+ pytest
45
+
46
+ # Run tests with benchmarking
47
+ pytest tests/test_benchmark.py
48
+ ```
49
+
50
+ ## Development Conventions
51
+
52
+ ### Project Structure
53
+
54
+ - `src/pytafast_ext.cpp`: The main C++ binding file. All `ta-lib` function wrappings should be added here.
55
+ - `src/pytafast/__init__.py`: The public Python API. New functions added to the C++ extension should be exposed here with appropriate documentation and type handling.
56
+ - `third_party/`: Contains git submodules for `ta-lib` and `nanobind`.
57
+ - `tests/`: Contains `pytest` test cases.
58
+
59
+ ### Coding Standards
60
+
61
+ - **C++:**
62
+ - Use `nanobind` (`nb::ndarray`) for array passing.
63
+ - Use `check_ta_retcode` to handle `TA_RetCode` and raise appropriate Python exceptions.
64
+ - Ensure memory safety by using `nb::capsule` for data ownership when returning arrays allocated in C++.
65
+ - **Python:**
66
+ - Support both `numpy.ndarray` and `pandas.Series` in public functions.
67
+ - Achieve true zero-copy data passing by ensuring array continuity (`np.ascontiguousarray`) and explicitly typing C++ arguments as `const double` references (`nb::ndarray<nb::numpy, const double, nb::c_contig>`) which safely accepts Pandas' read-only memory views without enforcing deep copies.
68
+ - **Testing:**
69
+ - Always compare results against the official `TA-Lib` Python package for verification.
70
+ - Include benchmarks for new functions to ensure performance remains competitive.
@@ -0,0 +1,10 @@
1
+ Metadata-Version: 2.1
2
+ Name: pytafast
3
+ Version: 0.1.0
4
+ Summary: Python wrapper for ta-lib using nanobind
5
+ Author-Email: curry tang <twn39@163.com>
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: numpy
8
+ Requires-Dist: pandas
9
+ Description-Content-Type: text/markdown
10
+
File without changes
@@ -0,0 +1,58 @@
1
+ [build-system]
2
+ requires = ["scikit-build-core>=0.4.3", "nanobind>=2.11.0"]
3
+ build-backend = "scikit_build_core.build"
4
+
5
+ [project]
6
+ name = "pytafast"
7
+ version = "0.1.0"
8
+ description = "Python wrapper for ta-lib using nanobind"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ dependencies = [
12
+ "numpy",
13
+ "pandas"
14
+ ]
15
+ authors = [
16
+ {name = "curry tang", email = "twn39@163.com"}
17
+ ]
18
+
19
+ [tool.scikit-build]
20
+ minimum-version = "0.4"
21
+ cmake.build-type = "Release"
22
+ sdist.include = [
23
+ "third_party/ta-lib/src/**/*",
24
+ "third_party/ta-lib/include/**/*",
25
+ "third_party/ta-lib/CMakeLists.txt",
26
+ "third_party/ta-lib/ta_lib.cmake",
27
+ "third_party/ta-lib/ta-lib-config.cmake.in",
28
+ "third_party/nanobind/src/**/*",
29
+ "third_party/nanobind/include/**/*",
30
+ "third_party/nanobind/ext/**/*",
31
+ "third_party/nanobind/cmake/**/*",
32
+ "third_party/nanobind/CMakeLists.txt",
33
+ ]
34
+ sdist.exclude = [
35
+ "third_party/ta-lib/ide/**/*",
36
+ "third_party/ta-lib/dist/**/*",
37
+ "third_party/ta-lib/dotnet/**/*",
38
+ "third_party/ta-lib/java/**/*",
39
+ "third_party/ta-lib/docs/**/*",
40
+ "third_party/ta-lib/swig/**/*",
41
+ "third_party/nanobind/docs/**/*",
42
+ "third_party/**/*.deb",
43
+ "third_party/**/*.msi",
44
+ "third_party/**/*.zip",
45
+ "third_party/**/*.dll",
46
+ "third_party/**/*.class",
47
+ "third_party/**/*.pdf",
48
+ "third_party/**/*.sdf",
49
+ ]
50
+
51
+ [dependency-groups]
52
+ dev = [
53
+ "ta-lib>=0.6.8",
54
+ "pytest-benchmark>=4.0.0",
55
+ ]
56
+
57
+ [tool.pytest.ini_options]
58
+ testpaths = ["tests"]
@@ -0,0 +1,197 @@
1
+ import numpy as np
2
+
3
+ # We import the compiled extension module
4
+ from . import pytafast_ext
5
+ from .pytafast_ext import MAType
6
+
7
+ __version__ = "0.1.0"
8
+
9
+ def _is_pandas_series(obj):
10
+ try:
11
+ import pandas as pd
12
+ return isinstance(obj, pd.Series)
13
+ except ImportError:
14
+ return False
15
+
16
+ def SMA(inReal, timeperiod=30):
17
+ """
18
+ Simple Moving Average.
19
+
20
+ Args:
21
+ inReal: 1D array-like (numpy ndarray, pandas Series, list, etc.) of floats.
22
+ timeperiod: Integer time period.
23
+
24
+ Returns:
25
+ A numpy array or pandas Series (matching input) with the SMA values.
26
+ The leading (timeperiod - 1) elements will be NaN.
27
+ """
28
+ is_series = _is_pandas_series(inReal)
29
+
30
+ # We use copy=False and ascontiguousarray to achieve zero-copy whenever possible
31
+ arr = np.asarray(inReal, dtype=np.float64)
32
+ arr = np.ascontiguousarray(arr)
33
+
34
+ # Call the C++ nanobind wrapper
35
+ out_arr = pytafast_ext.SMA(arr, timeperiod)
36
+
37
+ # Cast back to pandas Series if input was a Series
38
+ if is_series:
39
+ import pandas as pd
40
+ return pd.Series(out_arr, index=inReal.index, name=inReal.name)
41
+
42
+ return out_arr
43
+
44
+ def EMA(inReal, timeperiod=30):
45
+ """
46
+ Exponential Moving Average.
47
+ """
48
+ is_series = _is_pandas_series(inReal)
49
+ arr = np.ascontiguousarray(np.asarray(inReal, dtype=np.float64))
50
+ out_arr = pytafast_ext.EMA(arr, timeperiod)
51
+ if is_series:
52
+ import pandas as pd
53
+ return pd.Series(out_arr, index=inReal.index, name=inReal.name)
54
+ return out_arr
55
+
56
+ def RSI(inReal, timeperiod=14):
57
+ """
58
+ Relative Strength Index.
59
+ """
60
+ is_series = _is_pandas_series(inReal)
61
+ arr = np.ascontiguousarray(np.asarray(inReal, dtype=np.float64))
62
+ out_arr = pytafast_ext.RSI(arr, timeperiod)
63
+ if is_series:
64
+ import pandas as pd
65
+ return pd.Series(out_arr, index=inReal.index, name=inReal.name)
66
+ return out_arr
67
+
68
+ def MACD(inReal, fastperiod=12, slowperiod=26, signalperiod=9):
69
+ """
70
+ Moving Average Convergence/Divergence.
71
+ Returns: (macd, macdsignal, macdhist)
72
+ """
73
+ is_series = _is_pandas_series(inReal)
74
+ arr = np.ascontiguousarray(np.asarray(inReal, dtype=np.float64))
75
+ macd, macdsignal, macdhist = pytafast_ext.MACD(arr, fastperiod, slowperiod, signalperiod)
76
+ if is_series:
77
+ import pandas as pd
78
+ return (
79
+ pd.Series(macd, index=inReal.index, name="MACD"),
80
+ pd.Series(macdsignal, index=inReal.index, name="MACD_Signal"),
81
+ pd.Series(macdhist, index=inReal.index, name="MACD_Hist")
82
+ )
83
+ return macd, macdsignal, macdhist
84
+
85
+ def BBANDS(inReal, timeperiod=5, nbdevup=2.0, nbdevdn=2.0, matype=MAType.SMA):
86
+ """
87
+ Bollinger Bands.
88
+ Returns: (upperband, middleband, lowerband)
89
+ """
90
+ is_series = _is_pandas_series(inReal)
91
+ arr = np.ascontiguousarray(np.asarray(inReal, dtype=np.float64))
92
+ # Convert Enum to int for C++ call if necessary, though nanobind handles enum bindings
93
+ upper, middle, lower = pytafast_ext.BBANDS(arr, timeperiod, nbdevup, nbdevdn, int(matype.value) if hasattr(matype, 'value') else int(matype))
94
+
95
+ if is_series:
96
+ import pandas as pd
97
+ return (
98
+ pd.Series(upper, index=inReal.index, name="UpperBand"),
99
+ pd.Series(middle, index=inReal.index, name="MiddleBand"),
100
+ pd.Series(lower, index=inReal.index, name="LowerBand")
101
+ )
102
+ return upper, middle, lower
103
+
104
+ def ATR(inHigh, inLow, inClose, timeperiod=14):
105
+ """
106
+ Average True Range.
107
+ """
108
+ is_series = _is_pandas_series(inClose)
109
+ arr_h = np.ascontiguousarray(np.asarray(inHigh, dtype=np.float64))
110
+ arr_l = np.ascontiguousarray(np.asarray(inLow, dtype=np.float64))
111
+ arr_c = np.ascontiguousarray(np.asarray(inClose, dtype=np.float64))
112
+ out_arr = pytafast_ext.ATR(arr_h, arr_l, arr_c, timeperiod)
113
+ if is_series:
114
+ import pandas as pd
115
+ return pd.Series(out_arr, index=inClose.index, name="ATR")
116
+ return out_arr
117
+
118
+ def ADX(inHigh, inLow, inClose, timeperiod=14):
119
+ """
120
+ Average Directional Movement Index.
121
+ """
122
+ is_series = _is_pandas_series(inClose)
123
+ arr_h = np.ascontiguousarray(np.asarray(inHigh, dtype=np.float64))
124
+ arr_l = np.ascontiguousarray(np.asarray(inLow, dtype=np.float64))
125
+ arr_c = np.ascontiguousarray(np.asarray(inClose, dtype=np.float64))
126
+ out_arr = pytafast_ext.ADX(arr_h, arr_l, arr_c, timeperiod)
127
+ if is_series:
128
+ import pandas as pd
129
+ return pd.Series(out_arr, index=inClose.index, name="ADX")
130
+ return out_arr
131
+
132
+ def CCI(inHigh, inLow, inClose, timeperiod=14):
133
+ """
134
+ Commodity Channel Index.
135
+ """
136
+ is_series = _is_pandas_series(inClose)
137
+ arr_h = np.ascontiguousarray(np.asarray(inHigh, dtype=np.float64))
138
+ arr_l = np.ascontiguousarray(np.asarray(inLow, dtype=np.float64))
139
+ arr_c = np.ascontiguousarray(np.asarray(inClose, dtype=np.float64))
140
+ out_arr = pytafast_ext.CCI(arr_h, arr_l, arr_c, timeperiod)
141
+ if is_series:
142
+ import pandas as pd
143
+ return pd.Series(out_arr, index=inClose.index, name="CCI")
144
+ return out_arr
145
+
146
+ def OBV(inReal, inVolume):
147
+ """
148
+ On Balance Volume.
149
+ """
150
+ is_series = _is_pandas_series(inReal)
151
+ arr_c = np.ascontiguousarray(np.asarray(inReal, dtype=np.float64))
152
+ arr_v = np.ascontiguousarray(np.asarray(inVolume, dtype=np.float64))
153
+ out_arr = pytafast_ext.OBV(arr_c, arr_v)
154
+ if is_series:
155
+ import pandas as pd
156
+ return pd.Series(out_arr, index=inReal.index, name="OBV")
157
+ return out_arr
158
+
159
+ def ROC(inReal, timeperiod=10):
160
+ """
161
+ Rate of change : ((price/prevPrice)-1)*100
162
+ """
163
+ is_series = _is_pandas_series(inReal)
164
+ arr = np.ascontiguousarray(np.asarray(inReal, dtype=np.float64))
165
+ out_arr = pytafast_ext.ROC(arr, timeperiod)
166
+ if is_series:
167
+ import pandas as pd
168
+ return pd.Series(out_arr, index=inReal.index, name="ROC")
169
+ return out_arr
170
+
171
+ def STOCH(inHigh, inLow, inClose, fastk_period=5, slowk_period=3, slowk_matype=MAType.SMA, slowd_period=3, slowd_matype=MAType.SMA):
172
+ """
173
+ Stochastic.
174
+ Returns: (slowk, slowd)
175
+ """
176
+ is_series = _is_pandas_series(inClose)
177
+ arr_h = np.ascontiguousarray(np.asarray(inHigh, dtype=np.float64))
178
+ arr_l = np.ascontiguousarray(np.asarray(inLow, dtype=np.float64))
179
+ arr_c = np.ascontiguousarray(np.asarray(inClose, dtype=np.float64))
180
+
181
+ sk_t = int(slowk_matype.value) if hasattr(slowk_matype, 'value') else int(slowk_matype)
182
+ sd_t = int(slowd_matype.value) if hasattr(slowd_matype, 'value') else int(slowd_matype)
183
+
184
+ slowk, slowd = pytafast_ext.STOCH(arr_h, arr_l, arr_c, fastk_period, slowk_period, sk_t, slowd_period, sd_t)
185
+
186
+ if is_series:
187
+ import pandas as pd
188
+ return (
189
+ pd.Series(slowk, index=inClose.index, name="SlowK"),
190
+ pd.Series(slowd, index=inClose.index, name="SlowD")
191
+ )
192
+ return slowk, slowd
193
+
194
+ # Initialize TA-Lib context when the module is loaded
195
+ pytafast_ext.initialize()
196
+
197
+ from pytafast import aio
@@ -0,0 +1,35 @@
1
+ import asyncio
2
+ import pytafast
3
+
4
+ async def SMA(*args, **kwargs):
5
+ return await asyncio.to_thread(pytafast.SMA, *args, **kwargs)
6
+
7
+ async def EMA(*args, **kwargs):
8
+ return await asyncio.to_thread(pytafast.EMA, *args, **kwargs)
9
+
10
+ async def RSI(*args, **kwargs):
11
+ return await asyncio.to_thread(pytafast.RSI, *args, **kwargs)
12
+
13
+ async def MACD(*args, **kwargs):
14
+ return await asyncio.to_thread(pytafast.MACD, *args, **kwargs)
15
+
16
+ async def BBANDS(*args, **kwargs):
17
+ return await asyncio.to_thread(pytafast.BBANDS, *args, **kwargs)
18
+
19
+ async def ATR(*args, **kwargs):
20
+ return await asyncio.to_thread(pytafast.ATR, *args, **kwargs)
21
+
22
+ async def ADX(*args, **kwargs):
23
+ return await asyncio.to_thread(pytafast.ADX, *args, **kwargs)
24
+
25
+ async def CCI(*args, **kwargs):
26
+ return await asyncio.to_thread(pytafast.CCI, *args, **kwargs)
27
+
28
+ async def OBV(*args, **kwargs):
29
+ return await asyncio.to_thread(pytafast.OBV, *args, **kwargs)
30
+
31
+ async def ROC(*args, **kwargs):
32
+ return await asyncio.to_thread(pytafast.ROC, *args, **kwargs)
33
+
34
+ async def STOCH(*args, **kwargs):
35
+ return await asyncio.to_thread(pytafast.STOCH, *args, **kwargs)