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
onetick/py/servers.py ADDED
@@ -0,0 +1,173 @@
1
+ from typing import Optional, Union
2
+
3
+
4
+ class RemoteTS:
5
+ PROTOCOLS = ('ws', 'wss', 'http')
6
+
7
+ def __init__(
8
+ self,
9
+ host: Union[str, 'LoadBalancing', 'FaultTolerance'],
10
+ port: Optional[Union[int, str]] = None,
11
+ protocol: Optional[str] = None,
12
+ resource: Optional[str] = None,
13
+ cep: bool = False,
14
+ ):
15
+ """
16
+ Class representing remote tick-server.
17
+ Can be :py:meth:`used <onetick.py.Session.use>`
18
+ in :py:class:`~onetick.py.Session` as well as the local databases.
19
+
20
+ Parameters
21
+ ----------
22
+ host: str, :py:class:`~onetick.py.servers.LoadBalancing`, :py:class:`~onetick.py.servers.FaultTolerance`
23
+ In case of string: string with this format: ``[proto://]hostname:port[/resource]``.
24
+ Parameters in square brackets are optional.
25
+
26
+ Otherwise, configuration of LoadBalancing and/or FaultTolerance (please, check corresponding classes)
27
+ port: int, str, optional
28
+ The port number of the remote tick-server.
29
+ If not specified here, can be specified in the ``host`` parameter.
30
+ protocol: str, optional
31
+ The protocol to connect with.
32
+ If not specified here, can be specified in the ``host`` parameter.
33
+ resource: str, optional
34
+ The resource of the host.
35
+ If not specified here, can be specified in the ``host`` parameter.
36
+ cep: bool
37
+ Specifies if the remote server is the CEP-mode tick-server.
38
+
39
+ Examples
40
+ --------
41
+
42
+ Specify host name and port together in first parameter:
43
+
44
+ >>> session.use(otp.RemoteTS('server.onetick.com:50015')) # doctest: +SKIP
45
+
46
+ Additionally specify websocket protocol and resource of the remote server:
47
+
48
+ >>> session.use(otp.RemoteTS('wss://data.onetick.com:443/omdwebapi/websocket')) # doctest: +SKIP
49
+
50
+ Combination of LoadBalancing and FaultTolerance can be used for host parameter:
51
+
52
+ >>> RemoteTS(FaultTolerance(LoadBalancing('host1:4001', 'host2:4002'),
53
+ ... LoadBalancing('host3:4003', 'host3:4004')) # doctest: +SKIP
54
+ """
55
+ self.cep = cep
56
+
57
+ self._protocol = protocol
58
+ self._host = host
59
+ self._port = port
60
+ self._resource = resource
61
+
62
+ if not isinstance(self._host, str):
63
+ if self._port or self._protocol or self._resource:
64
+ raise ValueError('When host is not a string, other parameters cannot be specified')
65
+ return
66
+
67
+ protocol, host, port, resource = self._parse_url(host)
68
+ if any([protocol, port, resource]) and any([self._protocol, self._port, self._resource]):
69
+ raise ValueError('Mixed url parts in `host` parameter and in other parameters')
70
+
71
+ self._protocol = self._protocol or protocol
72
+ self._host = host
73
+ self._port = self._port or port
74
+ self._resource = self._resource or resource
75
+
76
+ if self._protocol and self._protocol not in self.PROTOCOLS:
77
+ raise ValueError(f"Protocol '{self._protocol}' is not supported")
78
+
79
+ if not self._port:
80
+ raise ValueError('Port is not set')
81
+
82
+ def _parse_url(self, url):
83
+ proto = None
84
+ if '://' in url:
85
+ proto, _, url = url.partition('://')
86
+ resource = None
87
+ if '/' in url:
88
+ url, _, resource = url.partition('/')
89
+ port = None
90
+ if ':' in url:
91
+ url, _, port = url.partition(':')
92
+ hostname = url
93
+ return proto, hostname, port, resource
94
+
95
+ def __repr__(self):
96
+ return self.__str__()
97
+
98
+ def __str__(self):
99
+ if isinstance(self._host, (FaultTolerance, LoadBalancing)):
100
+ return str(self._host)
101
+ url = f'{self._host}:{self._port}'
102
+ if self._protocol:
103
+ url = f'{self._protocol}://{url}'
104
+ if self._resource:
105
+ url = f'{url}/{self._resource}'
106
+ return url
107
+
108
+
109
+ class LoadBalancing:
110
+ def __init__(self, *sockets: str):
111
+ """
112
+ Class representing configuration of client-side load-balancing between multiple tick servers.
113
+ Each client query selects the target tick server from the provided list according to the load-balancing policy.
114
+ Currently only `SERVER_LOAD_WEIGHTED` policy is available - tick servers are chosen at random using a weighted
115
+ probability distribution, using inverted CPU usage for weights.
116
+ LoadBalancing class is used only with :py:class:`~onetick.py.servers.RemoteTS` and
117
+ :py:class:`~onetick.py.servers.FaultTolerance`.
118
+
119
+ Parameters
120
+ ----------
121
+ sockets: str
122
+ Sockets used in load-balancing configuration.
123
+
124
+ Examples
125
+ --------
126
+ >>> LoadBalancing('host1:4001', 'host2:4002', 'host3:4003') # doctest: +SKIP
127
+ """
128
+ if len(sockets) < 2:
129
+ raise ValueError(f'There must be at least 2 sockets for load balancing but {len(sockets)} was provided')
130
+ self.sockets = sockets
131
+
132
+ def __repr__(self):
133
+ return self.__str__()
134
+
135
+ def __str__(self):
136
+ return f"({','.join(self.sockets)})"
137
+
138
+
139
+ class FaultTolerance:
140
+ def __init__(self, *sockets: Union[str, 'LoadBalancing']):
141
+ """
142
+ Class representing configuration of client-side tick-server fault tolerance.
143
+ Tick servers in the fault tolerance list are selected according to their level of priority,
144
+ which is from left to right. Backup servers (servers after the first one, primary) are used only if the query
145
+ on the primary server failed or server is down. So, if the first server is down the second server is used,
146
+ if both of them are failed the third one used and so on.
147
+ FaultTolerance class is used only with :py:class:`~onetick.py.servers.RemoteTS`.
148
+
149
+ Parameters
150
+ ----------
151
+ sockets: str, LoadBalancing
152
+ Sockets and/or LoadBalancing groups used in fault tolerance configuration.
153
+
154
+ Examples
155
+ --------
156
+ >>> FaultTolerance('host1:4001', 'host2:4002', 'host3:4003') # doctest: +SKIP
157
+
158
+ It is possible to have multiple load-balancing groups thus mixing together fault tolerance and load-balancing.
159
+ The selection between different load balancing groups is also done according to their priority level,
160
+ which is from left to right.
161
+
162
+ >>> FaultTolerance(LoadBalancing('host1:4001', 'host2:4002'),
163
+ ... LoadBalancing('host3:4003', 'host3:4004')) # doctest: +SKIP
164
+ """
165
+ if len(sockets) < 2:
166
+ raise ValueError(f'There must be at least 2 sockets for fault tolerance but {len(sockets)} was provided')
167
+ self.sockets = sockets
168
+
169
+ def __repr__(self):
170
+ return self.__str__()
171
+
172
+ def __str__(self):
173
+ return ','.join(map(str, self.sockets))