onetick-py 1.177.0__py3-none-any.whl

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 (152) hide show
  1. locator_parser/__init__.py +0 -0
  2. locator_parser/acl.py +73 -0
  3. locator_parser/actions.py +262 -0
  4. locator_parser/common.py +368 -0
  5. locator_parser/io.py +43 -0
  6. locator_parser/locator.py +150 -0
  7. onetick/__init__.py +101 -0
  8. onetick/doc_utilities/__init__.py +3 -0
  9. onetick/doc_utilities/napoleon.py +40 -0
  10. onetick/doc_utilities/ot_doctest.py +140 -0
  11. onetick/doc_utilities/snippets.py +279 -0
  12. onetick/lib/__init__.py +4 -0
  13. onetick/lib/instance.py +141 -0
  14. onetick/py/__init__.py +293 -0
  15. onetick/py/_stack_info.py +89 -0
  16. onetick/py/_version.py +2 -0
  17. onetick/py/aggregations/__init__.py +11 -0
  18. onetick/py/aggregations/_base.py +648 -0
  19. onetick/py/aggregations/_docs.py +948 -0
  20. onetick/py/aggregations/compute.py +286 -0
  21. onetick/py/aggregations/functions.py +2216 -0
  22. onetick/py/aggregations/generic.py +104 -0
  23. onetick/py/aggregations/high_low.py +80 -0
  24. onetick/py/aggregations/num_distinct.py +83 -0
  25. onetick/py/aggregations/order_book.py +501 -0
  26. onetick/py/aggregations/other.py +1014 -0
  27. onetick/py/backports.py +26 -0
  28. onetick/py/cache.py +374 -0
  29. onetick/py/callback/__init__.py +5 -0
  30. onetick/py/callback/callback.py +276 -0
  31. onetick/py/callback/callbacks.py +131 -0
  32. onetick/py/compatibility.py +798 -0
  33. onetick/py/configuration.py +771 -0
  34. onetick/py/core/__init__.py +0 -0
  35. onetick/py/core/_csv_inspector.py +93 -0
  36. onetick/py/core/_internal/__init__.py +0 -0
  37. onetick/py/core/_internal/_manually_bound_value.py +6 -0
  38. onetick/py/core/_internal/_nodes_history.py +250 -0
  39. onetick/py/core/_internal/_op_utils/__init__.py +0 -0
  40. onetick/py/core/_internal/_op_utils/every_operand.py +9 -0
  41. onetick/py/core/_internal/_op_utils/is_const.py +10 -0
  42. onetick/py/core/_internal/_per_tick_scripts/tick_list_sort_template.script +121 -0
  43. onetick/py/core/_internal/_proxy_node.py +140 -0
  44. onetick/py/core/_internal/_state_objects.py +2312 -0
  45. onetick/py/core/_internal/_state_vars.py +93 -0
  46. onetick/py/core/_source/__init__.py +0 -0
  47. onetick/py/core/_source/_symbol_param.py +95 -0
  48. onetick/py/core/_source/schema.py +97 -0
  49. onetick/py/core/_source/source_methods/__init__.py +0 -0
  50. onetick/py/core/_source/source_methods/aggregations.py +809 -0
  51. onetick/py/core/_source/source_methods/applyers.py +296 -0
  52. onetick/py/core/_source/source_methods/columns.py +141 -0
  53. onetick/py/core/_source/source_methods/data_quality.py +301 -0
  54. onetick/py/core/_source/source_methods/debugs.py +272 -0
  55. onetick/py/core/_source/source_methods/drops.py +120 -0
  56. onetick/py/core/_source/source_methods/fields.py +619 -0
  57. onetick/py/core/_source/source_methods/filters.py +1002 -0
  58. onetick/py/core/_source/source_methods/joins.py +1413 -0
  59. onetick/py/core/_source/source_methods/merges.py +605 -0
  60. onetick/py/core/_source/source_methods/misc.py +1455 -0
  61. onetick/py/core/_source/source_methods/pandases.py +155 -0
  62. onetick/py/core/_source/source_methods/renames.py +356 -0
  63. onetick/py/core/_source/source_methods/sorts.py +183 -0
  64. onetick/py/core/_source/source_methods/switches.py +142 -0
  65. onetick/py/core/_source/source_methods/symbols.py +117 -0
  66. onetick/py/core/_source/source_methods/times.py +627 -0
  67. onetick/py/core/_source/source_methods/writes.py +986 -0
  68. onetick/py/core/_source/symbol.py +205 -0
  69. onetick/py/core/_source/tmp_otq.py +222 -0
  70. onetick/py/core/column.py +209 -0
  71. onetick/py/core/column_operations/__init__.py +0 -0
  72. onetick/py/core/column_operations/_methods/__init__.py +4 -0
  73. onetick/py/core/column_operations/_methods/_internal.py +28 -0
  74. onetick/py/core/column_operations/_methods/conversions.py +216 -0
  75. onetick/py/core/column_operations/_methods/methods.py +292 -0
  76. onetick/py/core/column_operations/_methods/op_types.py +160 -0
  77. onetick/py/core/column_operations/accessors/__init__.py +0 -0
  78. onetick/py/core/column_operations/accessors/_accessor.py +28 -0
  79. onetick/py/core/column_operations/accessors/decimal_accessor.py +104 -0
  80. onetick/py/core/column_operations/accessors/dt_accessor.py +537 -0
  81. onetick/py/core/column_operations/accessors/float_accessor.py +184 -0
  82. onetick/py/core/column_operations/accessors/str_accessor.py +1367 -0
  83. onetick/py/core/column_operations/base.py +1121 -0
  84. onetick/py/core/cut_builder.py +150 -0
  85. onetick/py/core/db_constants.py +20 -0
  86. onetick/py/core/eval_query.py +245 -0
  87. onetick/py/core/lambda_object.py +441 -0
  88. onetick/py/core/multi_output_source.py +232 -0
  89. onetick/py/core/per_tick_script.py +2256 -0
  90. onetick/py/core/query_inspector.py +464 -0
  91. onetick/py/core/source.py +1744 -0
  92. onetick/py/db/__init__.py +2 -0
  93. onetick/py/db/_inspection.py +1128 -0
  94. onetick/py/db/db.py +1327 -0
  95. onetick/py/db/utils.py +64 -0
  96. onetick/py/docs/__init__.py +0 -0
  97. onetick/py/docs/docstring_parser.py +112 -0
  98. onetick/py/docs/utils.py +81 -0
  99. onetick/py/functions.py +2398 -0
  100. onetick/py/license.py +190 -0
  101. onetick/py/log.py +88 -0
  102. onetick/py/math.py +935 -0
  103. onetick/py/misc.py +470 -0
  104. onetick/py/oqd/__init__.py +22 -0
  105. onetick/py/oqd/eps.py +1195 -0
  106. onetick/py/oqd/sources.py +325 -0
  107. onetick/py/otq.py +216 -0
  108. onetick/py/pyomd_mock.py +47 -0
  109. onetick/py/run.py +916 -0
  110. onetick/py/servers.py +173 -0
  111. onetick/py/session.py +1347 -0
  112. onetick/py/sources/__init__.py +19 -0
  113. onetick/py/sources/cache.py +167 -0
  114. onetick/py/sources/common.py +128 -0
  115. onetick/py/sources/csv.py +642 -0
  116. onetick/py/sources/custom.py +85 -0
  117. onetick/py/sources/data_file.py +305 -0
  118. onetick/py/sources/data_source.py +1045 -0
  119. onetick/py/sources/empty.py +94 -0
  120. onetick/py/sources/odbc.py +337 -0
  121. onetick/py/sources/order_book.py +271 -0
  122. onetick/py/sources/parquet.py +168 -0
  123. onetick/py/sources/pit.py +191 -0
  124. onetick/py/sources/query.py +495 -0
  125. onetick/py/sources/snapshots.py +419 -0
  126. onetick/py/sources/split_query_output_by_symbol.py +198 -0
  127. onetick/py/sources/symbology_mapping.py +123 -0
  128. onetick/py/sources/symbols.py +374 -0
  129. onetick/py/sources/ticks.py +825 -0
  130. onetick/py/sql.py +70 -0
  131. onetick/py/state.py +251 -0
  132. onetick/py/types.py +2131 -0
  133. onetick/py/utils/__init__.py +70 -0
  134. onetick/py/utils/acl.py +93 -0
  135. onetick/py/utils/config.py +186 -0
  136. onetick/py/utils/default.py +49 -0
  137. onetick/py/utils/file.py +38 -0
  138. onetick/py/utils/helpers.py +76 -0
  139. onetick/py/utils/locator.py +94 -0
  140. onetick/py/utils/perf.py +498 -0
  141. onetick/py/utils/query.py +49 -0
  142. onetick/py/utils/render.py +1374 -0
  143. onetick/py/utils/script.py +244 -0
  144. onetick/py/utils/temp.py +471 -0
  145. onetick/py/utils/types.py +120 -0
  146. onetick/py/utils/tz.py +84 -0
  147. onetick_py-1.177.0.dist-info/METADATA +137 -0
  148. onetick_py-1.177.0.dist-info/RECORD +152 -0
  149. onetick_py-1.177.0.dist-info/WHEEL +5 -0
  150. onetick_py-1.177.0.dist-info/entry_points.txt +2 -0
  151. onetick_py-1.177.0.dist-info/licenses/LICENSE +21 -0
  152. onetick_py-1.177.0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,131 @@
1
+ import datetime
2
+
3
+ import pandas as pd
4
+
5
+ from onetick.py.backports import cached_property
6
+ from onetick.py import utils
7
+ from . import CallbackBase
8
+
9
+
10
+ class LogCallback(CallbackBase):
11
+ def __init__(self, query_name):
12
+ print(f'Running query {query_name}')
13
+ super().__init__()
14
+
15
+ def process_symbol_name(self, symbol_name):
16
+ print(f'Processing symbol {symbol_name}')
17
+
18
+
19
+ class ManualDataframeCallback(CallbackBase):
20
+ """
21
+ This callback class can be used to generate the same :pandas:`pandas.DataFrame` result as in otp.run.
22
+ Unlike otp.run, here result is constructed manually, one tick at a time.
23
+ This may lead to lower memory usage in some cases.
24
+ See task PY-863 for details.
25
+ """
26
+
27
+ def __init__(self, timezone, callback_objects=None):
28
+ # getting timezone from user as string or from replicating as object
29
+ self._timezone = utils.tz.get_tzfile_by_name(timezone) if isinstance(timezone, str) else timezone
30
+ # list of all ManualDataframeCallback objects, passed when replicating
31
+ self._callback_objects = [] if callback_objects is None else callback_objects
32
+ self._callback_objects.append(self)
33
+ # ManualDataframeCallback is replicated for each symbol
34
+ self._symbol_name = None
35
+ # dict of columns names and lists with their values
36
+ self._columns = None
37
+ self._defaults = None
38
+ self._result = None
39
+
40
+ def replicate(self):
41
+ """
42
+ Object is replicated for each symbol.
43
+ Passing timezone and list to save all objects to aggregate them in the end.
44
+ """
45
+ return ManualDataframeCallback(self._timezone, callback_objects=self._callback_objects)
46
+
47
+ def process_symbol_name(self, symbol_name):
48
+ """
49
+ Called once for each ManualDataframeCallback object
50
+ """
51
+ self._symbol_name = symbol_name
52
+
53
+ def process_tick_descriptor(self, tick_descriptor):
54
+ """
55
+ Called for each change of schema.
56
+ For example, different dates in database may have different schemas.
57
+ In this case we are merging them together.
58
+ """
59
+ if self._columns is None:
60
+ self._columns = {'Time': []}
61
+ self._defaults = {}
62
+ for name, type_dict in tick_descriptor:
63
+ if name not in self._columns:
64
+ dtype_str = type_dict['type']
65
+ default = self._get_default_value_by_type(dtype_str)
66
+ # save default value for column, will be used in other places
67
+ self._defaults[name] = default
68
+ # update previous ticks with default value of the new field
69
+ self._columns[name] = [default] * len(self._columns['Time'])
70
+
71
+ def process_tick(self, tick, time):
72
+ """
73
+ Called for each tick of the symbol.
74
+ """
75
+ assert self._columns is not None
76
+ for name in self._columns:
77
+ if name == 'Time':
78
+ value = self._convert_to_timezone(time)
79
+ elif name not in tick:
80
+ value = self._defaults[name]
81
+ else:
82
+ value = tick[name]
83
+ if isinstance(value, datetime.datetime):
84
+ # datetime values are always in UTC
85
+ value = self._convert_to_timezone(value)
86
+ self._columns[name].append(value)
87
+
88
+ def done(self):
89
+ """
90
+ Called once for each symbol after all ticks are processed.
91
+ """
92
+ self._result = pd.DataFrame(self._columns)
93
+
94
+ @cached_property
95
+ def result(self):
96
+ """
97
+ Must be called by the user after callback object is used in otp.run.
98
+ Aggregating results from all ManualDataframeCallback objects
99
+ and returning pandas dataframe or dict of such (same as result of otp.run in 'df' output mode).
100
+ """
101
+ results = {
102
+ callback_object._symbol_name: callback_object._result
103
+ for callback_object in self._callback_objects
104
+ if callback_object._result is not None
105
+ }
106
+ # if we have only one symbol, return dataframe, not dict
107
+ if len(results) == 1:
108
+ return results.popitem()[1]
109
+ return results
110
+
111
+ def _convert_to_timezone(self, dt):
112
+ """
113
+ Converting timezone-naive ``dt`` object in UTC timezone
114
+ to the timezone specified by user and returning also timezone-naive object.
115
+ """
116
+ return utils.convert_timezone(dt, 'UTC', self._timezone)
117
+
118
+ def _get_default_value_by_type(self, dtype_str):
119
+ """
120
+ Converting type names returned by process_tick_descriptor()
121
+ """
122
+ defaults = {
123
+ 'int': 0,
124
+ 'float': 0.0,
125
+ 'string': '',
126
+ 'datetime': self._convert_to_timezone(
127
+ # epoch in timezone specified by user converted to UTC, that's what OneTick would return
128
+ pd.Timestamp(1970, 1, 1).tz_localize(self._timezone).tz_convert('UTC').tz_localize(None)
129
+ )
130
+ }
131
+ return defaults[dtype_str]