onetick-py 1.170.0__py3-none-any.whl → 1.172.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 (30) hide show
  1. onetick/py/__init__.py +8 -2
  2. onetick/py/_version.py +1 -1
  3. onetick/py/cache.py +3 -3
  4. onetick/py/callback/callbacks.py +1 -1
  5. onetick/py/configuration.py +35 -9
  6. onetick/py/core/_source/source_methods/misc.py +1 -1
  7. onetick/py/core/_source/source_methods/writes.py +48 -33
  8. onetick/py/core/column_operations/_methods/methods.py +1 -4
  9. onetick/py/core/column_operations/accessors/_accessor.py +4 -6
  10. onetick/py/core/column_operations/accessors/decimal_accessor.py +20 -8
  11. onetick/py/core/column_operations/accessors/dt_accessor.py +137 -68
  12. onetick/py/core/column_operations/accessors/float_accessor.py +35 -15
  13. onetick/py/core/column_operations/accessors/str_accessor.py +0 -7
  14. onetick/py/core/column_operations/base.py +72 -12
  15. onetick/py/core/multi_output_source.py +41 -2
  16. onetick/py/core/per_tick_script.py +2 -0
  17. onetick/py/db/_inspection.py +82 -49
  18. onetick/py/db/db.py +2 -2
  19. onetick/py/functions.py +7 -1
  20. onetick/py/math.py +374 -386
  21. onetick/py/misc.py +70 -38
  22. onetick/py/otq.py +18 -12
  23. onetick/py/run.py +75 -5
  24. onetick/py/sources/ticks.py +1 -1
  25. {onetick_py-1.170.0.dist-info → onetick_py-1.172.0.dist-info}/METADATA +4 -2
  26. {onetick_py-1.170.0.dist-info → onetick_py-1.172.0.dist-info}/RECORD +30 -30
  27. {onetick_py-1.170.0.dist-info → onetick_py-1.172.0.dist-info}/WHEEL +0 -0
  28. {onetick_py-1.170.0.dist-info → onetick_py-1.172.0.dist-info}/entry_points.txt +0 -0
  29. {onetick_py-1.170.0.dist-info → onetick_py-1.172.0.dist-info}/licenses/LICENSE +0 -0
  30. {onetick_py-1.170.0.dist-info → onetick_py-1.172.0.dist-info}/top_level.txt +0 -0
onetick/py/misc.py CHANGED
@@ -3,19 +3,6 @@ from onetick.py.core.column_operations.base import _Operation
3
3
  from onetick.py.types import value2str, string
4
4
 
5
5
 
6
- class _BitAndOperator(_Operation):
7
- def __init__(self, value1, value2):
8
- super().__init__(dtype=int)
9
-
10
- def _repr(_value1, _value2):
11
- return f'BIT_AND({str(_value1)}, {str(_value2)})'
12
-
13
- self._repr = _repr(value1, value2)
14
-
15
- def __str__(self):
16
- return self._repr
17
-
18
-
19
6
  def bit_and(value1, value2):
20
7
  """
21
8
  Performs the logical AND operation on each pair of corresponding bits of the parameters.
@@ -55,20 +42,10 @@ def bit_and(value1, value2):
55
42
  Time A AND
56
43
  0 2003-12-01 1 2
57
44
  """
58
- return _BitAndOperator(value1, value2)
59
-
60
-
61
- class _BitOrOperator(_Operation):
62
- def __init__(self, value1, value2):
63
- super().__init__(dtype=int)
64
-
65
- def _repr(_value1, _value2):
66
- return f'BIT_OR({str(_value1)}, {str(_value2)})'
67
-
68
- self._repr = _repr(value1, value2)
69
-
70
- def __str__(self):
71
- return self._repr
45
+ return _Operation(
46
+ op_func=lambda v1, v2: (f'BIT_AND({value2str(v1)}, {value2str(v2)})', int),
47
+ op_params=[value1, value2],
48
+ )
72
49
 
73
50
 
74
51
  def bit_or(value1, value2):
@@ -110,7 +87,10 @@ def bit_or(value1, value2):
110
87
  Time A OR
111
88
  0 2003-12-01 1 3
112
89
  """
113
- return _BitOrOperator(value1, value2)
90
+ return _Operation(
91
+ op_func=lambda v1, v2: (f'BIT_OR({value2str(v1)}, {value2str(v2)})', int),
92
+ op_params=[value1, value2],
93
+ )
114
94
 
115
95
 
116
96
  def bit_xor(value1, value2):
@@ -152,7 +132,10 @@ def bit_xor(value1, value2):
152
132
  Time A XOR
153
133
  0 2003-12-01 1 1
154
134
  """
155
- return _Operation(dtype=int, op_str=f'BIT_XOR({str(value1)}, {str(value2)})')
135
+ return _Operation(
136
+ op_func=lambda v1, v2: (f'BIT_XOR({value2str(v1)}, {value2str(v2)})', int),
137
+ op_params=[value1, value2],
138
+ )
156
139
 
157
140
 
158
141
  def bit_not(value):
@@ -193,7 +176,10 @@ def bit_not(value):
193
176
  Time A NOT
194
177
  0 2003-12-01 1 -3
195
178
  """
196
- return _Operation(dtype=int, op_str=f'BIT_NOT({str(value)})')
179
+ return _Operation(
180
+ op_func=lambda v: (f'BIT_NOT({value2str(v)})', int),
181
+ op_params=[value],
182
+ )
197
183
 
198
184
 
199
185
  def bit_at(value, index):
@@ -235,7 +221,10 @@ def bit_at(value, index):
235
221
  Time A AT
236
222
  0 2003-12-01 1 0
237
223
  """
238
- return _Operation(dtype=int, op_str=f'BIT_AT({str(value)}, {str(index)})')
224
+ return _Operation(
225
+ op_func=lambda v, i: (f'BIT_AT({value2str(v)}, {value2str(i)})', int),
226
+ op_params=[value, index],
227
+ )
239
228
 
240
229
 
241
230
  class _HashCodeOperator(_Operation):
@@ -262,18 +251,14 @@ class _HashCodeOperator(_Operation):
262
251
 
263
252
  dtype = self.HASH_TYPES[hash_type]
264
253
 
265
- super().__init__(dtype=dtype)
266
-
267
254
  def _repr(_value, _hash_type):
268
255
  _value = value2str(_value)
269
256
  _hash_type = value2str(_hash_type.upper())
270
257
 
271
- return f'COMPUTE_HASH_CODE_STR({_value}, {_hash_type})'
272
-
273
- self._repr = _repr(value, hash_type)
258
+ return f'COMPUTE_HASH_CODE_STR({_value}, {_hash_type})', dtype
274
259
 
275
- def __str__(self):
276
- return self._repr
260
+ super().__init__(op_func=_repr,
261
+ op_params=[value, hash_type])
277
262
 
278
263
 
279
264
  def hash_code(value, hash_type):
@@ -436,3 +421,50 @@ def get_symbology_mapping(dest_symbology, src_symbology=None, symbol=None, times
436
421
  op_params=[dest_symbology, src_symbology, symbol, timestamp],
437
422
  dtype=str,
438
423
  )
424
+
425
+
426
+ def get_onetick_version():
427
+ """
428
+ Returns the string with the build name of OneTick.
429
+ Build string may have different format depending on OneTick version.
430
+
431
+ Note
432
+ ----
433
+ The version is returned from the server where the query executes.
434
+ Usually it's the same server where the database specified in :func:`otp.run <onetick.py.run>` resides.
435
+
436
+ Returns
437
+ -------
438
+ :py:class:`~onetick.py.Operation`
439
+
440
+ Examples
441
+ --------
442
+ >>> data = otp.Tick(VERSION=otp.get_onetick_version())
443
+ >>> otp.run(data, symbols='US_COMP::') # doctest: +SKIP
444
+ Time VERSION
445
+ 0 2003-12-01 BUILD_rel_20250727_update2 (20250727120000)
446
+ """
447
+ return _Operation(
448
+ op_func=lambda: ('FORMATMESSAGE("%1% (%2%)", GET_ONETICK_RELEASE(), GET_ONETICK_VERSION())', str),
449
+ )
450
+
451
+
452
+ def get_username():
453
+ """
454
+ Returns the string with the name of the user executing the query
455
+ and authenticated login name of the user.
456
+
457
+ Returns
458
+ -------
459
+ :py:class:`~onetick.py.Operation`
460
+
461
+ Examples
462
+ --------
463
+ >>> data = otp.Tick(USER=otp.get_username())
464
+ >>> otp.run(data) # doctest: +SKIP
465
+ Time USER
466
+ 0 2003-12-01 onetick (onetick)
467
+ """
468
+ return _Operation(
469
+ op_func=lambda: ('FORMATMESSAGE("%1% (%2%)", GETUSER(), GET_AUTHENTICATED_USERNAME())', str),
470
+ )
onetick/py/otq.py CHANGED
@@ -160,18 +160,24 @@ elif otp.__webapi__:
160
160
  if 'https_proxy' not in kwargs:
161
161
  kwargs['https_proxy'] = config.https_proxy
162
162
 
163
- is_trusted_certificates_supported = 'trusted_certificates_file' in inspect.signature(otq.run).parameters
164
-
165
- if (
166
- ('trusted_certificates_file' in kwargs or config.trusted_certificates_file is not None) and
167
- not is_trusted_certificates_supported
168
- ):
169
- raise ValueError(
170
- 'Parameter `trusted_certificates_file` was set, however current version of OneTick doesn\'t support it.'
171
- )
172
-
173
- if 'trusted_certificates_file' not in kwargs and is_trusted_certificates_supported:
174
- kwargs['trusted_certificates_file'] = config.trusted_certificates_file
163
+ webapi_run_parameters = inspect.signature(__original_run).parameters
164
+
165
+ trusted_certificate_file_arg = kwargs.pop('trusted_certificates_file',
166
+ kwargs.pop('trusted_certificate_file', None))
167
+ trusted_certificate_file_value = (
168
+ trusted_certificate_file_arg if trusted_certificate_file_arg is not None
169
+ else config.trusted_certificates_file
170
+ )
171
+ if trusted_certificate_file_value is not None:
172
+ trusted_certificates_supported = set(webapi_run_parameters).intersection({'trusted_certificates_file',
173
+ 'trusted_certificate_file'})
174
+ if not trusted_certificates_supported:
175
+ raise ValueError(
176
+ "Parameter `trusted_certificates_file` was set,"
177
+ " however current version of OneTick doesn't support it."
178
+ )
179
+ trusted_certificates_supported_param = list(trusted_certificates_supported)[0]
180
+ kwargs[trusted_certificates_supported_param] = trusted_certificate_file_value
175
181
 
176
182
  if 'callback' in kwargs and kwargs['callback'] is not None:
177
183
  kwargs['output_mode'] = otq.QueryOutputMode.callback
onetick/py/run.py CHANGED
@@ -1,4 +1,4 @@
1
-
1
+ import asyncio
2
2
  import inspect
3
3
  import datetime
4
4
  import warnings
@@ -76,10 +76,11 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
76
76
  ``query`` can also be a function that has a symbol object as the first parameter.
77
77
  This object can be used to get symbol name and symbol parameters.
78
78
  Function must return a :py:class:`Source <onetick.py.Source>`.
79
- symbols: str, list of str, list of otq.Symbol, :py:class:`onetick.py.Source`, pd.DataFrame, optional
80
- Symbol(s) to run the query for passed as a string, a list of strings, a pd.DataFrame with the ``SYMBOL_NAME``
81
- column, or as a "symbols" query which results include the ``SYMBOL_NAME`` column. The start/end times for the
82
- symbols query will taken from the params below.
79
+ symbols: str, list of str, list of otq.Symbol, :py:class:`onetick.py.Source`, :pandas:`pandas.DataFrame`, optional
80
+ Symbol(s) to run the query for passed as a string, a list of strings,
81
+ a :pandas:`pandas.DataFrame` with the ``SYMBOL_NAME`` column,
82
+ or as a "symbols" query which results include the ``SYMBOL_NAME`` column.
83
+ The start/end times for the symbols query will taken from the params below.
83
84
  See :ref:`symbols <static/concepts/symbols:Symbols: bound and unbound>` for more details.
84
85
  start: :py:class:`datetime.datetime`, :py:class:`otp.datetime <onetick.py.datetime>`,\
85
86
  :py:class:`pyomd.timeval_t`, optional
@@ -610,6 +611,75 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
610
611
  require_dict=require_dict, node_names=node_names)
611
612
 
612
613
 
614
+ async def run_async(*args, **kwargs):
615
+ """
616
+ Asynchronous alternative to :func:`otp.run <onetick.py.run>`.
617
+
618
+ All parameters are the same.
619
+
620
+ This function can be used via built-in python ``await`` syntax
621
+ and standard `asyncio <https://docs.python.org/3/library/asyncio.html>`_ library.
622
+
623
+ Note
624
+ ----
625
+ Internally this function is implemented as :func:`otp.run <onetick.py.run>` running in a separate thread.
626
+
627
+ Threads in python are generally not interruptable,
628
+ so some `asyncio` functionality may not work as expected.
629
+
630
+ For example, canceling :func:`otp.run_async <onetick.py.run_async>` task by
631
+ `timeout <https://docs.python.org/3/library/asyncio-task.html#timeouts>`_
632
+ may block the waiting function
633
+ or exiting the python process will block until the task is finished,
634
+ depending on python and `asyncio` back-end implementation.
635
+
636
+ Examples
637
+ --------
638
+
639
+ >>> data = otp.Ticks(A=[1, 2, 3])
640
+
641
+ Calling :func:`otp.run_async <onetick.py.run_async>` will create a "coroutine" object:
642
+
643
+ >>> otp.run_async(data) # doctest: +SKIP
644
+ <coroutine object run_async at ...>
645
+
646
+ Use `asyncio.run <https://docs.python.org/3/library/asyncio-runner.html#asyncio.run>`_
647
+ to run this coroutine and wait for it to finish:
648
+
649
+ >>> asyncio.run(otp.run_async(data))
650
+ Time A
651
+ 0 2003-12-01 00:00:00.000 1
652
+ 1 2003-12-01 00:00:00.001 2
653
+ 2 2003-12-01 00:00:00.002 3
654
+
655
+ You can use standard `asyncio <https://docs.python.org/3/library/asyncio.html>`_
656
+ library functions to create and schedule tasks.
657
+
658
+ In the example below two tasks are executed in parallel,
659
+ so total execution time will be around 3 seconds instead of 6:
660
+
661
+ >>> import asyncio
662
+ >>> import time
663
+ >>> async def parallel_tasks():
664
+ ... # pause 1 second on each tick (thus 3 seconds for 3 ticks)
665
+ ... task_otp = asyncio.create_task(otp.run_async(data.pause(1000)))
666
+ ... # just sleep for 3 seconds
667
+ ... task_other = asyncio.create_task(asyncio.sleep(3))
668
+ ... otp_result = await task_otp
669
+ ... await task_other
670
+ ... print(otp_result)
671
+ >>> start_time = time.time()
672
+ >>> asyncio.run(parallel_tasks())
673
+ Time A
674
+ 0 2003-12-01 00:00:00.000 1
675
+ 1 2003-12-01 00:00:00.001 2
676
+ 2 2003-12-01 00:00:00.002 3
677
+ >>> print('Finished in', time.time() - start_time, 'seconds') # doctest: +SKIP
678
+ Finished in 3.0108885765075684 seconds
679
+ """
680
+ return await asyncio.to_thread(run, *args, **kwargs)
681
+
682
+
613
683
  def _filter_returned_map_by_node(result, _node_names):
614
684
  """
615
685
  Here, result has the following format: {symbol: {node_name: data}}
@@ -369,7 +369,7 @@ def Ticks(data=None, # NOSONAR
369
369
 
370
370
  Parameters
371
371
  ----------
372
- data: dict, list or pandas.DataFrame, optional
372
+ data: dict, list or :pandas:`pandas.DataFrame`, optional
373
373
  Ticks values
374
374
 
375
375
  * ``dict`` -- <field_name>: <values>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetick-py
3
- Version: 1.170.0
3
+ Version: 1.172.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
@@ -85,7 +85,7 @@ The latest version of ``onetick-py`` is available on PyPI: <https://pypi.org/pro
85
85
 
86
86
  pip install onetick-py[webapi]
87
87
 
88
- Use ``webapi`` extra to easily use it with remote OneTick Cloud server.
88
+ Use ``webapi`` extra to easily use it with remote OneTick REST Servers, such as [OneTick Cloud](https://www.onetick.com/cloud-services).
89
89
 
90
90
  See [Getting Started](https://docs.pip.distribution.sol.onetick.com/static/getting_started/root.html)
91
91
  section in the documentation to see how quickly set up ``onetick-py`` configuration
@@ -112,6 +112,8 @@ section in the documentation.
112
112
  - **Data Visualization**: Compatible with OneTick's visualization tool, OneTick Dashboard.
113
113
  - **Machine Learning**: Integrates with the OneTick ML library [onetick-ml](https://dsframework.pip.distribution.sol.onetick.com/intro.html).
114
114
  - **Industry Applications**: Industry leading OneTick's Trade Surveillance and BestEx/TCA solutions are written in ``onetick.py``.
115
+ - **Back Testing**: Retrieve historic market data and metrics.
116
+ - **Market Microstructure**: Consolidated Book Depth analysis.
115
117
 
116
118
  ## Advantages Over Competitors
117
119
 
@@ -11,21 +11,21 @@ onetick/doc_utilities/ot_doctest.py,sha256=AWF-rXyF3BqYSYcxIuImUC1ezbkqxrmaG6DsH
11
11
  onetick/doc_utilities/snippets.py,sha256=q1mergoBMGxiVOnuWuKIKTMOOJ7O_EWp4SKIesK8piM,8930
12
12
  onetick/lib/__init__.py,sha256=Rp7CIDoA4E6LIm1f2mNvl_5b_n-0U3suA3FmBXbmKoU,114
13
13
  onetick/lib/instance.py,sha256=3FJB8PWs2ap-EGb6DzsnLRL2meTMUViTdy343m6tHvM,4825
14
- onetick/py/__init__.py,sha256=Kxqcimy3N2m0j7fKtLcJkUEzK8aVc1KadJBb4BMB7qI,11093
14
+ onetick/py/__init__.py,sha256=Ge1Ekl6OHRjm5KrXojq3AzLCaUGvLNWuaIK0C9DdwWU,11164
15
15
  onetick/py/_stack_info.py,sha256=PHZOkW_fK7Fbl4YEj5CaYK9L6vh4j-bUU7_cSYOWZ30,2546
16
- onetick/py/_version.py,sha256=q9tkyCDIoC1A4hdf231eJ2gykhyFZpfpkA-kKijvrg8,76
16
+ onetick/py/_version.py,sha256=7nbtSF9w76mnK4B_3vuXM8dDMY1zw1fS3UowT04mTiE,76
17
17
  onetick/py/backports.py,sha256=mR00mxe7E7UgBljf-Wa93Mo6lpi-C4Op561uhPUoEt8,815
18
- onetick/py/cache.py,sha256=f9WwFFCTqCP3eaA4V57tNPjCBHNPzU8ZvH81IuUsBE8,12756
18
+ onetick/py/cache.py,sha256=BBZg8n0AGjZzZapg4752LkSZdX5C6DGf7vU9sAStv6A,12798
19
19
  onetick/py/compatibility.py,sha256=x-TXsOqPNb2gnARSDwyZba-1FE7bvuat2vrObRCSywo,30917
20
- onetick/py/configuration.py,sha256=Qvu3i4DJ-NBtLJbel92lI98zeuvOmTSxw8k9GicstT4,27784
21
- onetick/py/functions.py,sha256=LyLQ7NTNFzKfkR3A5RazS3tOtVqORe1BPrg6B4AAuLM,97689
20
+ onetick/py/configuration.py,sha256=cMUl6XNjO3qgpO5PmOplb2uFSAQtWPu7pIUNhhRpjL4,28408
21
+ onetick/py/functions.py,sha256=yJKL4thjNh_u-DKY08rCDMGJO_IMAeN2Odu70Q9U3Ew,97937
22
22
  onetick/py/license.py,sha256=50dsFrE-NKsPOdkAoyxHr44bH8DzFCr_6TabX0JH6tQ,6140
23
23
  onetick/py/log.py,sha256=Els2drZcVjJrD6kvbwgFGEpg6jAacoUEtyN6rCaauuk,2723
24
- onetick/py/math.py,sha256=Jx-wFggEydBnwgFRsPvFC6bcTCr3bK6WS7_lQ3_a0OU,21061
25
- onetick/py/misc.py,sha256=rTM-_Xo_gIr3b9celmWSGa37OACbwvnLhANzWfTF5Ok,12811
26
- onetick/py/otq.py,sha256=AM24XPw5OdI7SwRgzEPBgOyodF523Zo9SBE7f0XY6HA,7747
24
+ onetick/py/math.py,sha256=MZvlyUjxOWGJvmxK8pfMkCr4THM52AE6NyGEidgDMyE,26311
25
+ onetick/py/misc.py,sha256=mD-EJslLGjQ0ROEez76HvOY0tsX8_1bC1QOkyHY9FZ8,13934
26
+ onetick/py/otq.py,sha256=VSdCrp3zTzNQHv9gM_xE4Al4ujBsio7uWk3SqU4eC4Y,8271
27
27
  onetick/py/pyomd_mock.py,sha256=A7IIUraN9yCsPhvnHXQUZrmwFjlh7vofSnYm4G7bdsc,2006
28
- onetick/py/run.py,sha256=BSqRbp2061Ju8-DMiW2t2LvlsbE8qp2SC3uDaCxB_vA,37838
28
+ onetick/py/run.py,sha256=gwbDxjOBioBfIS-X8797QYD4D2VdcY8o8WbRa_XlB-M,40419
29
29
  onetick/py/servers.py,sha256=h6l0X55kcnpI25bZcYaBpPAAGBZjqk9mt1SQe4xZrh0,6840
30
30
  onetick/py/session.py,sha256=AqoS7BFN_Sz3JU2CAaZm0Bro8CmUy6VjmoDjwOU1wYM,49591
31
31
  onetick/py/sql.py,sha256=kJ0732bZ0OGF8x3VzcOUs38zEGsxcd1nZOSN75VKXhA,2993
@@ -43,7 +43,7 @@ onetick/py/aggregations/order_book.py,sha256=RLzQk0HOG4Why7tNag3pT1GG5nBL_bBnJtI
43
43
  onetick/py/aggregations/other.py,sha256=wCXrb3BCUJy5e39i35V2tslp0bVR2-8Fa8E1lf45hO4,39410
44
44
  onetick/py/callback/__init__.py,sha256=lF6u1jDy0dv-2qBvonqmSaQAU7dWQAuq5FWyR5LzvLI,108
45
45
  onetick/py/callback/callback.py,sha256=i8yVsbceqhVxNTcXU2ie0-nBRyC0nS2LVDFFtqfCMlw,8618
46
- onetick/py/callback/callbacks.py,sha256=Brm2uhSlSJfaqjG7nOUCnxKQG7caWHo59iuZFMbVQfg,5001
46
+ onetick/py/callback/callbacks.py,sha256=_8Yw_b-OITXUtNTxGJIXm-tz-KfHZYe6SdoyW7-QX4w,5011
47
47
  onetick/py/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  onetick/py/core/_csv_inspector.py,sha256=tSYjaMEeyvKdY4DJEhxDLj6AIvqcW-IdioLbXKZAFQ8,3169
49
49
  onetick/py/core/column.py,sha256=KZToU5LoAAg4xeLEeKtlI3YY_wZ6JnJktSgJIyquhVg,6679
@@ -51,8 +51,8 @@ onetick/py/core/cut_builder.py,sha256=rj5aPJ25Dr5fsd9Dw1SO8k9kPGy0hV06anxFqBppFW
51
51
  onetick/py/core/db_constants.py,sha256=OqBbBKLECf8Bw8ylw30jc72xgCJ0gRIC-K-QkkbQ4LI,437
52
52
  onetick/py/core/eval_query.py,sha256=mcsOVlQ2vNSfZ-tRUB2z1gdiMJw4MpU2fK2hW-ua3e4,11528
53
53
  onetick/py/core/lambda_object.py,sha256=ayob_2c2XYSG7vFsqp-2b9FSPD-3TFReLbx3de3tkqE,16812
54
- onetick/py/core/multi_output_source.py,sha256=i9mxtM3yIF30hsVZ-6XttU407VmHklCdPjNDabgB374,7769
55
- onetick/py/core/per_tick_script.py,sha256=thuNKR4T6v5vxADLaX4ldTAHo_Yvt5HCHGIrNMEK6z8,83237
54
+ onetick/py/core/multi_output_source.py,sha256=f3dXr9kwmED77oWDFVr9cn44aYiJxC81loq2pX4u50Q,8766
55
+ onetick/py/core/per_tick_script.py,sha256=I3pfidriS1TrFPc3DAABt91GKMgby9P_8KBatiFQx6U,83322
56
56
  onetick/py/core/query_inspector.py,sha256=Jwnw7qUVvjvaT63mQ5PkUSy8x36knoxWrNll3aXuLZw,16440
57
57
  onetick/py/core/source.py,sha256=AX4DUK1frV_FUCG5sywsn42xYX7Y2sYC7vMCOq6TeRg,63998
58
58
  onetick/py/core/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -81,30 +81,30 @@ onetick/py/core/_source/source_methods/fields.py,sha256=6GozvRornClXfEu6oY9-JpN3
81
81
  onetick/py/core/_source/source_methods/filters.py,sha256=WuSnK-tQsP3fL2bqVfMZpbpPgk_LG4L8lrYULSSGoKE,33930
82
82
  onetick/py/core/_source/source_methods/joins.py,sha256=edLIJ-BTWbwvxga1YCzsN6NdhIwtJyZIksZawvPWCbU,61175
83
83
  onetick/py/core/_source/source_methods/merges.py,sha256=efk-R4WOjB2pcAIGWPsZsDzYuitADztH5xtRWTBfutk,23115
84
- onetick/py/core/_source/source_methods/misc.py,sha256=Y6H-fJEVlTYNjiDVO9phVI-A9IaGzBSV-11GuoX4ZU4,57012
84
+ onetick/py/core/_source/source_methods/misc.py,sha256=iWXre-Dker16oAnv6kGxyFk2FU_apMGiZQRppcUhr0c,57026
85
85
  onetick/py/core/_source/source_methods/pandases.py,sha256=BbvIlw6ipqC2dOiKSyyZ5jhAtE4ZtdL30OZXV_e_FuE,3670
86
86
  onetick/py/core/_source/source_methods/renames.py,sha256=T5EXq-oHq5NwApPZfYRDOJPVjclqLqAofRAP-Ykzu2M,13749
87
87
  onetick/py/core/_source/source_methods/sorts.py,sha256=tDFt3rObNHP-S_HOtDd6SLpgkCCGJnSDcMUxLake080,5583
88
88
  onetick/py/core/_source/source_methods/switches.py,sha256=pcnfT45QWn87qq1pWkvZbqeEoM7lrq8qNPxM8g9raxs,3846
89
89
  onetick/py/core/_source/source_methods/symbols.py,sha256=MG0dgVVVJ6fD_-GJkkXEgTeAsfS79ymJWmuKSL-0QSs,3968
90
90
  onetick/py/core/_source/source_methods/times.py,sha256=2kbLHG-3RQM6uWmw8pBGDiAz4R83KK46Tp1smTY6SR8,27665
91
- onetick/py/core/_source/source_methods/writes.py,sha256=W00hAJtQ0phPv5vzS08rSj_N0-ofhih39DalpR8RntQ,42129
91
+ onetick/py/core/_source/source_methods/writes.py,sha256=fPUbiqlm30Kb4QzXZLtWCsQiTFBDxK5oOWuVyfVXbYM,42717
92
92
  onetick/py/core/column_operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
- onetick/py/core/column_operations/base.py,sha256=ihNaKhhDFk7-v-wpXE11Wqy0WAqEGI1OC2PG4POK1mc,33203
93
+ onetick/py/core/column_operations/base.py,sha256=Kcwfd4PErCGLSbkqtFKY6SZL1-pksWHB-Pc-5A8I3WM,36135
94
94
  onetick/py/core/column_operations/_methods/__init__.py,sha256=_C5hpQG51MingtWW2N8vYzSVFpR314xIrtukBfEfPMk,207
95
95
  onetick/py/core/column_operations/_methods/_internal.py,sha256=M04DbbD9DjA3NrrbibuQPje8ylkaYnVB5Nmlwx1RvaE,878
96
96
  onetick/py/core/column_operations/_methods/conversions.py,sha256=QB8ZKJi5qlV8ydPn43nRHa3HMkaXCDV2Fkrq2gnVQ6U,7001
97
- onetick/py/core/column_operations/_methods/methods.py,sha256=-zl2gg7rGtsbxnfoSoMIvg3Pjanxwlijrd1RJflu3Nw,11157
97
+ onetick/py/core/column_operations/_methods/methods.py,sha256=OaXiDcdPYXnPlWhwD-BCac5UAecZFnEKCkxBpQOVB5E,11054
98
98
  onetick/py/core/column_operations/_methods/op_types.py,sha256=rUMrtIPCp7TYYJIK4f836KxZIcvW60MYv3cYTGMpfRA,5004
99
99
  onetick/py/core/column_operations/accessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- onetick/py/core/column_operations/accessors/_accessor.py,sha256=GJtqxDNzve6TM8ESJp0gzhSqfKPUYA7_vvLKFO1_rAA,1001
101
- onetick/py/core/column_operations/accessors/decimal_accessor.py,sha256=7B-h932PhUmUV3flAAvPpKeVR7BbaESwSPyBTkxdxoI,2930
102
- onetick/py/core/column_operations/accessors/dt_accessor.py,sha256=RvgIuCXs3nMXTNqJvP0Iqu7i_vUoUDgrG7QvfnrKvRs,16837
103
- onetick/py/core/column_operations/accessors/float_accessor.py,sha256=6di5Pw0nLwKEqnzQImzQ9ORv45xGm-uevFGCg-FZz4w,5541
104
- onetick/py/core/column_operations/accessors/str_accessor.py,sha256=65WdZQWayVy8HEh7xn5M3j08AO_fTJ5vSU8CyxNmOrY,55519
100
+ onetick/py/core/column_operations/accessors/_accessor.py,sha256=b5K4OQmnO4NeFK1QsKjgZ1WfEyBjxKWMkb12RBbnGXQ,983
101
+ onetick/py/core/column_operations/accessors/decimal_accessor.py,sha256=DwgJ-as0p_gex6UGxhxhsn9chSpne5YV-t1ntvr-saw,3345
102
+ onetick/py/core/column_operations/accessors/dt_accessor.py,sha256=UeY7UNUiaLdrX0S68SuEk7gXASGCjJoRdTq0pm30ktQ,18616
103
+ onetick/py/core/column_operations/accessors/float_accessor.py,sha256=IjZNrUzdT_u1szJFOI5ivExbvzC5KwiHwz6CFMMZRo0,5994
104
+ onetick/py/core/column_operations/accessors/str_accessor.py,sha256=kpCQQQJd02yWsTVwkAMYBfJMTePSffzDiT-6utRqNB4,55248
105
105
  onetick/py/db/__init__.py,sha256=-TKRO0suXTR-mLAppYt-Vegu9HQn7LU_JcObXpS3N9M,61
106
- onetick/py/db/_inspection.py,sha256=Ir2fauWhysUcNmX_84Z66HU891eEBJXy_RIxa8TT3xc,46177
107
- onetick/py/db/db.py,sha256=nlkwQ0cDo2T7am4stNbbP_5NVDWD-nOIcoWYFVzr-_w,55920
106
+ onetick/py/db/_inspection.py,sha256=oBd5XAk2RGHad7KpS62Ftwlmqx96EUxIFYCbZ-Qyt94,48288
107
+ onetick/py/db/db.py,sha256=3K1X9RQ2ObXGxyxSi-jSSl6b7p0OuGZJJkx9SGzkBsc,55930
108
108
  onetick/py/db/utils.py,sha256=gt-KmbGgcp1tH81LH-cLO08n2Hx8GaBPbvfEN22mgLg,2309
109
109
  onetick/py/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
110
  onetick/py/docs/docstring_parser.py,sha256=j38L1jO1JFAzYqR1F5hilIzcIjOWILqNQSB25Fd2hhM,3695
@@ -129,7 +129,7 @@ onetick/py/sources/snapshots.py,sha256=-CAHisUNUFexgFoeKcAVv6gK47TGWxh6bAbsHiHDr
129
129
  onetick/py/sources/split_query_output_by_symbol.py,sha256=5fKIZfF8FAgLjx_TiHpts8J4JtxoetF-5bEj6nsxbdI,8157
130
130
  onetick/py/sources/symbology_mapping.py,sha256=01mwI4w9yxeg2VcxJRaR72MDafjyUBZvMopJC1hhjh0,4809
131
131
  onetick/py/sources/symbols.py,sha256=SeJ-tzLBPDMk3OFsrUXjQ2HyxR_Oe1HkNFWzeotpVTc,15226
132
- onetick/py/sources/ticks.py,sha256=uBYeHgQIu_g4niatBQnbB4UKuvfnflc34HlWrcC2xn4,32492
132
+ onetick/py/sources/ticks.py,sha256=W1yJzJAdgchy4SnCApthUcVzX41580H7o5588Wj0pXs,32502
133
133
  onetick/py/utils/__init__.py,sha256=c8YnEcQTOoU3LxZtshBbn6O-WNhyTcwkRvO2efML9k8,1329
134
134
  onetick/py/utils/acl.py,sha256=da4_rrV3pA7_9OcjvRxtZ0ofzwNxslGVbWqFUJK2rSw,2692
135
135
  onetick/py/utils/config.py,sha256=1GeJVQeOolkHZJWJrbzp03SOlyN4N9Y0qR0s_nJDE6c,5557
@@ -144,9 +144,9 @@ onetick/py/utils/script.py,sha256=Y8NujEo2_5QaP6KDnLKJiKQ7SmMjw8_dv8sYL9rHDCE,11
144
144
  onetick/py/utils/temp.py,sha256=j-BC155dE46k0zfKTTs26KTF0CK6WA1hO2GD54iunyM,17380
145
145
  onetick/py/utils/types.py,sha256=_tYf66r9JVgjtiCJfxIxrg_BQEjHkjlnck_i86dBYEY,3606
146
146
  onetick/py/utils/tz.py,sha256=QXclESLGU8YXysUT9DXkcBqLWWO47Bb_tanFUzYpPZI,2800
147
- onetick_py-1.170.0.dist-info/licenses/LICENSE,sha256=Yhu7lKNFS0fsaN-jSattEMRtCOPueP58Eu5BPH8ZGjM,1075
148
- onetick_py-1.170.0.dist-info/METADATA,sha256=dNMjb5PlKNsSALPPCEE_0HfKBpvU1tuAQIDgodWCffo,8024
149
- onetick_py-1.170.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
150
- onetick_py-1.170.0.dist-info/entry_points.txt,sha256=QmK_tFswIN-SQRmtnTSBEi8GvT0TVq-66IzXXZIsV3U,81
151
- onetick_py-1.170.0.dist-info/top_level.txt,sha256=Na1jSJmVMyYGOndaswt554QKIUwQjcYh6th2ATsmw0U,23
152
- onetick_py-1.170.0.dist-info/RECORD,,
147
+ onetick_py-1.172.0.dist-info/licenses/LICENSE,sha256=Yhu7lKNFS0fsaN-jSattEMRtCOPueP58Eu5BPH8ZGjM,1075
148
+ onetick_py-1.172.0.dist-info/METADATA,sha256=NOHCPlqgp-lzXlGekA1oDazmitCNBSoDrhnqlgkjOrg,8216
149
+ onetick_py-1.172.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
150
+ onetick_py-1.172.0.dist-info/entry_points.txt,sha256=QmK_tFswIN-SQRmtnTSBEi8GvT0TVq-66IzXXZIsV3U,81
151
+ onetick_py-1.172.0.dist-info/top_level.txt,sha256=Na1jSJmVMyYGOndaswt554QKIUwQjcYh6th2ATsmw0U,23
152
+ onetick_py-1.172.0.dist-info/RECORD,,