onetick-py 1.172.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/_version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # This file was generated automatically. DO NOT CHANGE.
2
- VERSION = '1.172.0'
2
+ VERSION = '1.173.0'
@@ -3,6 +3,7 @@ import warnings
3
3
  from dataclasses import dataclass, astuple
4
4
  from datetime import datetime
5
5
  from typing import Optional
6
+
6
7
  from packaging.version import parse as parse_version
7
8
 
8
9
  import onetick.py as otp
@@ -416,14 +417,15 @@ def is_odbc_query_supported():
416
417
 
417
418
 
418
419
  def is_event_processor_repr_upper():
419
- return _is_min_build_or_version(None, None,
420
- 20240205120000, min_update_number=0) or otq.webapi
420
+ if otq.webapi:
421
+ return True
422
+ return _is_min_build_or_version(1.25, None,
423
+ 20240205120000, min_update_number=0)
421
424
 
422
425
 
423
426
  def is_date_trunc_fixed():
424
- # tests/core/accessors/test_dt.py::TestDateTrunc::test_dst_year
425
- # this test will show, when release fixes the issue
426
- return _is_min_build_or_version(None, None,
427
+ # Fixed 0032253: DATE_TRUNC function returns wrong answer in case of daylight saving time
428
+ return _is_min_build_or_version(1.25, None,
427
429
  20240205120000, min_update_number=0)
428
430
 
429
431
 
@@ -511,7 +513,8 @@ def is_duplicating_quotes_not_supported():
511
513
  # 20240329: Fixed 0032754:
512
514
  # Logical expressions should trigger error when duplicate single(or double) quote
513
515
  # is directly followed or preceded by some name
514
- return _is_min_build_or_version(None, None, 20240330120000)
516
+ return _is_min_build_or_version(1.25, None,
517
+ 20240330120000)
515
518
 
516
519
 
517
520
  def are_quotes_in_query_params_supported():
@@ -681,9 +684,9 @@ def is_ob_virtual_prl_and_show_full_detail_supported():
681
684
 
682
685
 
683
686
  def is_per_tick_script_boolean_problem():
684
- # strange problem, couldn't reproduce it anywhere except a single onetick build
687
+ # strange problem, couldn't reproduce it anywhere except a single onetick release
685
688
  version = get_onetick_version()
686
- return version.release_version == '1.22' and version.build_number in (20220815034358, 20220128183755)
689
+ return version.release_version == '1.22'
687
690
 
688
691
 
689
692
  def is_symbol_time_override_fixed():
@@ -709,8 +712,10 @@ def is_native_plus_zstd_supported():
709
712
 
710
713
  def is_save_snapshot_database_parameter_supported():
711
714
  # 20220929: Implemented 0028559: Update SAVE_SNAPSHOT to specify output database
712
- return _is_min_build_or_version(1.23, 20230605193357,
713
- 20221111120000)
715
+ client_support = 'database' in otq.SaveSnapshot.Parameters.list_parameters()
716
+ server_support = _is_min_build_or_version(1.23, 20230605193357,
717
+ 20221111120000)
718
+ return client_support and server_support
714
719
 
715
720
 
716
721
  def is_join_with_snapshot_snapshot_fields_parameter_supported():
@@ -656,8 +656,9 @@ class Config:
656
656
  )
657
657
 
658
658
  max_expected_ticks_per_symbol = OtpProperty(
659
- description='Expected maximum number of ticks per symbol (used for performance optimizations).',
660
- base_default=2000,
659
+ description='Expected maximum number of ticks per symbol (used for performance optimizations). '
660
+ 'Default is 2000.',
661
+ base_default=None,
661
662
  allowed_types=int,
662
663
  env_var_name='OTP_MAX_EXPECTED_TICKS_PER_SYMBOL',
663
664
  )
@@ -35,7 +35,7 @@ class SymbolType:
35
35
  | :ref:`api/misc/symbol_param:Symbol Parameters Objects`
36
36
  """
37
37
 
38
- self._name = _SymbolParamColumn("_SYMBOL_NAME", str)
38
+ self.__name = _SymbolParamColumn("_SYMBOL_NAME", str)
39
39
 
40
40
  @property
41
41
  def name(self):
@@ -61,7 +61,7 @@ class SymbolType:
61
61
  4 2003-12-01 00:00:00.002 3 S1
62
62
  5 2003-12-01 00:00:00.002 -1 S2
63
63
  """
64
- return self._name
64
+ return self.__name
65
65
 
66
66
  def get(self, name, dtype, default=None):
67
67
  """
@@ -131,6 +131,9 @@ class SymbolType:
131
131
  -------
132
132
  _SymbolParamColumn
133
133
  """
134
+ if item == '__objclass__':
135
+ # fix for PY-1399 (some inspect functions try to access this special attribute)
136
+ raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{item}'")
134
137
  if not item.startswith('_') and item != 'pytest_mock_example_attribute_that_shouldnt_exist':
135
138
  warnings.warn("`__getattr__` method is deprecated. Please, use `__getitem__` method instead.",
136
139
  FutureWarning, stacklevel=2)
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.172.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
@@ -13,11 +13,11 @@ 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=7nbtSF9w76mnK4B_3vuXM8dDMY1zw1fS3UowT04mTiE,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
19
+ onetick/py/compatibility.py,sha256=PyQVs4h8vs_9qKocb117jyu1sNmUvqHj9o9r9NqI-9E,31036
20
+ onetick/py/configuration.py,sha256=KCX44v_nEOZDvo-rItIrNVKKvqyM73QUwIivez2VHvY,28448
21
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
@@ -25,12 +25,12 @@ 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
@@ -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
@@ -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.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,,
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,,