onetick-py 1.180.0__tar.gz → 1.181.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 (163) hide show
  1. {onetick_py-1.180.0/src/onetick_py.egg-info → onetick_py-1.181.0}/PKG-INFO +1 -1
  2. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/_version.py +1 -1
  3. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/joins.py +25 -6
  4. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/tmp_otq.py +29 -1
  5. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/source.py +9 -2
  6. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/symbols.py +132 -71
  7. {onetick_py-1.180.0 → onetick_py-1.181.0/src/onetick_py.egg-info}/PKG-INFO +1 -1
  8. {onetick_py-1.180.0 → onetick_py-1.181.0}/LICENSE +0 -0
  9. {onetick_py-1.180.0 → onetick_py-1.181.0}/README.md +0 -0
  10. {onetick_py-1.180.0 → onetick_py-1.181.0}/pyproject.toml +0 -0
  11. {onetick_py-1.180.0 → onetick_py-1.181.0}/requirements.strict.txt +0 -0
  12. {onetick_py-1.180.0 → onetick_py-1.181.0}/requirements.txt +0 -0
  13. {onetick_py-1.180.0 → onetick_py-1.181.0}/setup.cfg +0 -0
  14. {onetick_py-1.180.0 → onetick_py-1.181.0}/setup.py +0 -0
  15. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/locator_parser/__init__.py +0 -0
  16. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/locator_parser/acl.py +0 -0
  17. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/locator_parser/actions.py +0 -0
  18. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/locator_parser/common.py +0 -0
  19. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/locator_parser/io.py +0 -0
  20. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/locator_parser/locator.py +0 -0
  21. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/__init__.py +0 -0
  22. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/doc_utilities/__init__.py +0 -0
  23. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/doc_utilities/napoleon.py +0 -0
  24. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/doc_utilities/ot_doctest.py +0 -0
  25. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/doc_utilities/snippets.py +0 -0
  26. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/lib/__init__.py +0 -0
  27. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/lib/instance.py +0 -0
  28. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/__init__.py +0 -0
  29. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/_stack_info.py +0 -0
  30. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/__init__.py +0 -0
  31. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/_base.py +0 -0
  32. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/_docs.py +0 -0
  33. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/compute.py +0 -0
  34. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/functions.py +0 -0
  35. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/generic.py +0 -0
  36. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/high_low.py +0 -0
  37. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/num_distinct.py +0 -0
  38. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/order_book.py +0 -0
  39. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/aggregations/other.py +0 -0
  40. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/backports.py +0 -0
  41. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/cache.py +0 -0
  42. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/callback/__init__.py +0 -0
  43. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/callback/callback.py +0 -0
  44. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/callback/callbacks.py +0 -0
  45. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/compatibility.py +0 -0
  46. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/configuration.py +0 -0
  47. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/__init__.py +0 -0
  48. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_csv_inspector.py +0 -0
  49. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/__init__.py +0 -0
  50. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_manually_bound_value.py +0 -0
  51. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_nodes_history.py +0 -0
  52. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_op_utils/__init__.py +0 -0
  53. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_op_utils/every_operand.py +0 -0
  54. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_op_utils/is_const.py +0 -0
  55. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_per_tick_scripts/tick_list_sort_template.script +0 -0
  56. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_proxy_node.py +0 -0
  57. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_state_objects.py +0 -0
  58. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_internal/_state_vars.py +0 -0
  59. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/__init__.py +0 -0
  60. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/_symbol_param.py +0 -0
  61. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/schema.py +0 -0
  62. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/__init__.py +0 -0
  63. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/aggregations.py +0 -0
  64. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/applyers.py +0 -0
  65. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/columns.py +0 -0
  66. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/data_quality.py +0 -0
  67. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/debugs.py +0 -0
  68. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/drops.py +0 -0
  69. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/fields.py +0 -0
  70. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/filters.py +0 -0
  71. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/merges.py +0 -0
  72. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/misc.py +0 -0
  73. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/pandases.py +0 -0
  74. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/renames.py +0 -0
  75. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/sorts.py +0 -0
  76. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/switches.py +0 -0
  77. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/symbols.py +0 -0
  78. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/times.py +0 -0
  79. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/source_methods/writes.py +0 -0
  80. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/_source/symbol.py +0 -0
  81. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column.py +0 -0
  82. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/__init__.py +0 -0
  83. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/_methods/__init__.py +0 -0
  84. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/_methods/_internal.py +0 -0
  85. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/_methods/conversions.py +0 -0
  86. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/_methods/methods.py +0 -0
  87. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/_methods/op_types.py +0 -0
  88. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/accessors/__init__.py +0 -0
  89. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/accessors/_accessor.py +0 -0
  90. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/accessors/decimal_accessor.py +0 -0
  91. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/accessors/dt_accessor.py +0 -0
  92. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/accessors/float_accessor.py +0 -0
  93. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/accessors/str_accessor.py +0 -0
  94. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/column_operations/base.py +0 -0
  95. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/cut_builder.py +0 -0
  96. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/db_constants.py +0 -0
  97. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/eval_query.py +0 -0
  98. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/lambda_object.py +0 -0
  99. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/multi_output_source.py +0 -0
  100. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/per_tick_script.py +0 -0
  101. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/core/query_inspector.py +0 -0
  102. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/db/__init__.py +0 -0
  103. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/db/_inspection.py +0 -0
  104. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/db/db.py +0 -0
  105. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/db/utils.py +0 -0
  106. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/docs/__init__.py +0 -0
  107. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/docs/docstring_parser.py +0 -0
  108. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/docs/utils.py +0 -0
  109. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/functions.py +0 -0
  110. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/license.py +0 -0
  111. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/log.py +0 -0
  112. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/math.py +0 -0
  113. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/misc.py +0 -0
  114. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/oqd/__init__.py +0 -0
  115. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/oqd/eps.py +0 -0
  116. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/oqd/sources.py +0 -0
  117. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/otq.py +0 -0
  118. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/pyomd_mock.py +0 -0
  119. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/run.py +0 -0
  120. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/servers.py +0 -0
  121. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/session.py +0 -0
  122. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/__init__.py +0 -0
  123. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/cache.py +0 -0
  124. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/common.py +0 -0
  125. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/csv.py +0 -0
  126. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/custom.py +0 -0
  127. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/data_file.py +0 -0
  128. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/data_source.py +0 -0
  129. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/dataframe.py +0 -0
  130. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/empty.py +0 -0
  131. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/odbc.py +0 -0
  132. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/order_book.py +0 -0
  133. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/parquet.py +0 -0
  134. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/pit.py +0 -0
  135. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/query.py +0 -0
  136. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/snapshots.py +0 -0
  137. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/split_query_output_by_symbol.py +0 -0
  138. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/symbology_mapping.py +0 -0
  139. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sources/ticks.py +0 -0
  140. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/sql.py +0 -0
  141. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/state.py +0 -0
  142. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/types.py +0 -0
  143. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/__init__.py +0 -0
  144. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/acl.py +0 -0
  145. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/config.py +0 -0
  146. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/debug.py +0 -0
  147. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/default.py +0 -0
  148. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/file.py +0 -0
  149. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/helpers.py +0 -0
  150. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/locator.py +0 -0
  151. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/perf.py +0 -0
  152. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/query.py +0 -0
  153. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/render.py +0 -0
  154. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/render_cli.py +0 -0
  155. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/script.py +0 -0
  156. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/temp.py +0 -0
  157. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/types.py +0 -0
  158. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick/py/utils/tz.py +0 -0
  159. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick_py.egg-info/SOURCES.txt +0 -0
  160. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick_py.egg-info/dependency_links.txt +0 -0
  161. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick_py.egg-info/entry_points.txt +0 -0
  162. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick_py.egg-info/requires.txt +0 -0
  163. {onetick_py-1.180.0 → onetick_py-1.181.0}/src/onetick_py.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetick-py
3
- Version: 1.180.0
3
+ Version: 1.181.0
4
4
  Summary: Python package that allows you to work with OneTick
5
5
  Author-email: solutions <solutions@onetick.com>
6
6
  License-Expression: MIT
@@ -1,2 +1,2 @@
1
1
  # This file was generated automatically. DO NOT CHANGE.
2
- VERSION = '1.180.0'
2
+ VERSION = '1.181.0'
@@ -544,6 +544,8 @@ def join_with_query(
544
544
  default_fields_for_outer_join=None,
545
545
  symbol_time=None,
546
546
  concurrency=None,
547
+ batch_size=None,
548
+ shared_thread_count=None,
547
549
  process_query_async: bool = True,
548
550
  **kwargs,
549
551
  ) -> 'Source':
@@ -621,7 +623,12 @@ def join_with_query(
621
623
  symbol_time : :py:class:`otp.datetime <onetick.py.datetime>`, :py:class:`otp.Operation <onetick.py.Operation>`
622
624
  Time that will be used by Onetick to map the symbol with which ``query`` is executed to the reference data.
623
625
  This parameter is only necessary if the query is expected to perform symbology conversions.
624
- concurrency : int
626
+ concurrency: int
627
+ Specifies concurrency for the joined ``query`` execution.
628
+ Default is 1 (no concurrency).
629
+ batch_size: int
630
+ Specifies batch size for the joined ``query`` execution. Default is 0.
631
+ shared_thread_count: int
625
632
  Specifies number of threads for asynchronous processing of ``query`` per unbound symbol list.
626
633
  By default, the number of threads is 1.
627
634
  process_query_async: bool
@@ -904,11 +911,23 @@ def join_with_query(
904
911
  columns.update(self._get_columns_with_prefix(sub_source, prefix))
905
912
  columns.update(self.columns(skip_meta_fields=True))
906
913
 
914
+ otq_properties = {}
915
+ if concurrency is not None:
916
+ if not isinstance(concurrency, int) or concurrency <= 0:
917
+ raise ValueError(f"Parameter 'concurrency' should be a positive integer, got {concurrency}")
918
+ otq_properties['concurrency'] = concurrency
919
+
920
+ if batch_size is not None:
921
+ if not isinstance(batch_size, int) or batch_size < 0:
922
+ raise ValueError(f"Parameter 'batch_size' should be a non-negative integer, got {batch_size}")
923
+ otq_properties['batch_size'] = batch_size
924
+
907
925
  res = self.copy(columns=columns)
908
926
 
909
927
  res._merge_tmp_otq(sub_source)
910
928
  query_name = sub_source._store_in_tmp_otq(
911
- res._tmp_otq, symbols='_NON_EXISTING_SYMBOL_', operation_suffix="join_with_query"
929
+ res._tmp_otq, symbols='_NON_EXISTING_SYMBOL_', operation_suffix="join_with_query",
930
+ **otq_properties,
912
931
  ) # TODO: combine with _convert_symbol_to_string
913
932
  # ------------------------------------ #
914
933
 
@@ -928,10 +947,10 @@ def join_with_query(
928
947
  default_fields_for_outer_join=default_fields_for_outer_join_str,
929
948
  process_query_asynchronously=process_query_async,
930
949
  )
931
- if concurrency is not None:
932
- if not isinstance(concurrency, int) or concurrency <= 0:
933
- raise ValueError('Wrong value of concurrency parameter passed! concurrency should be a positive integer')
934
- join_params['shared_thread_count'] = concurrency
950
+ if shared_thread_count is not None:
951
+ if not isinstance(shared_thread_count, int) or shared_thread_count <= 0:
952
+ raise ValueError("Parameter 'shared_thread_count' should be a positive integer")
953
+ join_params['shared_thread_count'] = shared_thread_count
935
954
 
936
955
  start_time = kwargs.get('start_time', start)
937
956
  end_time = kwargs.get('end_time', end)
@@ -63,6 +63,14 @@ class TmpOtq:
63
63
  def __init__(self):
64
64
  self.queries = {}
65
65
 
66
+ def __check_params(self, params):
67
+ supported_query_parameters = ('running_query_flag', 'symbol_date', 'concurrency', 'batch_size')
68
+ for param in params:
69
+ if param not in supported_query_parameters:
70
+ raise ValueError(
71
+ f"Query parameter '{param}' is not one of the supported parameters: {supported_query_parameters}"
72
+ )
73
+
66
74
  def add_query(self, query, suffix="", name=None, params=None):
67
75
  """
68
76
  Adds query with a unique generated name to the storage.
@@ -89,6 +97,7 @@ class TmpOtq:
89
97
  raise ValueError(f"There is already a query with name '{name}' in {self.__class__.__name__} storage")
90
98
  if params is None:
91
99
  params = {}
100
+ self.__check_params(params)
92
101
  self.queries[name] = (query, params)
93
102
  return name
94
103
 
@@ -119,7 +128,9 @@ class TmpOtq:
119
128
  def save_to_file(self, query=None, query_name="main_query", file_path=None, file_suffix="",
120
129
  start=None, end=None, start_time_expression=None, end_time_expression=None, timezone=None,
121
130
  running_query_flag=None,
122
- symbol_date=None):
131
+ symbol_date=None,
132
+ concurrency=None,
133
+ batch_size=None):
123
134
  """
124
135
  Saves all queries from the query dict and one more query (if passed);
125
136
  returns absolute path to passed query in file (if passed) or path of resulted file
@@ -146,9 +157,17 @@ class TmpOtq:
146
157
  end time expression for the resulting .otq file
147
158
  timezone: str
148
159
  timezone for the resulting .otq file
160
+ running_query_flag:
161
+ Will be applied only to the query specified in the ``query`` parameter.
149
162
  symbol_date: :py:class:`otp.datetime <onetick.py.datetime>` or :py:class:`datetime.datetime` or int
150
163
  Symbol date for the query or integer in the YYYYMMDD format.
151
164
  Will be applied only to the query specified in the ``query`` parameter.
165
+ concurrency: int
166
+ Concurrency set for the query.
167
+ Will be applied only to the query specified in the ``query`` parameter.
168
+ batch_size: int
169
+ Batch size set for the query.
170
+ Will be applied only to the query specified in the ``query`` parameter.
152
171
 
153
172
  Returns
154
173
  -------
@@ -178,6 +197,10 @@ class TmpOtq:
178
197
  query_params['running_query_flag'] = running_query_flag
179
198
  if symbol_date is not None:
180
199
  query_params['symbol_date'] = symbol_date
200
+ if concurrency is not None:
201
+ query_params['concurrency'] = concurrency
202
+ if batch_size is not None:
203
+ query_params['batch_size'] = batch_size
181
204
  queries_dict[query_name] = (query, query_params)
182
205
 
183
206
  # defining file-wise start/end times and time expressions
@@ -217,6 +240,11 @@ class TmpOtq:
217
240
  if stored_symbol_date is not None:
218
241
  stored_symbol_date = int(utils.symbol_date_to_str(stored_symbol_date))
219
242
  stored_query.set_symbol_date(stored_symbol_date)
243
+ if stored_query_params.get('concurrency') is not None:
244
+ stored_query.set_max_concurrency(stored_query_params['concurrency'])
245
+ if stored_query_params.get('batch_size') is not None:
246
+ stored_query.set_batch_size(stored_query_params['batch_size'])
247
+
220
248
  query_list.append(stored_query)
221
249
 
222
250
  _ = otli.OneTickLib()
@@ -526,7 +526,8 @@ class Source:
526
526
  symbol_date=symbol_date)
527
527
 
528
528
  def _store_in_tmp_otq(self, tmp_otq, operation_suffix="tmp_query", symbols=None, start=None, end=None,
529
- raw=None, add_passthrough=True, name=None, timezone=None, symbol_date=None):
529
+ raw=None, add_passthrough=True, name=None, timezone=None, symbol_date=None,
530
+ concurrency=None, batch_size=None):
530
531
  """
531
532
  Adds this source to the tmp_otq storage
532
533
 
@@ -573,7 +574,13 @@ class Source:
573
574
  else:
574
575
  graph.time_interval_properties().set_timezone(timezone)
575
576
 
576
- params = {'symbol_date': symbol_date} if symbol_date is not None else {}
577
+ params = {}
578
+ if symbol_date is not None:
579
+ params['symbol_date'] = symbol_date
580
+ if concurrency is not None:
581
+ params['concurrency'] = concurrency
582
+ if batch_size is not None:
583
+ params['batch_size'] = batch_size
577
584
  suffix = self._name_suffix(suffix=operation_suffix, separator='__', remove_invalid_symbols=True)
578
585
  return tmp_otq.add_query(graph, suffix=suffix, name=name, params=params)
579
586
 
@@ -17,9 +17,9 @@ from .common import update_node_tick_type
17
17
 
18
18
  class Symbols(Source):
19
19
  """
20
- Construct a source that returns ticks with information about symbols in a database.
21
- The SYMBOL_NAME field is populated with symbol names. The TICK_TYPE field contains
22
- corresponding tick type (enabled by the ``show_tick_type`` parameter).
20
+ Construct a source that returns symbol names from the database.
21
+
22
+ The **SYMBOL_NAME** field will contain symbol names.
23
23
 
24
24
  Parameters
25
25
  ----------
@@ -42,7 +42,7 @@ class Symbols(Source):
42
42
  If you want symbol name to contain literal ``%`` character, you should write ``NQ\\%``.
43
43
  ``\\`` is a special character too, so it need to be escaped too
44
44
  if you want symbol name to contain literal backslash, e.g. ``NQ\\\\M23``.
45
- Default is ``%``.
45
+ Default is ``%`` (any symbol name).
46
46
 
47
47
  for_tick_type: str
48
48
  Fetch only symbols belong to this tick type, if specified.
@@ -54,10 +54,14 @@ class Symbols(Source):
54
54
  Translation is performed, if destination symbology is not empty
55
55
  and is different from that of the queried database.
56
56
  show_original_symbols: bool
57
- Switches original symbol name propagation as a tick field ORIGINAL_SYMBOL_NAME
58
- if symbol name translation is performed (if `symbology` is set).
59
- Note that if this parameter is set to True,
60
- database symbols with missing translations are also propagated.
57
+ Switches original symbol name propagation as a tick field **ORIGINAL_SYMBOL_NAME**
58
+ if symbol name translation is performed (if parameter ``symbology`` is set).
59
+
60
+ .. note::
61
+
62
+ If this parameter is set to True, database symbols with missing translations are also propagated.
63
+ In this case **ORIGINAL_SYMBOL_NAME** will be presented, but **SYMBOL_NAME** field will be empty.
64
+
61
65
  discard_on_match: bool
62
66
  If True, then parameter ``pattern`` filters out symbols to return from the database.
63
67
  cep_method: str
@@ -115,95 +119,152 @@ class Symbols(Source):
115
119
 
116
120
  This class can be used to get a list of all symbols in the database:
117
121
 
118
- >>> symbols = otp.Symbols('US_COMP', date=otp.dt(2022, 3, 1))
119
- >>> otp.run(symbols)
120
- Time SYMBOL_NAME
121
- 0 2022-03-01 AAP
122
- 1 2022-03-01 AAPL
122
+ >>> data = otp.Symbols('US_COMP_SAMPLE', date=otp.dt(2024, 2, 1)) # doctest: +SKIP
123
+ >>> otp.run(data) # doctest: +SKIP
124
+ Time SYMBOL_NAME
125
+ 0 2024-02-01 A
126
+ 1 2024-02-01 AAL
127
+ 2 2024-02-01 AAPL
128
+ 3 2024-02-01 ABBV
129
+ 4 2024-02-01 ABNB
130
+ .. ... ...
131
+ 496 2024-02-01 XYL
132
+ 497 2024-02-01 YUM
133
+ 498 2024-02-01 ZBH
134
+ 499 2024-02-01 ZBRA
135
+ 500 2024-02-01 ZTS
123
136
 
124
137
  By default database name and time interval will be inherited from :py:func:`otp.run <onetick.py.run>`:
125
138
 
126
- >>> data = otp.Symbols()
127
- >>> otp.run(data, symbols='US_COMP::', date=otp.dt(2022, 3, 1))
128
- Time SYMBOL_NAME
129
- 0 2022-03-01 AAP
130
- 1 2022-03-01 AAPL
139
+ >>> data = otp.Symbols() # doctest: +SKIP
140
+ >>> otp.run(data, symbols='US_COMP_SAMPLE::', date=otp.dt(2024, 2, 1)) # doctest: +SKIP
141
+ Time SYMBOL_NAME
142
+ 0 2024-02-01 A
143
+ 1 2024-02-01 AAL
144
+ 2 2024-02-01 AAPL
145
+ .. ... ...
131
146
 
132
- Parameter ``keep_db`` can be used to show database name in a SYMBOL_NAME field.
147
+ Parameter ``keep_db`` can be used to show database name in the output.
133
148
  It is useful when querying symbols for many databases:
134
149
 
135
- >>> data = otp.Symbols(keep_db=True)
136
- >>> data = otp.merge([data], symbols=['SOME_DB::', 'SOME_DB_2::'])
137
- >>> otp.run(data, date=otp.config.default_start_time) # doctest: +ELLIPSIS
138
- Time SYMBOL_NAME
139
- 0 2003-12-01 SOME_DB::S1
140
- 1 2003-12-01 SOME_DB::S2
141
- 2 2003-12-01 SOME_DB_2::S1
142
- 3 2003-12-01 SOME_DB_2::S2
150
+ >>> data = otp.Symbols(keep_db=True) # doctest: +SKIP
151
+ >>> data = data.first(2) # doctest: +SKIP
152
+ >>> data = otp.merge([data], symbols=['US_COMP_SAMPLE::', 'CME_SAMPLE::']) # doctest: +SKIP
153
+ >>> otp.run(data, date=otp.dt(2024, 2, 1)) # doctest: +SKIP
154
+ Time SYMBOL_NAME
155
+ 0 2024-02-01 US_COMP_SAMPLE::A
156
+ 1 2024-02-01 US_COMP_SAMPLE::AAL
157
+ 2 2024-02-01 CME_SAMPLE::CL\\F25
158
+ 3 2024-02-01 CME_SAMPLE::CL\\F26
159
+ .. ... ...
143
160
 
144
161
  By default symbols for all tick types are returned.
145
162
  You can set parameter ``show_tick_type`` to print the tick type for each symbol:
146
163
 
147
- >>> symbols = otp.Symbols('US_COMP', show_tick_type=True)
148
- >>> otp.run(symbols, date=otp.dt(2022, 3, 1))
149
- Time SYMBOL_NAME TICK_TYPE
150
- 0 2022-03-01 AAP TRD
151
- 1 2022-03-01 AAPL QTE
152
- 2 2022-03-01 AAPL TRD
164
+ >>> data = otp.Symbols('US_COMP_SAMPLE', show_tick_type=True) # doctest: +SKIP
165
+ >>> otp.run(data, date=otp.dt(2024, 2, 1)) # doctest: +SKIP
166
+ Time SYMBOL_NAME TICK_TYPE
167
+ 0 2024-02-01 A DAY
168
+ 1 2024-02-01 A LULD
169
+ 2 2024-02-01 A NBBO
170
+ 3 2024-02-01 A QTE
171
+ 4 2024-02-01 A STAT
172
+ .. ... ... ...
153
173
 
154
174
  Parameter ``for_tick_type`` can be used to specify a single tick type for which to return symbols:
155
175
 
156
- >>> symbols = otp.Symbols('US_COMP', show_tick_type=True, for_tick_type='TRD')
157
- >>> otp.run(symbols, date=otp.dt(2022, 3, 1))
158
- Time SYMBOL_NAME TICK_TYPE
159
- 0 2022-03-01 AAP TRD
160
- 1 2022-03-01 AAPL TRD
176
+ >>> data = otp.Symbols('US_COMP_SAMPLE', show_tick_type=True, for_tick_type='TRD') # doctest: +SKIP
177
+ >>> otp.run(data, date=otp.dt(2024, 2, 1)) # doctest: +SKIP
178
+ Time SYMBOL_NAME TICK_TYPE
179
+ 0 2024-02-01 A TRD
180
+ 1 2024-02-01 AAL TRD
181
+ 2 2024-02-01 AAPL TRD
182
+ 3 2024-02-01 ABBV TRD
183
+ 4 2024-02-01 ABNB TRD
184
+ .. ... ... ...
161
185
 
162
186
  Parameter ``pattern`` can be used to specify the pattern to filter symbol names:
163
187
 
164
- >>> symbols = otp.Symbols('US_COMP', show_tick_type=True, for_tick_type='TRD', pattern='AAP_')
165
- >>> otp.run(symbols, date=otp.dt(2022, 3, 1))
188
+ >>> data = otp.Symbols('US_COMP_SAMPLE', show_tick_type=True, for_tick_type='TRD',
189
+ ... pattern='AAP_') # doctest: +SKIP
190
+ >>> otp.run(data, date=otp.dt(2024, 2, 1)) # doctest: +SKIP
166
191
  Time SYMBOL_NAME TICK_TYPE
167
- 0 2022-03-01 AAPL TRD
192
+ 0 2024-02-01 AAPL TRD
168
193
 
169
194
  Parameter ``discard_on_match`` can be used to use ``pattern`` to filter out symbols instead:
170
195
 
171
- >>> symbols = otp.Symbols('US_COMP', show_tick_type=True, for_tick_type='TRD',
172
- ... pattern='AAP_', discard_on_match=True)
173
- >>> otp.run(symbols, date=otp.dt(2022, 3, 1))
174
- Time SYMBOL_NAME TICK_TYPE
175
- 0 2022-03-01 AAP TRD
196
+ >>> data = otp.Symbols('US_COMP_SAMPLE', show_tick_type=True, for_tick_type='TRD',
197
+ ... pattern='AAP_', discard_on_match=True) # doctest: +SKIP
198
+ >>> otp.run(data, date=otp.dt(2024, 2, 1)) # doctest: +SKIP
199
+ Time SYMBOL_NAME TICK_TYPE
200
+ 0 2024-02-01 A TRD
201
+ 1 2024-02-01 AAL TRD
202
+ 2 2024-02-01 ABBV TRD
203
+ 3 2024-02-01 ABNB TRD
204
+ 4 2024-02-01 ABT TRD
205
+ .. ... ... ...
176
206
 
177
207
  ``otp.Symbols`` object can be used to specify symbols for the main query:
178
208
 
179
- >>> symbols = otp.Symbols('US_COMP')
180
- >>> data = otp.DataSource('US_COMP', tick_type='TRD')
181
- >>> result = otp.run(data, symbols=symbols, date=otp.dt(2022, 3, 1))
182
- >>> result['AAPL']
183
- Time PRICE SIZE
184
- 0 2022-03-01 00:00:00.000 1.3 100
185
- 1 2022-03-01 00:00:00.001 1.4 10
186
- 2 2022-03-01 00:00:00.002 1.4 50
187
- >>> result['AAP']
188
- Time PRICE
189
- 0 2022-03-01 00:00:00.000 45.37
190
- 1 2022-03-01 00:00:00.001 45.41
209
+ >>> symbols = otp.Symbols('US_COMP_SAMPLE') # doctest: +SKIP
210
+ >>> symbols = symbols.first(3) # doctest: +SKIP
211
+ >>> data = otp.DataSource('US_COMP_SAMPLE', tick_type='TRD') # doctest: +SKIP
212
+ >>> result = otp.run(data, symbols=symbols, date=otp.dt(2024, 2, 1)) # doctest: +SKIP
213
+ >>> result['AAPL'][['Time', 'PRICE', 'SIZE']] # doctest: +SKIP
214
+ Time PRICE SIZE
215
+ 0 2024-02-01 04:00:00.008283417 186.50 6
216
+ 1 2024-02-01 04:00:00.008290927 185.59 1
217
+ 2 2024-02-01 04:00:00.008291153 185.49 107
218
+ 3 2024-02-01 04:00:00.010381671 185.49 1
219
+ 4 2024-02-01 04:00:00.011224206 185.50 2
220
+ .. ... ... ...
221
+
222
+ >>> result['AAL'][['Time', 'PRICE', 'SIZE']] # doctest: +SKIP
223
+ Time PRICE SIZE
224
+ 0 2024-02-01 04:00:00.097381367 14.33 1
225
+ 1 2024-02-01 04:00:00.138908789 14.37 1
226
+ 2 2024-02-01 04:00:00.726613365 14.36 10
227
+ 3 2024-02-01 04:00:02.195702506 14.36 73
228
+ 4 2024-02-01 04:01:55.268302813 14.39 1
229
+ .. ... ... ...
191
230
 
192
231
  Additional fields of the ``otp.Symbols`` can be used in the main query as symbol parameters:
193
232
 
194
- >>> symbols = otp.Symbols('SOME_DB', show_tick_type=True, keep_db=True)
195
- >>> symbols['PARAM'] = symbols['SYMBOL_NAME'] + '__' + symbols['TICK_TYPE']
196
- >>> data = otp.DataSource('SOME_DB')
197
- >>> data['S_PARAM'] = data.Symbol['PARAM', str]
198
- >>> data = otp.merge([data], symbols=symbols)
199
- >>> otp.run(data)
200
- Time X S_PARAM
201
- 0 2003-12-01 00:00:00.000 1 SOME_DB::S1__TT
202
- 1 2003-12-01 00:00:00.000 -3 SOME_DB::S2__TT
203
- 2 2003-12-01 00:00:00.001 2 SOME_DB::S1__TT
204
- 3 2003-12-01 00:00:00.001 -2 SOME_DB::S2__TT
205
- 4 2003-12-01 00:00:00.002 3 SOME_DB::S1__TT
206
- 5 2003-12-01 00:00:00.002 -1 SOME_DB::S2__TT
233
+ >>> symbols = otp.Symbols('US_COMP_SAMPLE', show_tick_type=True, for_tick_type='TRD') # doctest: +SKIP
234
+ >>> symbols['PARAM'] = symbols['SYMBOL_NAME'] + '__' + symbols['TICK_TYPE'] # doctest: +SKIP
235
+ >>> data = otp.DataSource('US_COMP_SAMPLE', tick_type='TRD') # doctest: +SKIP
236
+ >>> data = data.first(1) # doctest: +SKIP
237
+ >>> data['S_PARAM'] = data.Symbol['PARAM', str] # doctest: +SKIP
238
+ >>> data = otp.merge([data], symbols=symbols) # doctest: +SKIP
239
+ >>> data = data[['PRICE', 'SIZE', 'S_PARAM']] # doctest: +SKIP
240
+ >>> otp.run(data, date=otp.dt(2024, 2, 1)) # doctest: +SKIP
241
+ Time PRICE SIZE S_PARAM
242
+ 0 2024-02-01 04:00:00.001974784 193.800 4 HSY__TRD
243
+ 1 2024-02-01 04:00:00.003547904 57.810 18 OXY__TRD
244
+ 2 2024-02-01 04:00:00.006354688 42.810 30 DVN__TRD
245
+ 3 2024-02-01 04:00:00.007310080 165.890 9 WMT__TRD
246
+ 4 2024-02-01 04:00:00.007833957 43.170 22 INTC__TRD
247
+ .. ... ... ... ...
248
+
249
+ Use parameter ``symbology`` to specify different symbology to translate to.
250
+ You can also use parameter ``show_original_symbols`` to print original symbols.
251
+ Note that some symbols may not have a translation in target symbology, so their names will be empty:
252
+
253
+ >>> data = otp.Symbols('US_COMP', for_tick_type='TRD',
254
+ ... symbology='FGV', show_original_symbols=True) # doctest: +SKIP
255
+ >>> otp.run(data, start=otp.dt(2023, 5, 15, 9, 30), end=otp.dt(2023, 5, 15, 9, 30, 1)) # doctest: +SKIP
256
+ Time SYMBOL_NAME ORIGINAL_SYMBOL_NAME
257
+ 0 2023-05-15 09:30:00 BBG000C2V3D6 US_COMP::A
258
+ 1 2023-05-15 09:30:00 BBG00B3T3HD3 US_COMP::AA
259
+ 2 2023-05-15 09:30:00 BBG01B0JRCS6 US_COMP::AAA
260
+ 3 2023-05-15 09:30:00 BBG00LPXX872 US_COMP::AAAU
261
+ 4 2023-05-15 09:30:00 BBG00YZC2Z91 US_COMP::AAC
262
+ ... ... ... ...
263
+ 10946 2023-05-15 09:30:00 US_COMP::ZXIET
264
+ 10947 2023-05-15 09:30:00 US_COMP::ZXZZT
265
+ 10948 2023-05-15 09:30:00 BBG019XSYC89 US_COMP::ZYME
266
+ 10949 2023-05-15 09:30:00 BBG007BBS8B7 US_COMP::ZYNE
267
+ 10950 2023-05-15 09:30:00 BBG000BJBXZ2 US_COMP::ZYXI
207
268
 
208
269
  **Escaping special characters in the pattern**
209
270
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetick-py
3
- Version: 1.180.0
3
+ Version: 1.181.0
4
4
  Summary: Python package that allows you to work with OneTick
5
5
  Author-email: solutions <solutions@onetick.com>
6
6
  License-Expression: MIT
File without changes
File without changes
File without changes
File without changes