onetick-py 1.166.0__tar.gz → 1.168.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 (160) hide show
  1. {onetick_py-1.166.0 → onetick_py-1.168.0}/PKG-INFO +3 -2
  2. {onetick_py-1.166.0 → onetick_py-1.168.0}/pyproject.toml +2 -1
  3. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/lib/instance.py +1 -1
  4. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/__init__.py +3 -2
  5. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/_version.py +1 -1
  6. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/compatibility.py +9 -0
  7. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/joins.py +43 -28
  8. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick_py.egg-info/PKG-INFO +3 -2
  9. {onetick_py-1.166.0 → onetick_py-1.168.0}/LICENSE +0 -0
  10. {onetick_py-1.166.0 → onetick_py-1.168.0}/README.md +0 -0
  11. {onetick_py-1.166.0 → onetick_py-1.168.0}/requirements.strict.txt +0 -0
  12. {onetick_py-1.166.0 → onetick_py-1.168.0}/requirements.txt +0 -0
  13. {onetick_py-1.166.0 → onetick_py-1.168.0}/setup.cfg +0 -0
  14. {onetick_py-1.166.0 → onetick_py-1.168.0}/setup.py +0 -0
  15. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/locator_parser/__init__.py +0 -0
  16. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/locator_parser/acl.py +0 -0
  17. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/locator_parser/actions.py +0 -0
  18. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/locator_parser/common.py +0 -0
  19. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/locator_parser/io.py +0 -0
  20. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/locator_parser/locator.py +0 -0
  21. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/__init__.py +0 -0
  22. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/doc_utilities/__init__.py +0 -0
  23. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/doc_utilities/napoleon.py +0 -0
  24. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/doc_utilities/ot_doctest.py +0 -0
  25. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/doc_utilities/snippets.py +0 -0
  26. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/lib/__init__.py +0 -0
  27. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/_stack_info.py +0 -0
  28. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/__init__.py +0 -0
  29. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/_base.py +0 -0
  30. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/_docs.py +0 -0
  31. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/compute.py +0 -0
  32. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/functions.py +0 -0
  33. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/generic.py +0 -0
  34. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/high_low.py +0 -0
  35. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/num_distinct.py +0 -0
  36. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/order_book.py +0 -0
  37. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/aggregations/other.py +0 -0
  38. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/backports.py +0 -0
  39. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/cache.py +0 -0
  40. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/callback/__init__.py +0 -0
  41. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/callback/callback.py +0 -0
  42. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/callback/callbacks.py +0 -0
  43. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/configuration.py +0 -0
  44. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/__init__.py +0 -0
  45. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_csv_inspector.py +0 -0
  46. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/__init__.py +0 -0
  47. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_manually_bound_value.py +0 -0
  48. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_nodes_history.py +0 -0
  49. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_op_utils/__init__.py +0 -0
  50. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_op_utils/every_operand.py +0 -0
  51. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_op_utils/is_const.py +0 -0
  52. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_per_tick_scripts/tick_list_sort_template.script +0 -0
  53. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_proxy_node.py +0 -0
  54. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_state_objects.py +0 -0
  55. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_internal/_state_vars.py +0 -0
  56. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/__init__.py +0 -0
  57. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/_symbol_param.py +0 -0
  58. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/schema.py +0 -0
  59. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/__init__.py +0 -0
  60. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/aggregations.py +0 -0
  61. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/applyers.py +0 -0
  62. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/columns.py +0 -0
  63. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/data_quality.py +0 -0
  64. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/debugs.py +0 -0
  65. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/drops.py +0 -0
  66. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/fields.py +0 -0
  67. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/filters.py +0 -0
  68. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/merges.py +0 -0
  69. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/misc.py +0 -0
  70. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/pandases.py +0 -0
  71. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/renames.py +0 -0
  72. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/sorts.py +0 -0
  73. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/switches.py +0 -0
  74. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/symbols.py +0 -0
  75. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/times.py +0 -0
  76. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/source_methods/writes.py +0 -0
  77. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/symbol.py +0 -0
  78. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/_source/tmp_otq.py +0 -0
  79. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column.py +0 -0
  80. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/__init__.py +0 -0
  81. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/_methods/__init__.py +0 -0
  82. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/_methods/_internal.py +0 -0
  83. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/_methods/conversions.py +0 -0
  84. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/_methods/methods.py +0 -0
  85. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/_methods/op_types.py +0 -0
  86. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/accessors/__init__.py +0 -0
  87. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/accessors/_accessor.py +0 -0
  88. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/accessors/decimal_accessor.py +0 -0
  89. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/accessors/dt_accessor.py +0 -0
  90. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/accessors/float_accessor.py +0 -0
  91. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/accessors/str_accessor.py +0 -0
  92. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/column_operations/base.py +0 -0
  93. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/cut_builder.py +0 -0
  94. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/db_constants.py +0 -0
  95. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/eval_query.py +0 -0
  96. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/lambda_object.py +0 -0
  97. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/multi_output_source.py +0 -0
  98. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/per_tick_script.py +0 -0
  99. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/query_inspector.py +0 -0
  100. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/core/source.py +0 -0
  101. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/db/__init__.py +0 -0
  102. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/db/_inspection.py +0 -0
  103. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/db/db.py +0 -0
  104. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/db/utils.py +0 -0
  105. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/docs/__init__.py +0 -0
  106. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/docs/docstring_parser.py +0 -0
  107. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/docs/utils.py +0 -0
  108. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/functions.py +0 -0
  109. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/license.py +0 -0
  110. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/log.py +0 -0
  111. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/math.py +0 -0
  112. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/misc.py +0 -0
  113. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/oqd/__init__.py +0 -0
  114. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/oqd/eps.py +0 -0
  115. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/oqd/sources.py +0 -0
  116. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/otq.py +0 -0
  117. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/pyomd_mock.py +0 -0
  118. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/run.py +0 -0
  119. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/servers.py +0 -0
  120. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/session.py +0 -0
  121. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/__init__.py +0 -0
  122. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/cache.py +0 -0
  123. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/common.py +0 -0
  124. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/csv.py +0 -0
  125. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/custom.py +0 -0
  126. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/data_file.py +0 -0
  127. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/data_source.py +0 -0
  128. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/empty.py +0 -0
  129. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/odbc.py +0 -0
  130. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/order_book.py +0 -0
  131. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/parquet.py +0 -0
  132. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/pit.py +0 -0
  133. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/query.py +0 -0
  134. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/snapshots.py +0 -0
  135. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/split_query_output_by_symbol.py +0 -0
  136. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/symbology_mapping.py +0 -0
  137. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/symbols.py +0 -0
  138. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sources/ticks.py +0 -0
  139. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/sql.py +0 -0
  140. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/state.py +0 -0
  141. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/types.py +0 -0
  142. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/__init__.py +0 -0
  143. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/acl.py +0 -0
  144. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/config.py +0 -0
  145. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/default.py +0 -0
  146. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/file.py +0 -0
  147. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/helpers.py +0 -0
  148. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/locator.py +0 -0
  149. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/perf.py +0 -0
  150. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/query.py +0 -0
  151. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/render.py +0 -0
  152. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/script.py +0 -0
  153. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/temp.py +0 -0
  154. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/types.py +0 -0
  155. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick/py/utils/tz.py +0 -0
  156. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick_py.egg-info/SOURCES.txt +0 -0
  157. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick_py.egg-info/dependency_links.txt +0 -0
  158. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick_py.egg-info/entry_points.txt +0 -0
  159. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick_py.egg-info/requires.txt +0 -0
  160. {onetick_py-1.166.0 → onetick_py-1.168.0}/src/onetick_py.egg-info/top_level.txt +0 -0
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetick-py
3
- Version: 1.166.0
3
+ Version: 1.168.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
7
7
  Project-URL: Documentation, https://docs.pip.distribution.sol.onetick.com
8
- Project-URL: OneTick, https://onetick.com/
8
+ Project-URL: OneTick, https://onetick.com
9
+ Project-URL: GitHub, https://github.com/onemarketdata/onetick-py
9
10
  Classifier: Topic :: Database :: Front-Ends
10
11
  Classifier: Topic :: Scientific/Engineering
11
12
  Classifier: Programming Language :: Python :: 3.9
@@ -34,7 +34,8 @@ classifiers = [
34
34
 
35
35
  [project.urls]
36
36
  Documentation = "https://docs.pip.distribution.sol.onetick.com"
37
- OneTick = "https://onetick.com/"
37
+ OneTick = "https://onetick.com"
38
+ GitHub = "https://github.com/onemarketdata/onetick-py"
38
39
 
39
40
  [tool.setuptools.packages.find]
40
41
  where = ["src"]
@@ -5,7 +5,7 @@ import gc
5
5
  import inspect
6
6
  from enum import Enum
7
7
 
8
- if os.getenv("OTP_WEBAPI"):
8
+ if os.getenv('OTP_WEBAPI', default='').lower() not in ('0', 'false', 'no', ''):
9
9
  import onetick.query_webapi as otq
10
10
 
11
11
  class OneTickLibMock:
@@ -2,7 +2,7 @@
2
2
  import os
3
3
  from . import _version
4
4
  __version__ = _version.VERSION
5
- __webapi__: bool = bool(os.getenv("OTP_WEBAPI"))
5
+ __webapi__: bool = os.getenv('OTP_WEBAPI', default='').lower() not in ('0', 'false', 'no', '')
6
6
 
7
7
 
8
8
  def __validate_onetick_query_integration(): # noqa
@@ -77,7 +77,8 @@ def __validate_onetick_query_integration(): # noqa
77
77
  if _otq_import_ex is None:
78
78
  return
79
79
 
80
- # webapi is installed to pip and OTP_WEBAPI=1, we don't need to raise any exception
80
+ # PY-1033: if we can't import onetick.query, but can import onetick.query_webapi
81
+ # then we can just use it and don't need to raise any exception (even if OTP_WEBAPI is not set)
81
82
  try:
82
83
  import onetick.query_webapi
83
84
  __webapi__ = True
@@ -1,2 +1,2 @@
1
1
  # This file was generated automatically. DO NOT CHANGE.
2
- VERSION = '1.166.0'
2
+ VERSION = '1.168.0'
@@ -758,3 +758,12 @@ def is_include_market_order_ticks_supported(**kwargs):
758
758
  return _is_min_build_or_version(1.25, 20241229055942,
759
759
  20240812120000, min_update_number=2,
760
760
  **kwargs)
761
+
762
+
763
+ def is_join_with_query_symbol_time_otq_supported():
764
+ # 20241209: Fixed 0034770: hours/minutes/seconds part of otq parameter _SYMBOL_TIME, expressed in
765
+ # milliseconds since 1970/01/01 00:00:00 GMT, is ignored
766
+ # 20250219: Implemented 0035092: passing otq param _SYMBOL_TIME should be just like setting symbol_date
767
+ # to the equivalent value, except in YYYYMMDDhhmmss format
768
+ return _is_min_build_or_version(None, None,
769
+ 20250227120000)
@@ -14,6 +14,7 @@ from onetick.py.core.eval_query import prepare_params
14
14
  from onetick.py.otq import otq
15
15
  from onetick.py.compatibility import (
16
16
  is_supported_point_in_time,
17
+ is_join_with_query_symbol_time_otq_supported,
17
18
  is_join_with_snapshot_snapshot_fields_parameter_supported,
18
19
  )
19
20
 
@@ -72,6 +73,19 @@ def _columns_to_params_for_joins(columns, query_params=False):
72
73
  else:
73
74
  raise ValueError('Parameter symbol_time has to be a datetime value!')
74
75
 
76
+ elif key == '_SYMBOL_TIME' and query_params:
77
+ # hack to support passing _SYMBOL_TIME to called query as a parameter
78
+ if dtype is otp.nsectime:
79
+ convert_rule += get_msecs_expression(ott.value2str(value))
80
+ elif dtype is str:
81
+ ns = f'PARSE_NSECTIME("%Y%m%d%H%M%S", {ott.value2str(value)}, _TIMEZONE)'
82
+ convert_rule += get_msecs_expression(ns)
83
+ elif dtype is otp.msectime:
84
+ # for backward compatibility
85
+ convert_rule += get_msecs_expression(value)
86
+ else:
87
+ raise ValueError('Parameter symbol_time has to be a datetime value!')
88
+
75
89
  elif dtype is str:
76
90
  if are_strings(getattr(value, "dtype", None)):
77
91
  convert_rule += str(value)
@@ -80,17 +94,7 @@ def _columns_to_params_for_joins(columns, query_params=False):
80
94
  elif dtype is otp.msectime:
81
95
  convert_rule += get_msecs_expression(value)
82
96
  elif dtype is otp.nsectime:
83
- if key == '_SYMBOL_TIME' and query_params:
84
- # hack to support passing _SYMBOL_TIME to called query as a parameter
85
- warnings.warn(
86
- 'Query parameter _SYMBOL_TIME passed to join_with_query! '
87
- 'This is deprecated. Please use a dedicated `symbol_time` parameter of the '
88
- 'join_with_query function',
89
- FutureWarning,
90
- stacklevel=3,
91
- )
92
- convert_rule += get_msecs_expression(value)
93
- elif query_params:
97
+ if query_params:
94
98
  # this can be used for query params but cannot be used for symbol params
95
99
  # overall it's better
96
100
  convert_rule += "'NSECTIME('+tostring(NSECTIME_TO_LONG(" + str(value) + "))+')'"
@@ -672,10 +676,10 @@ def join_with_query(
672
676
  Function object as query is also supported (Note it will be executed only once in python's code):
673
677
 
674
678
  >>> def func(symbol):
675
- ... d = otp.Ticks(TYPE=["six"])
676
- ... d = d.update(dict(TYPE="three"), where=(symbol.name == "3")) # symbol is always converted to string
677
- ... d["TYPE"] = symbol['PREF'] + d["TYPE"] + symbol['POST']
678
- ... return d
679
+ ... d = otp.Ticks(TYPE=["six"])
680
+ ... d = d.update(dict(TYPE="three"), where=(symbol.name == "3")) # symbol is always converted to string
681
+ ... d["TYPE"] = symbol['PREF'] + d["TYPE"] + symbol['POST']
682
+ ... return d
679
683
  >>> # OTdirective: snippet-name: Special functions.join with query.with a function
680
684
  >>> data = otp.Ticks(A=[1, 2], B=[2, 4])
681
685
  >>> res = data.join_with_query(func, how='inner', symbol=(data['A'] + data['B'], dict(PREF="_", POST="$")))
@@ -689,9 +693,9 @@ def join_with_query(
689
693
  accessible through the "symbol" object:
690
694
 
691
695
  >>> def func(symbol):
692
- ... d = otp.Ticks(TYPE=["six"])
693
- ... d["TYPE"] = symbol['PREF'] + d["TYPE"] + symbol['POST']
694
- ... return d
696
+ ... d = otp.Ticks(TYPE=["six"])
697
+ ... d["TYPE"] = symbol['PREF'] + d["TYPE"] + symbol['POST']
698
+ ... return d
695
699
  >>> # OTdirective: snippet-name: 'Source' operations.join with query.source as symbol;
696
700
  >>> data = otp.Ticks(A=[1, 2], B=[2, 4], PREF=["_", "$"], POST=["$", "_"])
697
701
  >>> res = data.join_with_query(func, how='inner', symbol=data)
@@ -834,22 +838,20 @@ def join_with_query(
834
838
  'object (dict or Source), or a tuple containing both'
835
839
  )
836
840
 
837
- # adding symbol time
838
841
  if '_PARAM_SYMBOL_TIME' in converted_symbol_param_columns.keys():
839
842
  warnings.warn(
840
843
  '"_PARAM_SYMBOL_TIME" explicitly passed among join_with_query symbol parameters! '
841
- 'This is deprecated - please use symbol_time parameter instead. '
842
- 'If you specify symbol_time parameter, it will override the explicitly passed value',
844
+ 'This is deprecated - please use symbol_time parameter instead.',
845
+ FutureWarning,
846
+ stacklevel=2,
847
+ )
848
+ if '_SYMBOL_TIME' in params.keys():
849
+ warnings.warn(
850
+ 'Query parameter "_SYMBOL_TIME" passed to join_with_query! '
851
+ 'This is deprecated. Please use a dedicated `symbol_time` parameter.',
843
852
  FutureWarning,
844
853
  stacklevel=2,
845
854
  )
846
- if symbol_time is not None:
847
- if ott.get_object_type(symbol_time) is not otp.nsectime and ott.get_object_type(symbol_time) is not str:
848
- raise ValueError(
849
- f'Parameter of type {ott.get_object_type(symbol_time)} passed as symbol_time! '
850
- 'This parameter only supports datetime values or strings'
851
- )
852
- converted_symbol_param_columns['_PARAM_SYMBOL_TIME'] = symbol_time
853
855
 
854
856
  # prepare temporary file
855
857
  # ------------------------------------ #
@@ -875,6 +877,19 @@ def join_with_query(
875
877
  if not sub_source._is_unbound_required():
876
878
  sub_source += otp.Empty()
877
879
 
880
+ # adding symbol time
881
+ if symbol_time is not None:
882
+ if ott.get_object_type(symbol_time) is not otp.nsectime and ott.get_object_type(symbol_time) is not str:
883
+ raise ValueError(
884
+ f'Parameter of type {ott.get_object_type(symbol_time)} passed as symbol_time! '
885
+ 'This parameter only supports datetime values or strings'
886
+ )
887
+ if is_join_with_query_symbol_time_otq_supported():
888
+ params = params.copy()
889
+ params['_SYMBOL_TIME'] = symbol_time
890
+ else:
891
+ converted_symbol_param_columns['_PARAM_SYMBOL_TIME'] = symbol_time
892
+
878
893
  params_str = _columns_to_params_for_joins(params, query_params=True)
879
894
  symbol_params_str = _columns_to_params_for_joins(converted_symbol_param_columns)
880
895
 
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetick-py
3
- Version: 1.166.0
3
+ Version: 1.168.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
7
7
  Project-URL: Documentation, https://docs.pip.distribution.sol.onetick.com
8
- Project-URL: OneTick, https://onetick.com/
8
+ Project-URL: OneTick, https://onetick.com
9
+ Project-URL: GitHub, https://github.com/onemarketdata/onetick-py
9
10
  Classifier: Topic :: Database :: Front-Ends
10
11
  Classifier: Topic :: Scientific/Engineering
11
12
  Classifier: Programming Language :: Python :: 3.9
File without changes
File without changes
File without changes
File without changes