onetick-py 1.171.0__py3-none-any.whl → 1.173.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.
onetick/py/math.py CHANGED
@@ -760,7 +760,12 @@ def gcd(value1, value2):
760
760
 
761
761
  def floor(value):
762
762
  """
763
- Returns a long integer value representing the largest integer that is less than or equal to the ``value``.
763
+ Returns a float value representing the largest number that is less than or equal to the ``value``.
764
+
765
+ Note
766
+ ----
767
+ Rounding :class:`otp.nan <onetick.py.nan>` returns NaN
768
+ and rounding :class:`otp.inf <onetick.py.inf>` returns Infinity.
764
769
 
765
770
  Parameters
766
771
  ----------
@@ -772,29 +777,41 @@ def floor(value):
772
777
 
773
778
  Examples
774
779
  --------
775
- >>> data = otp.Ticks(A=[-1.7, -1.5, -1.2, -1, 0 , 1, 1.2, 1.5, 1.7])
780
+ >>> data = otp.Ticks(A=[-1.7, -1.5, -1.2, -1, 0 , 1, 1.2, 1.5, 1.7, -otp.inf, otp.inf, otp.nan])
776
781
  >>> data['FLOOR'] = otp.math.floor(data['A'])
777
782
  >>> otp.run(data)
778
- Time A FLOOR
779
- 0 2003-12-01 00:00:00.000 -1.7 -2
780
- 1 2003-12-01 00:00:00.001 -1.5 -2
781
- 2 2003-12-01 00:00:00.002 -1.2 -2
782
- 3 2003-12-01 00:00:00.003 -1.0 -1
783
- 4 2003-12-01 00:00:00.004 0.0 0
784
- 5 2003-12-01 00:00:00.005 1.0 1
785
- 6 2003-12-01 00:00:00.006 1.2 1
786
- 7 2003-12-01 00:00:00.007 1.5 1
787
- 8 2003-12-01 00:00:00.008 1.7 1
788
- """
783
+ Time A FLOOR
784
+ 0 2003-12-01 00:00:00.000 -1.7 -2.0
785
+ 1 2003-12-01 00:00:00.001 -1.5 -2.0
786
+ 2 2003-12-01 00:00:00.002 -1.2 -2.0
787
+ 3 2003-12-01 00:00:00.003 -1.0 -1.0
788
+ 4 2003-12-01 00:00:00.004 0.0 0.0
789
+ 5 2003-12-01 00:00:00.005 1.0 1.0
790
+ 6 2003-12-01 00:00:00.006 1.2 1.0
791
+ 7 2003-12-01 00:00:00.007 1.5 1.0
792
+ 8 2003-12-01 00:00:00.008 1.7 1.0
793
+ 9 2003-12-01 00:00:00.009 -inf -inf
794
+ 10 2003-12-01 00:00:00.010 inf inf
795
+ 11 2003-12-01 00:00:00.011 NaN NaN
796
+ """
797
+ def fun(v):
798
+ v = value2str(v)
799
+ return f'CASE({v}, NAN(), NAN(), INFINITY(), INFINITY(), -INFINITY(), -INFINITY(), FLOOR({v}) * 1.0)', float
800
+
789
801
  return _Operation(
790
- op_func=lambda v: (f'FLOOR({value2str(v)})', int),
802
+ op_func=fun,
791
803
  op_params=[value],
792
804
  )
793
805
 
794
806
 
795
807
  def ceil(value):
796
808
  """
797
- Returns a long integer value representing the smallest integer that is greater than or equal to the ``value``.
809
+ Returns a float value representing the smallest number that is greater than or equal to the ``value``.
810
+
811
+ Note
812
+ ----
813
+ Rounding :class:`otp.nan <onetick.py.nan>` returns NaN
814
+ and rounding :class:`otp.inf <onetick.py.inf>` returns Infinity.
798
815
 
799
816
  Parameters
800
817
  ----------
@@ -806,21 +823,113 @@ def ceil(value):
806
823
 
807
824
  Examples
808
825
  --------
809
- >>> data = otp.Ticks(A=[-1.7, -1.5, -1.2, -1, 0 , 1, 1.2, 1.5, 1.7])
826
+ >>> data = otp.Ticks(A=[-1.7, -1.5, -1.2, -1, 0 , 1, 1.2, 1.5, 1.7, -otp.inf, otp.inf, otp.nan])
810
827
  >>> data['CEIL'] = otp.math.ceil(data['A'])
811
828
  >>> otp.run(data)
812
- Time A CEIL
813
- 0 2003-12-01 00:00:00.000 -1.7 -1
814
- 1 2003-12-01 00:00:00.001 -1.5 -1
815
- 2 2003-12-01 00:00:00.002 -1.2 -1
816
- 3 2003-12-01 00:00:00.003 -1.0 -1
817
- 4 2003-12-01 00:00:00.004 0.0 0
818
- 5 2003-12-01 00:00:00.005 1.0 1
819
- 6 2003-12-01 00:00:00.006 1.2 2
820
- 7 2003-12-01 00:00:00.007 1.5 2
821
- 8 2003-12-01 00:00:00.008 1.7 2
822
- """
829
+ Time A CEIL
830
+ 0 2003-12-01 00:00:00.000 -1.7 -1.0
831
+ 1 2003-12-01 00:00:00.001 -1.5 -1.0
832
+ 2 2003-12-01 00:00:00.002 -1.2 -1.0
833
+ 3 2003-12-01 00:00:00.003 -1.0 -1.0
834
+ 4 2003-12-01 00:00:00.004 0.0 0.0
835
+ 5 2003-12-01 00:00:00.005 1.0 1.0
836
+ 6 2003-12-01 00:00:00.006 1.2 2.0
837
+ 7 2003-12-01 00:00:00.007 1.5 2.0
838
+ 8 2003-12-01 00:00:00.008 1.7 2.0
839
+ 9 2003-12-01 00:00:00.009 -inf -inf
840
+ 10 2003-12-01 00:00:00.010 inf inf
841
+ 11 2003-12-01 00:00:00.011 NaN NaN
842
+ """
843
+ def fun(v):
844
+ v = value2str(v)
845
+ return f'CASE({v}, NAN(), NAN(), INFINITY(), INFINITY(), -INFINITY(), -INFINITY(), CEIL({v}) * 1.0)', float
846
+
823
847
  return _Operation(
824
- op_func=lambda v: (f'CEIL({value2str(v)})', int),
848
+ op_func=fun,
825
849
  op_params=[value],
826
850
  )
851
+
852
+
853
+ def round(value, precision=0, rounding_method='upward'):
854
+ """
855
+ Rounds value with specified ``precision`` and ``rounding_method``.
856
+
857
+ Rounding :class:`otp.nan <onetick.py.nan>` returns NaN
858
+ and rounding :class:`otp.inf <onetick.py.inf>` returns Infinity.
859
+
860
+ Parameters
861
+ ----------
862
+ precision: int
863
+ Number from -12 to 12.
864
+ Positive precision is precision after the floating point.
865
+ Negative precision is precision before the floating point (and the fraction part is dropped in this case).
866
+ rounding_method: str
867
+ Used for values that are exactly half-way between two integers (when the fraction part of value is exactly 0.5).
868
+ Available values are **upward**, **downward**, **towards_zero**, **away_from_zero**.
869
+ Default is **upward**.
870
+
871
+ Examples
872
+ --------
873
+
874
+ Different rounding methods produce different results for values that are exactly half-way between two integers:
875
+
876
+ >>> t = otp.Ticks(A=[-123.45, 123.45, -123.4, 123.6])
877
+ >>> t['UPWARD'] = otp.math.round(t['A'], precision=1, rounding_method='upward')
878
+ >>> t['DOWNWARD'] = otp.math.round(t['A'], precision=1, rounding_method='downward')
879
+ >>> t['TOWARDS_ZERO'] = otp.math.round(t['A'], precision=1, rounding_method='towards_zero')
880
+ >>> t['AWAY_FROM_ZERO'] = otp.math.round(t['A'], precision=1, rounding_method='away_from_zero')
881
+ >>> otp.run(t).head(2)
882
+ Time A UPWARD DOWNWARD TOWARDS_ZERO AWAY_FROM_ZERO
883
+ 0 2003-12-01 00:00:00.000 -123.45 -123.4 -123.5 -123.4 -123.5
884
+ 1 2003-12-01 00:00:00.001 123.45 123.5 123.4 123.4 123.5
885
+
886
+ Note that for other cases all methods produce the same results:
887
+
888
+ >>> otp.run(t).tail(2)
889
+ Time A UPWARD DOWNWARD TOWARDS_ZERO AWAY_FROM_ZERO
890
+ 2 2003-12-01 00:00:00.002 -123.4 -123.4 -123.4 -123.4 -123.4
891
+ 3 2003-12-01 00:00:00.003 123.6 123.6 123.6 123.6 123.6
892
+
893
+ Positive precision truncates to the number of digits *after* floating point:
894
+
895
+ >>> t = otp.Ticks(A=[-123.45, 123.45])
896
+ >>> t['ROUND1'] = otp.math.round(t['A'], 1)
897
+ >>> t['ROUND2'] = otp.math.round(t['A'], 2)
898
+ >>> otp.run(t)
899
+ Time A ROUND1 ROUND2
900
+ 0 2003-12-01 00:00:00.000 -123.45 -123.4 -123.45
901
+ 1 2003-12-01 00:00:00.001 123.45 123.5 123.45
902
+
903
+ Negative precision truncates to the number of digits *before* floating point
904
+ (and the fraction part is dropped in this case):
905
+
906
+ >>> t = otp.Ticks(A=[-123.45, 123.45])
907
+ >>> t['ROUND_M1'] = otp.math.round(t['A'], -1)
908
+ >>> t['ROUND_M2'] = otp.math.round(t['A'], -2)
909
+ >>> otp.run(t)
910
+ Time A ROUND_M1 ROUND_M2
911
+ 0 2003-12-01 00:00:00.000 -123.45 -120.0 -100.0
912
+ 1 2003-12-01 00:00:00.001 123.45 120.0 100.0
913
+
914
+ Rounding :class:`otp.nan <onetick.py.nan>` returns NaN
915
+ and rounding :class:`otp.inf <onetick.py.inf>` returns Infinity in all cases:
916
+
917
+ >>> t = otp.Ticks(A=[otp.inf, -otp.inf, otp.nan])
918
+ >>> t['ROUND_0'] = otp.math.round(t['A'])
919
+ >>> t['ROUND_P2'] = otp.math.round(t['A'], 2)
920
+ >>> t['ROUND_M2'] = otp.math.round(t['A'], -2)
921
+ >>> otp.run(t)
922
+ Time A ROUND_0 ROUND_P2 ROUND_M2
923
+ 0 2003-12-01 00:00:00.000 inf inf inf inf
924
+ 1 2003-12-01 00:00:00.001 -inf -inf -inf -inf
925
+ 2 2003-12-01 00:00:00.002 NaN NaN NaN NaN
926
+ """
927
+ if not -12 <= precision <= 12:
928
+ raise ValueError("Parameter 'precision' must be an integer in range [-12, 12]")
929
+ supported_rounding_methods = {'upward', 'downward', 'towards_zero', 'away_from_zero'}
930
+ if rounding_method not in supported_rounding_methods:
931
+ raise ValueError(f"Parameter 'rounding_method' must be one of {supported_rounding_methods}")
932
+ return _Operation(
933
+ op_func=lambda v, p, r: (f'ROUND_DOUBLE({value2str(v)},{value2str(p)},{value2str(r)})', float),
934
+ op_params=[value, precision, rounding_method],
935
+ )
onetick/py/run.py CHANGED
@@ -557,8 +557,10 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
557
557
  kwargs['password'] = password
558
558
 
559
559
  max_expected_ticks_per_symbol = max_expected_ticks_per_symbol or otp.config.max_expected_ticks_per_symbol
560
- if has_max_expected_ticks_per_symbol(throw_warning=True):
560
+ if max_expected_ticks_per_symbol is not None and has_max_expected_ticks_per_symbol(throw_warning=True):
561
561
  kwargs['max_expected_ticks_per_symbol'] = max_expected_ticks_per_symbol
562
+ elif max_expected_ticks_per_symbol is None and has_max_expected_ticks_per_symbol(throw_warning=False):
563
+ kwargs['max_expected_ticks_per_symbol'] = 2000
562
564
 
563
565
  if encoding is not None and has_query_encoding_parameter(throw_warning=True):
564
566
  kwargs['encoding'] = encoding
onetick/py/types.py CHANGED
@@ -3,14 +3,14 @@ import functools
3
3
  import inspect
4
4
  import warnings
5
5
  from typing import Optional, Type, Union
6
- from packaging.version import parse as parse_version
7
-
8
- import pandas as pd
9
- import numpy as np
10
6
  from datetime import date as _date
11
7
  from datetime import datetime as _datetime
8
+ from datetime import timedelta as _timedelta
12
9
 
10
+ import pandas as pd
11
+ import numpy as np
13
12
  from pandas.tseries import offsets
13
+ from packaging.version import parse as parse_version
14
14
 
15
15
  import onetick.py as otp
16
16
  from onetick.py.otq import otq, pyomd
@@ -1095,7 +1095,9 @@ class datetime(AbstractTime):
1095
1095
  def _process_timezones_args(self, tz, tzinfo):
1096
1096
  if tz is not None:
1097
1097
  if tzinfo is None:
1098
- tzinfo = get_tzfile_by_name(tz) # pandas is broken https://github.com/pandas-dev/pandas/issues/31929
1098
+ # parameter tz in pandas.Timestamp is broken https://github.com/pandas-dev/pandas/issues/31929
1099
+ # it is fixed in pandas>=2.0.0, but we need to support older versions
1100
+ tzinfo = get_tzfile_by_name(tz)
1099
1101
  tz = None
1100
1102
  else:
1101
1103
  raise ValueError(
@@ -1936,21 +1938,12 @@ def is_time_type(time):
1936
1938
 
1937
1939
  def next_day(dt_obj: Union[_date, _datetime, date, datetime, pd.Timestamp]) -> _datetime:
1938
1940
  """
1939
- Return next day of ``dt_obj`` as datetime.datetime.
1940
- """
1941
- updated_dt = dt_obj + Day(1)
1942
-
1943
- # If we switch ts on timezone transition time, ts changes its timezone offset
1944
- if hasattr(dt_obj, "tzinfo") and updated_dt.tzinfo != dt_obj.tzinfo:
1945
- dt_offset = dt_obj.tzinfo.utcoffset(dt_obj)
1946
- updated_dt_offset = updated_dt.tzinfo.utcoffset(updated_dt)
1941
+ Return the start of the next day of ``dt_obj`` as timezone-naive :py:class:`datetime.datetime`.
1947
1942
 
1948
- tz_diff = dt_offset - updated_dt_offset
1949
- updated_dt += tz_diff
1950
-
1951
- updated_date = updated_dt.date()
1952
-
1953
- return _datetime(updated_date.year, updated_date.month, updated_date.day)
1943
+ Next day in this case means simply incrementing day/month/year number,
1944
+ not adding 24 hours (which may return the same date on DST days).
1945
+ """
1946
+ return _datetime(dt_obj.year, dt_obj.month, dt_obj.day) + _timedelta(days=1)
1954
1947
 
1955
1948
 
1956
1949
  def default_by_type(dtype):
onetick/py/utils/tz.py CHANGED
@@ -3,8 +3,8 @@ import sys
3
3
  import warnings
4
4
 
5
5
  from typing import Optional
6
+ from contextlib import suppress
6
7
 
7
- import pytz
8
8
  import dateutil.tz
9
9
  import tzlocal
10
10
 
@@ -15,8 +15,8 @@ from onetick.py.backports import zoneinfo
15
15
  def get_tzfile_by_name(timezone):
16
16
  if isinstance(timezone, str):
17
17
  try:
18
- timezone = pytz.timezone(timezone)
19
- except pytz.exceptions.UnknownTimeZoneError:
18
+ timezone = zoneinfo.ZoneInfo(timezone)
19
+ except zoneinfo.ZoneInfoNotFoundError:
20
20
  timezone = dateutil.tz.gettz(timezone)
21
21
  return timezone
22
22
 
@@ -35,8 +35,10 @@ def get_timezone_from_datetime(dt) -> Optional[str]:
35
35
  return None
36
36
  if tzinfo is datetime.timezone.utc:
37
37
  return 'UTC'
38
- if isinstance(tzinfo, pytz.BaseTzInfo):
39
- return tzinfo.zone
38
+ with suppress(ModuleNotFoundError):
39
+ import pytz
40
+ if isinstance(tzinfo, pytz.BaseTzInfo):
41
+ return tzinfo.zone
40
42
  if isinstance(tzinfo, zoneinfo.ZoneInfo):
41
43
  return tzinfo.key
42
44
  if isinstance(tzinfo, dateutil.tz.tzlocal):
@@ -48,7 +50,7 @@ def get_timezone_from_datetime(dt) -> Optional[str]:
48
50
  warnings.warn(
49
51
  "It's not recommended to use dateutil.tz timezones on Windows platform. "
50
52
  "Function 'get_timezone_from_datetime' can't guarantee correct results in this case. "
51
- "Please, use pytz or zoneinfo timezones instead."
53
+ "Please, use zoneinfo timezones instead."
52
54
  )
53
55
  if hasattr(tzinfo, '_filename'):
54
56
  if tzinfo._filename == '/etc/localtime':
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetick-py
3
- Version: 1.171.0
3
+ Version: 1.173.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
@@ -19,40 +19,26 @@ Classifier: Environment :: Console
19
19
  Requires-Python: >=3.9
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
- Requires-Dist: pandas==1.1.5; python_version == "3.6"
23
- Requires-Dist: pandas==1.3.4; python_version == "3.7"
24
- Requires-Dist: pandas<2.1.0,>=1.3.4; python_version == "3.8"
25
- Requires-Dist: pandas<2.3.0,>=1.3.4; python_version == "3.9"
26
- Requires-Dist: pandas<2.3.0,>=1.5.1; python_version == "3.10"
27
- Requires-Dist: pandas<2.3.0,>=1.5.3; python_version == "3.11"
28
- Requires-Dist: pandas<2.3.0,>=2.2.0; python_version >= "3.12"
29
- Requires-Dist: pyarrow; python_version >= "3.12"
30
- Requires-Dist: numpy==1.19.5; python_version <= "3.7"
31
- Requires-Dist: numpy==1.21.6; python_version == "3.8"
32
- Requires-Dist: numpy<2.3.0,>=1.20.3; python_version >= "3.9"
22
+ Requires-Dist: pandas>=1.5.2
23
+ Requires-Dist: numpy
33
24
  Requires-Dist: coolname
34
25
  Requires-Dist: python-dateutil
35
26
  Requires-Dist: python-dotenv
36
27
  Requires-Dist: tzlocal
37
28
  Requires-Dist: tzdata
38
- Requires-Dist: backports.zoneinfo==0.2.1; python_version < "3.9"
39
- Requires-Dist: typing_extensions==4.7.1; python_version < "3.8"
40
- Requires-Dist: singledispatchmethod==1.0; python_version < "3.8"
41
- Requires-Dist: backports.cached-property==1.0.2; python_version <= "3.8"
42
- Requires-Dist: backports.functools-lru-cache==1.6.6; python_version <= "3.8"
43
- Requires-Dist: astunparse==1.6.3; python_version <= "3.8"
44
29
  Requires-Dist: graphviz==0.20.1; python_version > "3.6"
45
30
  Requires-Dist: packaging>=21.0
46
31
  Provides-Extra: strict
47
- Requires-Dist: numpy==1.19.5; python_version <= "3.7" and extra == "strict"
48
- Requires-Dist: numpy==1.21.6; python_version == "3.8" and extra == "strict"
49
- Requires-Dist: numpy==1.23.0; (python_version >= "3.9" and python_version <= "3.10") and extra == "strict"
50
- Requires-Dist: numpy==1.26.4; (python_version >= "3.11" and python_version <= "3.12") and extra == "strict"
51
- Requires-Dist: pandas==1.1.5; python_version == "3.6" and extra == "strict"
52
- Requires-Dist: pandas==1.3.4; (python_version >= "3.7" and python_version <= "3.9") and extra == "strict"
53
- Requires-Dist: pandas==1.5.1; python_version == "3.10" and extra == "strict"
32
+ Requires-Dist: numpy==1.23.0; python_version == "3.9" and extra == "strict"
33
+ Requires-Dist: numpy==1.23.0; python_version == "3.10" and extra == "strict"
34
+ Requires-Dist: numpy==1.26.4; python_version == "3.11" and extra == "strict"
35
+ Requires-Dist: numpy==1.26.4; python_version == "3.12" and extra == "strict"
36
+ Requires-Dist: pandas==1.5.2; python_version == "3.9" and extra == "strict"
37
+ Requires-Dist: pandas==1.5.3; python_version == "3.10" and extra == "strict"
54
38
  Requires-Dist: pandas==1.5.3; python_version == "3.11" and extra == "strict"
55
- Requires-Dist: pandas==2.2.0; python_version >= "3.12" and extra == "strict"
39
+ Requires-Dist: pandas==2.2.0; python_version == "3.12" and extra == "strict"
40
+ Requires-Dist: pandas==2.3.0; python_version == "3.13" and extra == "strict"
41
+ Requires-Dist: pandas==2.3.3; python_version == "3.14" and extra == "strict"
56
42
  Provides-Extra: webapi
57
43
  Requires-Dist: onetick.query_webapi; extra == "webapi"
58
44
  Provides-Extra: polars
@@ -85,7 +71,7 @@ The latest version of ``onetick-py`` is available on PyPI: <https://pypi.org/pro
85
71
 
86
72
  pip install onetick-py[webapi]
87
73
 
88
- Use ``webapi`` extra to easily use it with remote OneTick Cloud server.
74
+ Use ``webapi`` extra to easily use it with remote OneTick REST Servers, such as [OneTick Cloud](https://www.onetick.com/cloud-services).
89
75
 
90
76
  See [Getting Started](https://docs.pip.distribution.sol.onetick.com/static/getting_started/root.html)
91
77
  section in the documentation to see how quickly set up ``onetick-py`` configuration
@@ -112,6 +98,8 @@ section in the documentation.
112
98
  - **Data Visualization**: Compatible with OneTick's visualization tool, OneTick Dashboard.
113
99
  - **Machine Learning**: Integrates with the OneTick ML library [onetick-ml](https://dsframework.pip.distribution.sol.onetick.com/intro.html).
114
100
  - **Industry Applications**: Industry leading OneTick's Trade Surveillance and BestEx/TCA solutions are written in ``onetick.py``.
101
+ - **Back Testing**: Retrieve historic market data and metrics.
102
+ - **Market Microstructure**: Consolidated Book Depth analysis.
115
103
 
116
104
  ## Advantages Over Competitors
117
105
 
@@ -13,24 +13,24 @@ onetick/lib/__init__.py,sha256=Rp7CIDoA4E6LIm1f2mNvl_5b_n-0U3suA3FmBXbmKoU,114
13
13
  onetick/lib/instance.py,sha256=3FJB8PWs2ap-EGb6DzsnLRL2meTMUViTdy343m6tHvM,4825
14
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=R6vgYKh_qtyxN49H_qTnzUglwwB5_XMe8UEeYU-DvfM,76
16
+ onetick/py/_version.py,sha256=xgAl00OwXSmPbqAEjJJgqhprH9I04svQhlQygpZzYfQ,76
17
17
  onetick/py/backports.py,sha256=mR00mxe7E7UgBljf-Wa93Mo6lpi-C4Op561uhPUoEt8,815
18
18
  onetick/py/cache.py,sha256=BBZg8n0AGjZzZapg4752LkSZdX5C6DGf7vU9sAStv6A,12798
19
- onetick/py/compatibility.py,sha256=x-TXsOqPNb2gnARSDwyZba-1FE7bvuat2vrObRCSywo,30917
20
- onetick/py/configuration.py,sha256=cMUl6XNjO3qgpO5PmOplb2uFSAQtWPu7pIUNhhRpjL4,28408
21
- onetick/py/functions.py,sha256=LyLQ7NTNFzKfkR3A5RazS3tOtVqORe1BPrg6B4AAuLM,97689
19
+ onetick/py/compatibility.py,sha256=PyQVs4h8vs_9qKocb117jyu1sNmUvqHj9o9r9NqI-9E,31036
20
+ onetick/py/configuration.py,sha256=KCX44v_nEOZDvo-rItIrNVKKvqyM73QUwIivez2VHvY,28448
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=LcbVcmW6GJHcjJJiPNZe5Mh5ZJBpdC8AxJMltMA1Apk,21357
24
+ onetick/py/math.py,sha256=MZvlyUjxOWGJvmxK8pfMkCr4THM52AE6NyGEidgDMyE,26311
25
25
  onetick/py/misc.py,sha256=mD-EJslLGjQ0ROEez76HvOY0tsX8_1bC1QOkyHY9FZ8,13934
26
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=gwbDxjOBioBfIS-X8797QYD4D2VdcY8o8WbRa_XlB-M,40419
28
+ onetick/py/run.py,sha256=r0d7FHnMRabxS47W8ilH5diT1XdK3n5Udu7lsQ8u3eA,40627
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
32
32
  onetick/py/state.py,sha256=giQpUUXWwuz_CL_VvxNQDaM71LAMPqeRgHfoGhS1gTk,10330
33
- onetick/py/types.py,sha256=OfBTkKNQ7KrNceRXNPUJ36HyA-4sMUf_9T0TSYy-5Fc,64662
33
+ onetick/py/types.py,sha256=U4FSaMN_y1OUrcN6reVidbew-X2jIWj6S_lS6GvYsUo,64599
34
34
  onetick/py/aggregations/__init__.py,sha256=02WnTc9ocTp34OkGyXRHY2QAZi_QjDMHClE5tvx6Gtk,736
35
35
  onetick/py/aggregations/_base.py,sha256=YQWlFYlq_QvGwTIaNGuyoU8rQsYfx-Yd-lNNq4R_o6o,25702
36
36
  onetick/py/aggregations/_docs.py,sha256=7pz6XIhRuP_1vuOYO9UfTlzl6zGD2_jwbPMfJPOX-M8,34798
@@ -51,7 +51,7 @@ 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
54
+ onetick/py/core/multi_output_source.py,sha256=f3dXr9kwmED77oWDFVr9cn44aYiJxC81loq2pX4u50Q,8766
55
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
@@ -68,7 +68,7 @@ onetick/py/core/_internal/_per_tick_scripts/tick_list_sort_template.script,sha25
68
68
  onetick/py/core/_source/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
69
  onetick/py/core/_source/_symbol_param.py,sha256=odFDK85lIa_mqQW-yA4ozz9DFPqWA0qWMjY0UDkniDQ,3233
70
70
  onetick/py/core/_source/schema.py,sha256=WWaa2HtSNNp1G4Z4Hx85fnUJpTvpBnX7xmDq3Jct9XM,2619
71
- onetick/py/core/_source/symbol.py,sha256=99VZyRAaGLSl4Qd_juPM_Yqj5yzBDhJADweTn7OQu2s,8042
71
+ onetick/py/core/_source/symbol.py,sha256=H274Xd-f_0IqF6jMKmxIvQj1lGD-3F54E27y8A-lSYA,8269
72
72
  onetick/py/core/_source/tmp_otq.py,sha256=I4FZdmo-_uIX0QIEMup9v2IgDB2aPEKsRu3y8z8YK3Y,9010
73
73
  onetick/py/core/_source/source_methods/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  onetick/py/core/_source/source_methods/aggregations.py,sha256=EBdHV8IFwdptPDxQncHjtXkNr6lOCvp06OmjBzFs4AU,27526
@@ -88,23 +88,23 @@ onetick/py/core/_source/source_methods/sorts.py,sha256=tDFt3rObNHP-S_HOtDd6SLpgk
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
106
  onetick/py/db/_inspection.py,sha256=oBd5XAk2RGHad7KpS62Ftwlmqx96EUxIFYCbZ-Qyt94,48288
107
- onetick/py/db/db.py,sha256=nlkwQ0cDo2T7am4stNbbP_5NVDWD-nOIcoWYFVzr-_w,55920
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
@@ -143,10 +143,10 @@ onetick/py/utils/render.py,sha256=9SBKfKsHCrdF-FOZFGon7TalzXydCdPHINouRUwHMKM,38
143
143
  onetick/py/utils/script.py,sha256=Y8NujEo2_5QaP6KDnLKJiKQ7SmMjw8_dv8sYL9rHDCE,11184
144
144
  onetick/py/utils/temp.py,sha256=j-BC155dE46k0zfKTTs26KTF0CK6WA1hO2GD54iunyM,17380
145
145
  onetick/py/utils/types.py,sha256=_tYf66r9JVgjtiCJfxIxrg_BQEjHkjlnck_i86dBYEY,3606
146
- onetick/py/utils/tz.py,sha256=QXclESLGU8YXysUT9DXkcBqLWWO47Bb_tanFUzYpPZI,2800
147
- onetick_py-1.171.0.dist-info/licenses/LICENSE,sha256=Yhu7lKNFS0fsaN-jSattEMRtCOPueP58Eu5BPH8ZGjM,1075
148
- onetick_py-1.171.0.dist-info/METADATA,sha256=xbh4fMhGnAy3uBraumRUWLE9ynOdvCc-sWefGxlcCjg,8024
149
- onetick_py-1.171.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
150
- onetick_py-1.171.0.dist-info/entry_points.txt,sha256=QmK_tFswIN-SQRmtnTSBEi8GvT0TVq-66IzXXZIsV3U,81
151
- onetick_py-1.171.0.dist-info/top_level.txt,sha256=Na1jSJmVMyYGOndaswt554QKIUwQjcYh6th2ATsmw0U,23
152
- onetick_py-1.171.0.dist-info/RECORD,,
146
+ onetick/py/utils/tz.py,sha256=sYUKigaORonp7Xa6x806xVYJ69lYJHd6NrLxQHB5AZo,2878
147
+ onetick_py-1.173.0.dist-info/licenses/LICENSE,sha256=Yhu7lKNFS0fsaN-jSattEMRtCOPueP58Eu5BPH8ZGjM,1075
148
+ onetick_py-1.173.0.dist-info/METADATA,sha256=LDGWo1_fYz7O3MZnNC_hPpHaMy0QtQ5J_1LY__KmG4o,7218
149
+ onetick_py-1.173.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
150
+ onetick_py-1.173.0.dist-info/entry_points.txt,sha256=QmK_tFswIN-SQRmtnTSBEi8GvT0TVq-66IzXXZIsV3U,81
151
+ onetick_py-1.173.0.dist-info/top_level.txt,sha256=Na1jSJmVMyYGOndaswt554QKIUwQjcYh6th2ATsmw0U,23
152
+ onetick_py-1.173.0.dist-info/RECORD,,