onetick-py 1.181.0__tar.gz → 1.182.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.181.0/src/onetick_py.egg-info → onetick_py-1.182.0}/PKG-INFO +1 -1
  2. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/_version.py +1 -1
  3. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/fields.py +4 -0
  4. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/filters.py +62 -0
  5. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/source.py +1 -0
  6. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/render.py +6 -0
  7. {onetick_py-1.181.0 → onetick_py-1.182.0/src/onetick_py.egg-info}/PKG-INFO +1 -1
  8. {onetick_py-1.181.0 → onetick_py-1.182.0}/LICENSE +0 -0
  9. {onetick_py-1.181.0 → onetick_py-1.182.0}/README.md +0 -0
  10. {onetick_py-1.181.0 → onetick_py-1.182.0}/pyproject.toml +0 -0
  11. {onetick_py-1.181.0 → onetick_py-1.182.0}/requirements.strict.txt +0 -0
  12. {onetick_py-1.181.0 → onetick_py-1.182.0}/requirements.txt +0 -0
  13. {onetick_py-1.181.0 → onetick_py-1.182.0}/setup.cfg +0 -0
  14. {onetick_py-1.181.0 → onetick_py-1.182.0}/setup.py +0 -0
  15. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/locator_parser/__init__.py +0 -0
  16. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/locator_parser/acl.py +0 -0
  17. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/locator_parser/actions.py +0 -0
  18. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/locator_parser/common.py +0 -0
  19. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/locator_parser/io.py +0 -0
  20. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/locator_parser/locator.py +0 -0
  21. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/__init__.py +0 -0
  22. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/doc_utilities/__init__.py +0 -0
  23. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/doc_utilities/napoleon.py +0 -0
  24. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/doc_utilities/ot_doctest.py +0 -0
  25. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/doc_utilities/snippets.py +0 -0
  26. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/lib/__init__.py +0 -0
  27. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/lib/instance.py +0 -0
  28. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/__init__.py +0 -0
  29. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/_stack_info.py +0 -0
  30. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/__init__.py +0 -0
  31. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/_base.py +0 -0
  32. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/_docs.py +0 -0
  33. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/compute.py +0 -0
  34. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/functions.py +0 -0
  35. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/generic.py +0 -0
  36. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/high_low.py +0 -0
  37. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/num_distinct.py +0 -0
  38. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/order_book.py +0 -0
  39. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/aggregations/other.py +0 -0
  40. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/backports.py +0 -0
  41. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/cache.py +0 -0
  42. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/callback/__init__.py +0 -0
  43. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/callback/callback.py +0 -0
  44. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/callback/callbacks.py +0 -0
  45. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/compatibility.py +0 -0
  46. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/configuration.py +0 -0
  47. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/__init__.py +0 -0
  48. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_csv_inspector.py +0 -0
  49. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/__init__.py +0 -0
  50. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_manually_bound_value.py +0 -0
  51. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_nodes_history.py +0 -0
  52. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_op_utils/__init__.py +0 -0
  53. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_op_utils/every_operand.py +0 -0
  54. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_op_utils/is_const.py +0 -0
  55. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_per_tick_scripts/tick_list_sort_template.script +0 -0
  56. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_proxy_node.py +0 -0
  57. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_state_objects.py +0 -0
  58. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_internal/_state_vars.py +0 -0
  59. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/__init__.py +0 -0
  60. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/_symbol_param.py +0 -0
  61. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/schema.py +0 -0
  62. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/__init__.py +0 -0
  63. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/aggregations.py +0 -0
  64. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/applyers.py +0 -0
  65. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/columns.py +0 -0
  66. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/data_quality.py +0 -0
  67. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/debugs.py +0 -0
  68. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/drops.py +0 -0
  69. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/joins.py +0 -0
  70. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/merges.py +0 -0
  71. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/misc.py +0 -0
  72. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/pandases.py +0 -0
  73. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/renames.py +0 -0
  74. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/sorts.py +0 -0
  75. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/switches.py +0 -0
  76. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/symbols.py +0 -0
  77. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/times.py +0 -0
  78. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/source_methods/writes.py +0 -0
  79. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/symbol.py +0 -0
  80. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/_source/tmp_otq.py +0 -0
  81. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column.py +0 -0
  82. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/__init__.py +0 -0
  83. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/_methods/__init__.py +0 -0
  84. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/_methods/_internal.py +0 -0
  85. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/_methods/conversions.py +0 -0
  86. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/_methods/methods.py +0 -0
  87. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/_methods/op_types.py +0 -0
  88. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/accessors/__init__.py +0 -0
  89. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/accessors/_accessor.py +0 -0
  90. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/accessors/decimal_accessor.py +0 -0
  91. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/accessors/dt_accessor.py +0 -0
  92. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/accessors/float_accessor.py +0 -0
  93. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/accessors/str_accessor.py +0 -0
  94. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/column_operations/base.py +0 -0
  95. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/cut_builder.py +0 -0
  96. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/db_constants.py +0 -0
  97. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/eval_query.py +0 -0
  98. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/lambda_object.py +0 -0
  99. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/multi_output_source.py +0 -0
  100. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/per_tick_script.py +0 -0
  101. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/core/query_inspector.py +0 -0
  102. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/db/__init__.py +0 -0
  103. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/db/_inspection.py +0 -0
  104. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/db/db.py +0 -0
  105. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/db/utils.py +0 -0
  106. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/docs/__init__.py +0 -0
  107. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/docs/docstring_parser.py +0 -0
  108. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/docs/utils.py +0 -0
  109. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/functions.py +0 -0
  110. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/license.py +0 -0
  111. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/log.py +0 -0
  112. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/math.py +0 -0
  113. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/misc.py +0 -0
  114. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/oqd/__init__.py +0 -0
  115. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/oqd/eps.py +0 -0
  116. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/oqd/sources.py +0 -0
  117. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/otq.py +0 -0
  118. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/pyomd_mock.py +0 -0
  119. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/run.py +0 -0
  120. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/servers.py +0 -0
  121. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/session.py +0 -0
  122. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/__init__.py +0 -0
  123. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/cache.py +0 -0
  124. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/common.py +0 -0
  125. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/csv.py +0 -0
  126. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/custom.py +0 -0
  127. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/data_file.py +0 -0
  128. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/data_source.py +0 -0
  129. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/dataframe.py +0 -0
  130. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/empty.py +0 -0
  131. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/odbc.py +0 -0
  132. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/order_book.py +0 -0
  133. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/parquet.py +0 -0
  134. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/pit.py +0 -0
  135. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/query.py +0 -0
  136. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/snapshots.py +0 -0
  137. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/split_query_output_by_symbol.py +0 -0
  138. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/symbology_mapping.py +0 -0
  139. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/symbols.py +0 -0
  140. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sources/ticks.py +0 -0
  141. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/sql.py +0 -0
  142. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/state.py +0 -0
  143. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/types.py +0 -0
  144. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/__init__.py +0 -0
  145. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/acl.py +0 -0
  146. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/config.py +0 -0
  147. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/debug.py +0 -0
  148. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/default.py +0 -0
  149. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/file.py +0 -0
  150. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/helpers.py +0 -0
  151. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/locator.py +0 -0
  152. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/perf.py +0 -0
  153. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/query.py +0 -0
  154. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/render_cli.py +0 -0
  155. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/script.py +0 -0
  156. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/temp.py +0 -0
  157. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/types.py +0 -0
  158. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick/py/utils/tz.py +0 -0
  159. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick_py.egg-info/SOURCES.txt +0 -0
  160. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick_py.egg-info/dependency_links.txt +0 -0
  161. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick_py.egg-info/entry_points.txt +0 -0
  162. {onetick_py-1.181.0 → onetick_py-1.182.0}/src/onetick_py.egg-info/requires.txt +0 -0
  163. {onetick_py-1.181.0 → onetick_py-1.182.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.181.0
3
+ Version: 1.182.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.181.0'
2
+ VERSION = '1.182.0'
@@ -285,6 +285,7 @@ def _update_field(self: 'Source', field, value):
285
285
  are_ints_not_time(field.dtype, value_dtype) and
286
286
  not issubclass(field.dtype, bool) and not issubclass(value_dtype, bool) and
287
287
  value_dtype is not field.dtype
288
+ and not isinstance(field, _StateColumn)
288
289
  ):
289
290
  # case for converting values between int based types, like long or byte
290
291
  convert_to_type = value_dtype
@@ -298,6 +299,9 @@ def _update_field(self: 'Source', field, value):
298
299
  field._dtype = value_dtype
299
300
  type_changes = True
300
301
 
302
+ if isinstance(field, _StateColumn) and (convert_to_type is not None or type_changes):
303
+ raise ValueError(f"The type of the state variable {field.name} can't be changed")
304
+
301
305
  # for aliases, TIMESTAMP ~ Time as an example
302
306
  key = str(field)
303
307
 
@@ -1000,3 +1000,65 @@ def character_present(
1000
1000
  ))
1001
1001
 
1002
1002
  return self
1003
+
1004
+
1005
+ def primary_exch(self: 'Source', discard_on_match: bool = False) -> Tuple['Source', 'Source']:
1006
+ """
1007
+ Propagates the tick if its exchange is the PRIMARY exchange of the security. The primary exchange information
1008
+ is supplied through the Reference Database. It expects the security level symbol (IBM, not IBM.N) and works
1009
+ by looking for a field called ``EXCHANGE`` and filtering out ticks where the field does not match
1010
+ the primary exchange for the security.
1011
+
1012
+ .. note::
1013
+ This EP may not work correctly with OneTick Cloud databases, due to differences
1014
+ in format of exchange names in RefDB and in tick data.
1015
+
1016
+ Parameters
1017
+ ----------
1018
+ discard_on_match: bool
1019
+ When set to ``True`` only ticks from non-primary exchange are propagated,
1020
+ otherwise ticks from primary exchange are propagated.
1021
+
1022
+ See also
1023
+ --------
1024
+ **PRIMARY_EXCH** OneTick event processor
1025
+
1026
+ Returns
1027
+ -------
1028
+ Two :class:`Source` for each of if-else branches
1029
+
1030
+ Examples
1031
+ --------
1032
+
1033
+ Get ticks from primary exchange:
1034
+
1035
+ >>> src = otp.DataSource('SOME_DB', tick_type='TRD', symbols='AAA', date=otp.date(2003, 12, 1)) # doctest: +SKIP
1036
+ >>> src, _ = src.primary_exch() # doctest: +SKIP
1037
+ >>> otp.run(src, symbol_date=otp.date(2003, 12, 1)) # doctest: +SKIP
1038
+ Time PRICE SIZE EXCHANGE
1039
+ 0 2003-12-01 00:00:00.001 26.5 150 B
1040
+ 1 2003-12-01 00:00:00.002 25.7 20 B
1041
+
1042
+ Get all ticks, but mark ticks from primary exchange in column ``T``:
1043
+
1044
+ >>> src = otp.DataSource('SOME_DB', tick_type='TRD', symbols='AAA', date=otp.date(2003, 12, 1)) # doctest: +SKIP
1045
+ >>> primary, other = src.primary_exch() # doctest: +SKIP
1046
+ >>> primary['T'] = 1 # doctest: +SKIP
1047
+ >>> other['T'] = 0 # doctest: +SKIP
1048
+ >>> data = otp.merge([primary, other]) # doctest: +SKIP
1049
+ >>> otp.run(src, symbol_date=otp.date(2003, 12, 1)) # doctest: +SKIP
1050
+ Time PRICE SIZE EXCHANGE T
1051
+ 0 2003-12-01 00:00:00.000 25.2 100 A 0
1052
+ 1 2003-12-01 00:00:00.001 26.5 150 B 1
1053
+ 2 2003-12-01 00:00:00.002 25.7 20 B 1
1054
+ 3 2003-12-01 00:00:00.003 24.8 40 A 0
1055
+ """
1056
+ source = self.copy(ep=otq.PrimaryExch(discard_on_match=discard_on_match))
1057
+
1058
+ if_source = source.copy()
1059
+ if_source.node().out_pin("IF")
1060
+
1061
+ else_source = source.copy()
1062
+ else_source.node().out_pin("ELSE")
1063
+
1064
+ return if_source, else_source
@@ -1689,6 +1689,7 @@ class Source:
1689
1689
  time_filter,
1690
1690
  skip_bad_tick,
1691
1691
  character_present,
1692
+ primary_exch,
1692
1693
  )
1693
1694
  from ._source.source_methods.drops import ( # type: ignore[misc]
1694
1695
  drop,
@@ -163,6 +163,7 @@ class Node:
163
163
  params: dict = field(default_factory=dict)
164
164
  sinks: List[str] = field(default_factory=list)
165
165
  symbols: list = field(default_factory=list)
166
+ name: Optional[str] = field(default=None)
166
167
 
167
168
 
168
169
  @dataclass
@@ -776,6 +777,8 @@ def read_otq(path: str, parse_eval_from_params: bool = False) -> Optional[Graph]
776
777
  _save_dependency(security[0], current_query)
777
778
  elif node_param == "TICK_TYPE":
778
779
  current_query.nodes[node_id].tick_type = value
780
+ elif node_param == "NAME":
781
+ current_query.nodes[node_id].name = value
779
782
  else:
780
783
  _save_param(current_query.nodes[node_id].config, node_param, value)
781
784
 
@@ -944,6 +947,9 @@ def build_node(graphs: GraphStorage, node: Node, config: Config):
944
947
  if node.tick_type:
945
948
  table.cell([node.tick_type])
946
949
 
950
+ if node.name:
951
+ table.cell([f"<I>{node.name}</I>"])
952
+
947
953
  if config.render_debug_info:
948
954
  table.cell([node.id])
949
955
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetick-py
3
- Version: 1.181.0
3
+ Version: 1.182.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