onetick-py 1.179.0__py3-none-any.whl → 1.180.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 +1 -1
- onetick/py/compatibility.py +6 -0
- onetick/py/configuration.py +7 -0
- onetick/py/core/_source/source_methods/fields.py +8 -0
- onetick/py/core/_source/source_methods/writes.py +12 -2
- onetick/py/otq.py +18 -2
- {onetick_py-1.179.0.dist-info → onetick_py-1.180.0.dist-info}/METADATA +1 -1
- {onetick_py-1.179.0.dist-info → onetick_py-1.180.0.dist-info}/RECORD +12 -12
- {onetick_py-1.179.0.dist-info → onetick_py-1.180.0.dist-info}/WHEEL +0 -0
- {onetick_py-1.179.0.dist-info → onetick_py-1.180.0.dist-info}/entry_points.txt +0 -0
- {onetick_py-1.179.0.dist-info → onetick_py-1.180.0.dist-info}/licenses/LICENSE +0 -0
- {onetick_py-1.179.0.dist-info → onetick_py-1.180.0.dist-info}/top_level.txt +0 -0
onetick/py/_version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# This file was generated automatically. DO NOT CHANGE.
|
|
2
|
-
VERSION = '1.
|
|
2
|
+
VERSION = '1.180.0'
|
onetick/py/compatibility.py
CHANGED
|
@@ -859,3 +859,9 @@ def is_not_fixed_bds_484():
|
|
|
859
859
|
# BDS-484: seems like timezone is ignored in otq.run in some cases
|
|
860
860
|
return _is_min_build_or_version(None, None,
|
|
861
861
|
20251010120000, min_update_number=2)
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
def is_webapi_access_token_scope_supported():
|
|
865
|
+
# 20251030: Fixed OTDEV-37063: onetick.query_webapi.get_access_token method must take scope as a parameter
|
|
866
|
+
return _is_min_build_or_version(None, None,
|
|
867
|
+
20251010120000, min_update_number=2)
|
onetick/py/configuration.py
CHANGED
|
@@ -644,6 +644,13 @@ class Config:
|
|
|
644
644
|
env_var_name='OTP_ACCESS_TOKEN_URL',
|
|
645
645
|
)
|
|
646
646
|
|
|
647
|
+
access_token_scope = OtpProperty(
|
|
648
|
+
description='Scope for obtaining SSO access token.',
|
|
649
|
+
base_default=None,
|
|
650
|
+
allowed_types=str,
|
|
651
|
+
env_var_name='OTP_ACCESS_TOKEN_SCOPE',
|
|
652
|
+
)
|
|
653
|
+
|
|
647
654
|
trusted_certificates_file = OtpProperty(
|
|
648
655
|
description='Either a boolean, in which case it controls whether we verify the server TLS certificate '
|
|
649
656
|
'or a string with the path to the file with list of '
|
|
@@ -8,6 +8,7 @@ from onetick.py.compatibility import is_existing_fields_handling_supported
|
|
|
8
8
|
from onetick.py.core._internal._state_objects import _StateColumn
|
|
9
9
|
from onetick.py.core.column import _Column, _ColumnAggregation, _LagOperator
|
|
10
10
|
from onetick.py.core.column_operations._methods.methods import is_arithmetical, is_compare
|
|
11
|
+
from onetick.py.core.column_operations._methods.op_types import are_ints_not_time
|
|
11
12
|
from onetick.py.core.column_operations.base import _Operation
|
|
12
13
|
from onetick.py.core.cut_builder import _BaseCutBuilder
|
|
13
14
|
from onetick.py.core.lambda_object import _LambdaIfElse
|
|
@@ -280,6 +281,13 @@ def _update_field(self: 'Source', field, value):
|
|
|
280
281
|
elif issubclass(field.dtype, str) and base_type is int:
|
|
281
282
|
type_changes = True
|
|
282
283
|
convert_to_type = int
|
|
284
|
+
elif (
|
|
285
|
+
are_ints_not_time(field.dtype, value_dtype) and
|
|
286
|
+
not issubclass(field.dtype, bool) and not issubclass(value_dtype, bool) and
|
|
287
|
+
value_dtype is not field.dtype
|
|
288
|
+
):
|
|
289
|
+
# case for converting values between int based types, like long or byte
|
|
290
|
+
convert_to_type = value_dtype
|
|
283
291
|
else:
|
|
284
292
|
if issubclass(value_dtype, bool):
|
|
285
293
|
value_dtype = float
|
|
@@ -259,16 +259,27 @@ def write(
|
|
|
259
259
|
raise ValueError('LOAD out_of_range_tick_action cannot be used with start_date+end_date, use date instead')
|
|
260
260
|
elif out_of_range_tick_action.upper() == 'EXCEPTION':
|
|
261
261
|
if start_date and end_date:
|
|
262
|
+
end = end_date + otp.Day(1) # end_date is inclusive
|
|
263
|
+
|
|
262
264
|
# WRITE_TO_ONETICK_DB use DAY_BOUNDARY_TZ and DAY_BOUNDARY_OFFSET
|
|
263
265
|
# to check tick timestamp is out of range or not
|
|
264
266
|
# so we mimic it here with THROW event processor
|
|
265
|
-
src = otp.Source(otq.DbShowConfig(str(db), 'DB_TIME_INTERVALS')
|
|
267
|
+
src = otp.Source(otq.DbShowConfig(str(db), 'DB_TIME_INTERVALS'), schema={
|
|
268
|
+
'DAY_BOUNDARY_TZ': int, 'DAY_BOUNDARY_OFFSET': int, 'START_DATE': int, 'END_DATE': int,
|
|
269
|
+
})
|
|
270
|
+
|
|
271
|
+
# Filter not relevant locator time intervals
|
|
272
|
+
src, _ = src[
|
|
273
|
+
(src['START_DATE'].astype(otp.msectime) <= otp.dt(start_date).to_operation()) &
|
|
274
|
+
(src['END_DATE'].astype(otp.msectime) > otp.dt(end).to_operation())
|
|
275
|
+
]
|
|
266
276
|
src.table(inplace=True, DAY_BOUNDARY_TZ=str, DAY_BOUNDARY_OFFSET=int)
|
|
267
277
|
# DAY_BOUNDARY_OFFSET offset are in seconds
|
|
268
278
|
src['DAY_BOUNDARY_OFFSET'] = src['DAY_BOUNDARY_OFFSET'] * 1000
|
|
269
279
|
src.rename(
|
|
270
280
|
{'DAY_BOUNDARY_TZ': '__DAY_BOUNDARY_TZ', 'DAY_BOUNDARY_OFFSET': '__DAY_BOUNDARY_OFFSET'}, inplace=True
|
|
271
281
|
)
|
|
282
|
+
|
|
272
283
|
self = self.join_with_query(src, symbol=f"{str(db)}::DUMMY", caching='per_symbol')
|
|
273
284
|
timezone = self['__DAY_BOUNDARY_TZ']
|
|
274
285
|
offset = self['__DAY_BOUNDARY_OFFSET']
|
|
@@ -288,7 +299,6 @@ def write(
|
|
|
288
299
|
inplace=True,
|
|
289
300
|
)
|
|
290
301
|
|
|
291
|
-
end = end_date + otp.Day(1) # end_date is inclusive
|
|
292
302
|
end_formatted = end.strftime('%Y-%m-%d')
|
|
293
303
|
end_op = otp.dt(end).to_operation(timezone=timezone) + offset
|
|
294
304
|
self.throw(
|
onetick/py/otq.py
CHANGED
|
@@ -58,7 +58,10 @@ elif otp.__webapi__:
|
|
|
58
58
|
|
|
59
59
|
def run(*args, **kwargs):
|
|
60
60
|
from onetick.py import config # noqa
|
|
61
|
-
from onetick.py.compatibility import
|
|
61
|
+
from onetick.py.compatibility import (
|
|
62
|
+
is_max_concurrency_with_webapi_supported,
|
|
63
|
+
is_webapi_access_token_scope_supported
|
|
64
|
+
)
|
|
62
65
|
|
|
63
66
|
if not config.http_address and 'http_address' not in kwargs:
|
|
64
67
|
raise ValueError('otp.run() http_address keyword param, '
|
|
@@ -149,7 +152,20 @@ elif otp.__webapi__:
|
|
|
149
152
|
if not param_value:
|
|
150
153
|
raise ValueError(f'`access_token_url` parameter set, however `{param_name}` parameter missing.')
|
|
151
154
|
|
|
152
|
-
|
|
155
|
+
token_kwargs = {}
|
|
156
|
+
|
|
157
|
+
if 'scope' in kwargs:
|
|
158
|
+
scope = kwargs.pop('scope')
|
|
159
|
+
else:
|
|
160
|
+
scope = config.access_token_scope
|
|
161
|
+
|
|
162
|
+
if scope:
|
|
163
|
+
if not is_webapi_access_token_scope_supported():
|
|
164
|
+
raise RuntimeError('Parameter `scope` is not supported on used version of OneTick')
|
|
165
|
+
|
|
166
|
+
token_kwargs['scope'] = scope
|
|
167
|
+
|
|
168
|
+
kwargs['access_token'] = otq.get_access_token(access_token_url, client_id, client_secret, **token_kwargs)
|
|
153
169
|
|
|
154
170
|
if 'access_token_url' in kwargs:
|
|
155
171
|
del kwargs['access_token_url']
|
|
@@ -13,17 +13,17 @@ 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=JVXbKakzScRnwpJVEkerJkX-UAX7Surdp4PCImvvieA,11183
|
|
15
15
|
onetick/py/_stack_info.py,sha256=PHZOkW_fK7Fbl4YEj5CaYK9L6vh4j-bUU7_cSYOWZ30,2546
|
|
16
|
-
onetick/py/_version.py,sha256=
|
|
16
|
+
onetick/py/_version.py,sha256=8n3ad__RjM8-XMyjhawmGAHuiKRoMCK49_dkHY8-P9k,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=
|
|
20
|
-
onetick/py/configuration.py,sha256=
|
|
19
|
+
onetick/py/compatibility.py,sha256=rBLoszCoSZrl9SnBYiPzWuoudZwhOP6d4exshy3BJTw,34530
|
|
20
|
+
onetick/py/configuration.py,sha256=wOmGBaaT89uz6Eny3Pp_tFpATto-qZXcqNRyy4rzmQw,28655
|
|
21
21
|
onetick/py/functions.py,sha256=Kqromia64o1K4fgbLbijw64o5pFGBZRog52824wOxlA,98004
|
|
22
22
|
onetick/py/license.py,sha256=50dsFrE-NKsPOdkAoyxHr44bH8DzFCr_6TabX0JH6tQ,6140
|
|
23
23
|
onetick/py/log.py,sha256=Els2drZcVjJrD6kvbwgFGEpg6jAacoUEtyN6rCaauuk,2723
|
|
24
24
|
onetick/py/math.py,sha256=MZvlyUjxOWGJvmxK8pfMkCr4THM52AE6NyGEidgDMyE,26311
|
|
25
25
|
onetick/py/misc.py,sha256=mD-EJslLGjQ0ROEez76HvOY0tsX8_1bC1QOkyHY9FZ8,13934
|
|
26
|
-
onetick/py/otq.py,sha256=
|
|
26
|
+
onetick/py/otq.py,sha256=TAOFw8e_p0mfTEV92qb_AzHplbv_H71hMwnT3qNmksg,8780
|
|
27
27
|
onetick/py/pyomd_mock.py,sha256=A7IIUraN9yCsPhvnHXQUZrmwFjlh7vofSnYm4G7bdsc,2006
|
|
28
28
|
onetick/py/run.py,sha256=Ql-hN0R9GZvxf0ukRUgVpqxk69Dez6T0CA1Cn2Fq1dY,40805
|
|
29
29
|
onetick/py/servers.py,sha256=h6l0X55kcnpI25bZcYaBpPAAGBZjqk9mt1SQe4xZrh0,6840
|
|
@@ -77,7 +77,7 @@ onetick/py/core/_source/source_methods/columns.py,sha256=JJNr0Wqf8B9igLVoCNtFeNE
|
|
|
77
77
|
onetick/py/core/_source/source_methods/data_quality.py,sha256=iz8e-60se-rNH72k5fRxX3cm3ahfbBZ7R7E46Be5zhs,9343
|
|
78
78
|
onetick/py/core/_source/source_methods/debugs.py,sha256=Hq08HYjF2sEZQAcBlwNMVKpu0muCWNIYEhmPqbKkSZw,10176
|
|
79
79
|
onetick/py/core/_source/source_methods/drops.py,sha256=3ZXfQWXsl0-ZLHdp6D-wTu2saqCYHZ-Gn777aMRSRp0,4403
|
|
80
|
-
onetick/py/core/_source/source_methods/fields.py,sha256=
|
|
80
|
+
onetick/py/core/_source/source_methods/fields.py,sha256=bPCViMBCBHatoC3TUcGyyLT5em2ObUyNKTr4uE3XlmA,23165
|
|
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=Qq50NfHH46jAfotXEf-lccN47erYBukJgtnP9NhOaok,61637
|
|
83
83
|
onetick/py/core/_source/source_methods/merges.py,sha256=vhU640pAUklzJh1J_yFZ7O-vFjbmSWg7jHPo0o0NXj8,24486
|
|
@@ -88,7 +88,7 @@ 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=
|
|
91
|
+
onetick/py/core/_source/source_methods/writes.py,sha256=Ar57d3Gn9ZOezyd6Gl4QgMEyZRky2NwXh32h1--XQfA,43125
|
|
92
92
|
onetick/py/core/column_operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
onetick/py/core/column_operations/base.py,sha256=gn-4rz4FMAR2pp-7e9DulKc6L05YAMkGkIiEwzHmYmo,36102
|
|
94
94
|
onetick/py/core/column_operations/_methods/__init__.py,sha256=_C5hpQG51MingtWW2N8vYzSVFpR314xIrtukBfEfPMk,207
|
|
@@ -147,9 +147,9 @@ onetick/py/utils/script.py,sha256=Y8NujEo2_5QaP6KDnLKJiKQ7SmMjw8_dv8sYL9rHDCE,11
|
|
|
147
147
|
onetick/py/utils/temp.py,sha256=j-BC155dE46k0zfKTTs26KTF0CK6WA1hO2GD54iunyM,17380
|
|
148
148
|
onetick/py/utils/types.py,sha256=7u9s9uN1jlkgud8_TSLy6iFzQFBtKJ0v3yamgOVitrs,3747
|
|
149
149
|
onetick/py/utils/tz.py,sha256=sYUKigaORonp7Xa6x806xVYJ69lYJHd6NrLxQHB5AZo,2878
|
|
150
|
-
onetick_py-1.
|
|
151
|
-
onetick_py-1.
|
|
152
|
-
onetick_py-1.
|
|
153
|
-
onetick_py-1.
|
|
154
|
-
onetick_py-1.
|
|
155
|
-
onetick_py-1.
|
|
150
|
+
onetick_py-1.180.0.dist-info/licenses/LICENSE,sha256=Yhu7lKNFS0fsaN-jSattEMRtCOPueP58Eu5BPH8ZGjM,1075
|
|
151
|
+
onetick_py-1.180.0.dist-info/METADATA,sha256=zYczc716GKhFld-J6sJWqJoiqRx5b2mYedFYyYUZ1KM,7290
|
|
152
|
+
onetick_py-1.180.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
153
|
+
onetick_py-1.180.0.dist-info/entry_points.txt,sha256=bafJo_C7lPHz5pAdlIryLzxAlJ8F-We5cC7psdwcx4Q,131
|
|
154
|
+
onetick_py-1.180.0.dist-info/top_level.txt,sha256=Na1jSJmVMyYGOndaswt554QKIUwQjcYh6th2ATsmw0U,23
|
|
155
|
+
onetick_py-1.180.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|