onetick-py 1.167.0__tar.gz → 1.169.0__tar.gz
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-1.167.0 → onetick_py-1.169.0}/PKG-INFO +1 -1
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/lib/instance.py +1 -1
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/__init__.py +3 -2
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/_version.py +1 -1
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/compatibility.py +16 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/configuration.py +8 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/joins.py +43 -28
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/db/_inspection.py +48 -7
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/run.py +14 -12
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick_py.egg-info/PKG-INFO +1 -1
- {onetick_py-1.167.0 → onetick_py-1.169.0}/LICENSE +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/README.md +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/pyproject.toml +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/requirements.strict.txt +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/requirements.txt +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/setup.cfg +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/setup.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/locator_parser/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/locator_parser/acl.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/locator_parser/actions.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/locator_parser/common.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/locator_parser/io.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/locator_parser/locator.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/doc_utilities/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/doc_utilities/napoleon.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/doc_utilities/ot_doctest.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/doc_utilities/snippets.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/lib/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/_stack_info.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/_base.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/_docs.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/compute.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/functions.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/generic.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/high_low.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/num_distinct.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/order_book.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/aggregations/other.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/backports.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/cache.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/callback/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/callback/callback.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/callback/callbacks.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_csv_inspector.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_manually_bound_value.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_nodes_history.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_op_utils/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_op_utils/every_operand.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_op_utils/is_const.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_per_tick_scripts/tick_list_sort_template.script +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_proxy_node.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_state_objects.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_state_vars.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/_symbol_param.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/schema.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/aggregations.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/applyers.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/columns.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/data_quality.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/debugs.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/drops.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/fields.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/filters.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/merges.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/misc.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/pandases.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/renames.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/sorts.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/switches.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/symbols.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/times.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/writes.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/symbol.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/tmp_otq.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/_internal.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/conversions.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/methods.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/op_types.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/accessors/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/accessors/_accessor.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/accessors/decimal_accessor.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/accessors/dt_accessor.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/accessors/float_accessor.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/accessors/str_accessor.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/base.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/cut_builder.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/db_constants.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/eval_query.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/lambda_object.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/multi_output_source.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/per_tick_script.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/query_inspector.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/source.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/db/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/db/db.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/db/utils.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/docs/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/docs/docstring_parser.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/docs/utils.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/functions.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/license.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/log.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/math.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/misc.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/oqd/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/oqd/eps.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/oqd/sources.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/otq.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/pyomd_mock.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/servers.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/session.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/cache.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/common.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/csv.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/custom.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/data_file.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/data_source.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/empty.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/odbc.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/order_book.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/parquet.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/pit.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/query.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/snapshots.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/split_query_output_by_symbol.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/symbology_mapping.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/symbols.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/ticks.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sql.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/state.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/types.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/__init__.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/acl.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/config.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/default.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/file.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/helpers.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/locator.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/perf.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/query.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/render.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/script.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/temp.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/types.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/utils/tz.py +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick_py.egg-info/SOURCES.txt +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick_py.egg-info/dependency_links.txt +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick_py.egg-info/entry_points.txt +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick_py.egg-info/requires.txt +0 -0
- {onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick_py.egg-info/top_level.txt +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import os
|
|
3
3
|
from . import _version
|
|
4
4
|
__version__ = _version.VERSION
|
|
5
|
-
__webapi__: bool =
|
|
5
|
+
__webapi__: bool = os.getenv('OTP_WEBAPI', default='').lower() not in ('0', 'false', 'no', '')
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def __validate_onetick_query_integration(): # noqa
|
|
@@ -77,7 +77,8 @@ def __validate_onetick_query_integration(): # noqa
|
|
|
77
77
|
if _otq_import_ex is None:
|
|
78
78
|
return
|
|
79
79
|
|
|
80
|
-
#
|
|
80
|
+
# PY-1033: if we can't import onetick.query, but can import onetick.query_webapi
|
|
81
|
+
# then we can just use it and don't need to raise any exception (even if OTP_WEBAPI is not set)
|
|
81
82
|
try:
|
|
82
83
|
import onetick.query_webapi
|
|
83
84
|
__webapi__ = True
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# This file was generated automatically. DO NOT CHANGE.
|
|
2
|
-
VERSION = '1.
|
|
2
|
+
VERSION = '1.169.0'
|
|
@@ -758,3 +758,19 @@ def is_include_market_order_ticks_supported(**kwargs):
|
|
|
758
758
|
return _is_min_build_or_version(1.25, 20241229055942,
|
|
759
759
|
20240812120000, min_update_number=2,
|
|
760
760
|
**kwargs)
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
def is_join_with_query_symbol_time_otq_supported():
|
|
764
|
+
# 20241209: Fixed 0034770: hours/minutes/seconds part of otq parameter _SYMBOL_TIME, expressed in
|
|
765
|
+
# milliseconds since 1970/01/01 00:00:00 GMT, is ignored
|
|
766
|
+
# 20250219: Implemented 0035092: passing otq param _SYMBOL_TIME should be just like setting symbol_date
|
|
767
|
+
# to the equivalent value, except in YYYYMMDDhhmmss format
|
|
768
|
+
return _is_min_build_or_version(None, None,
|
|
769
|
+
20250227120000)
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
def is_show_db_list_show_description_supported():
|
|
773
|
+
# 20240301: Implemented 0032320: 0032320: SHOW_DB_LIST should have a new EP parameter, SHOW_DESCRIPTION
|
|
774
|
+
# However on 20240330 builds it returns SHOW_DESCRIPTION column instead of DESCRIPTION
|
|
775
|
+
return _is_min_build_or_version(1.25, 20241229055942,
|
|
776
|
+
20240501000000)
|
|
@@ -537,6 +537,14 @@ class Config:
|
|
|
537
537
|
allowed_types=str,
|
|
538
538
|
)
|
|
539
539
|
|
|
540
|
+
default_username = OtpProperty(
|
|
541
|
+
description='Default username to call queries. '
|
|
542
|
+
'By default the name of the owner of the current process is used.',
|
|
543
|
+
base_default=None,
|
|
544
|
+
allowed_types=str,
|
|
545
|
+
env_var_name='OTP_DEFAULT_USERNAME',
|
|
546
|
+
)
|
|
547
|
+
|
|
540
548
|
default_auth_username = OtpProperty(
|
|
541
549
|
description='Default username used for authentication.',
|
|
542
550
|
base_default=None,
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/joins.py
RENAMED
|
@@ -14,6 +14,7 @@ from onetick.py.core.eval_query import prepare_params
|
|
|
14
14
|
from onetick.py.otq import otq
|
|
15
15
|
from onetick.py.compatibility import (
|
|
16
16
|
is_supported_point_in_time,
|
|
17
|
+
is_join_with_query_symbol_time_otq_supported,
|
|
17
18
|
is_join_with_snapshot_snapshot_fields_parameter_supported,
|
|
18
19
|
)
|
|
19
20
|
|
|
@@ -72,6 +73,19 @@ def _columns_to_params_for_joins(columns, query_params=False):
|
|
|
72
73
|
else:
|
|
73
74
|
raise ValueError('Parameter symbol_time has to be a datetime value!')
|
|
74
75
|
|
|
76
|
+
elif key == '_SYMBOL_TIME' and query_params:
|
|
77
|
+
# hack to support passing _SYMBOL_TIME to called query as a parameter
|
|
78
|
+
if dtype is otp.nsectime:
|
|
79
|
+
convert_rule += get_msecs_expression(ott.value2str(value))
|
|
80
|
+
elif dtype is str:
|
|
81
|
+
ns = f'PARSE_NSECTIME("%Y%m%d%H%M%S", {ott.value2str(value)}, _TIMEZONE)'
|
|
82
|
+
convert_rule += get_msecs_expression(ns)
|
|
83
|
+
elif dtype is otp.msectime:
|
|
84
|
+
# for backward compatibility
|
|
85
|
+
convert_rule += get_msecs_expression(value)
|
|
86
|
+
else:
|
|
87
|
+
raise ValueError('Parameter symbol_time has to be a datetime value!')
|
|
88
|
+
|
|
75
89
|
elif dtype is str:
|
|
76
90
|
if are_strings(getattr(value, "dtype", None)):
|
|
77
91
|
convert_rule += str(value)
|
|
@@ -80,17 +94,7 @@ def _columns_to_params_for_joins(columns, query_params=False):
|
|
|
80
94
|
elif dtype is otp.msectime:
|
|
81
95
|
convert_rule += get_msecs_expression(value)
|
|
82
96
|
elif dtype is otp.nsectime:
|
|
83
|
-
if
|
|
84
|
-
# hack to support passing _SYMBOL_TIME to called query as a parameter
|
|
85
|
-
warnings.warn(
|
|
86
|
-
'Query parameter _SYMBOL_TIME passed to join_with_query! '
|
|
87
|
-
'This is deprecated. Please use a dedicated `symbol_time` parameter of the '
|
|
88
|
-
'join_with_query function',
|
|
89
|
-
FutureWarning,
|
|
90
|
-
stacklevel=3,
|
|
91
|
-
)
|
|
92
|
-
convert_rule += get_msecs_expression(value)
|
|
93
|
-
elif query_params:
|
|
97
|
+
if query_params:
|
|
94
98
|
# this can be used for query params but cannot be used for symbol params
|
|
95
99
|
# overall it's better
|
|
96
100
|
convert_rule += "'NSECTIME('+tostring(NSECTIME_TO_LONG(" + str(value) + "))+')'"
|
|
@@ -672,10 +676,10 @@ def join_with_query(
|
|
|
672
676
|
Function object as query is also supported (Note it will be executed only once in python's code):
|
|
673
677
|
|
|
674
678
|
>>> def func(symbol):
|
|
675
|
-
...
|
|
676
|
-
...
|
|
677
|
-
...
|
|
678
|
-
...
|
|
679
|
+
... d = otp.Ticks(TYPE=["six"])
|
|
680
|
+
... d = d.update(dict(TYPE="three"), where=(symbol.name == "3")) # symbol is always converted to string
|
|
681
|
+
... d["TYPE"] = symbol['PREF'] + d["TYPE"] + symbol['POST']
|
|
682
|
+
... return d
|
|
679
683
|
>>> # OTdirective: snippet-name: Special functions.join with query.with a function
|
|
680
684
|
>>> data = otp.Ticks(A=[1, 2], B=[2, 4])
|
|
681
685
|
>>> res = data.join_with_query(func, how='inner', symbol=(data['A'] + data['B'], dict(PREF="_", POST="$")))
|
|
@@ -689,9 +693,9 @@ def join_with_query(
|
|
|
689
693
|
accessible through the "symbol" object:
|
|
690
694
|
|
|
691
695
|
>>> def func(symbol):
|
|
692
|
-
...
|
|
693
|
-
...
|
|
694
|
-
...
|
|
696
|
+
... d = otp.Ticks(TYPE=["six"])
|
|
697
|
+
... d["TYPE"] = symbol['PREF'] + d["TYPE"] + symbol['POST']
|
|
698
|
+
... return d
|
|
695
699
|
>>> # OTdirective: snippet-name: 'Source' operations.join with query.source as symbol;
|
|
696
700
|
>>> data = otp.Ticks(A=[1, 2], B=[2, 4], PREF=["_", "$"], POST=["$", "_"])
|
|
697
701
|
>>> res = data.join_with_query(func, how='inner', symbol=data)
|
|
@@ -834,22 +838,20 @@ def join_with_query(
|
|
|
834
838
|
'object (dict or Source), or a tuple containing both'
|
|
835
839
|
)
|
|
836
840
|
|
|
837
|
-
# adding symbol time
|
|
838
841
|
if '_PARAM_SYMBOL_TIME' in converted_symbol_param_columns.keys():
|
|
839
842
|
warnings.warn(
|
|
840
843
|
'"_PARAM_SYMBOL_TIME" explicitly passed among join_with_query symbol parameters! '
|
|
841
|
-
'This is deprecated - please use symbol_time parameter instead.
|
|
842
|
-
|
|
844
|
+
'This is deprecated - please use symbol_time parameter instead.',
|
|
845
|
+
FutureWarning,
|
|
846
|
+
stacklevel=2,
|
|
847
|
+
)
|
|
848
|
+
if '_SYMBOL_TIME' in params.keys():
|
|
849
|
+
warnings.warn(
|
|
850
|
+
'Query parameter "_SYMBOL_TIME" passed to join_with_query! '
|
|
851
|
+
'This is deprecated. Please use a dedicated `symbol_time` parameter.',
|
|
843
852
|
FutureWarning,
|
|
844
853
|
stacklevel=2,
|
|
845
854
|
)
|
|
846
|
-
if symbol_time is not None:
|
|
847
|
-
if ott.get_object_type(symbol_time) is not otp.nsectime and ott.get_object_type(symbol_time) is not str:
|
|
848
|
-
raise ValueError(
|
|
849
|
-
f'Parameter of type {ott.get_object_type(symbol_time)} passed as symbol_time! '
|
|
850
|
-
'This parameter only supports datetime values or strings'
|
|
851
|
-
)
|
|
852
|
-
converted_symbol_param_columns['_PARAM_SYMBOL_TIME'] = symbol_time
|
|
853
855
|
|
|
854
856
|
# prepare temporary file
|
|
855
857
|
# ------------------------------------ #
|
|
@@ -875,6 +877,19 @@ def join_with_query(
|
|
|
875
877
|
if not sub_source._is_unbound_required():
|
|
876
878
|
sub_source += otp.Empty()
|
|
877
879
|
|
|
880
|
+
# adding symbol time
|
|
881
|
+
if symbol_time is not None:
|
|
882
|
+
if ott.get_object_type(symbol_time) is not otp.nsectime and ott.get_object_type(symbol_time) is not str:
|
|
883
|
+
raise ValueError(
|
|
884
|
+
f'Parameter of type {ott.get_object_type(symbol_time)} passed as symbol_time! '
|
|
885
|
+
'This parameter only supports datetime values or strings'
|
|
886
|
+
)
|
|
887
|
+
if is_join_with_query_symbol_time_otq_supported():
|
|
888
|
+
params = params.copy()
|
|
889
|
+
params['_SYMBOL_TIME'] = symbol_time
|
|
890
|
+
else:
|
|
891
|
+
converted_symbol_param_columns['_PARAM_SYMBOL_TIME'] = symbol_time
|
|
892
|
+
|
|
878
893
|
params_str = _columns_to_params_for_joins(params, query_params=True)
|
|
879
894
|
symbol_params_str = _columns_to_params_for_joins(converted_symbol_param_columns)
|
|
880
895
|
|
|
@@ -7,7 +7,7 @@ from dateutil.tz import gettz
|
|
|
7
7
|
|
|
8
8
|
import onetick.py as otp
|
|
9
9
|
from onetick.py import configuration, utils
|
|
10
|
-
from onetick.py.compatibility import is_native_plus_zstd_supported
|
|
10
|
+
from onetick.py.compatibility import is_native_plus_zstd_supported, is_show_db_list_show_description_supported
|
|
11
11
|
from onetick.py.core import db_constants
|
|
12
12
|
from onetick.py.otq import otq
|
|
13
13
|
|
|
@@ -25,8 +25,9 @@ class DB:
|
|
|
25
25
|
dates with data, symbols, tick schema, etc.
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
|
-
def __init__(self, name, context=utils.default):
|
|
28
|
+
def __init__(self, name, description='', context=utils.default):
|
|
29
29
|
self.name = name
|
|
30
|
+
self.description = description
|
|
30
31
|
if context is utils.default or context is None:
|
|
31
32
|
self.context = otp.config.context
|
|
32
33
|
else:
|
|
@@ -907,7 +908,9 @@ class DB:
|
|
|
907
908
|
return df
|
|
908
909
|
|
|
909
910
|
|
|
910
|
-
def databases(
|
|
911
|
+
def databases(
|
|
912
|
+
context=utils.default, derived: bool = False, readable_only: bool = True, fetch_description: bool = False,
|
|
913
|
+
) -> dict[str, DB]:
|
|
911
914
|
"""
|
|
912
915
|
Gets all available databases in the ``context``
|
|
913
916
|
|
|
@@ -925,6 +928,9 @@ def databases(context=utils.default, derived=False, readable_only: bool = True)
|
|
|
925
928
|
readable_only: bool
|
|
926
929
|
If set to True (default), then return only the databases with read-access for the current user.
|
|
927
930
|
Otherwise return all databases visible from the current process.
|
|
931
|
+
fetch_description: bool
|
|
932
|
+
If set to True, retrieves descriptions for databases and puts them into ``description`` property of
|
|
933
|
+
:py:class:`~onetick.py.DB` objects in a returned dict.
|
|
928
934
|
|
|
929
935
|
See also
|
|
930
936
|
--------
|
|
@@ -938,17 +944,47 @@ def databases(context=utils.default, derived=False, readable_only: bool = True)
|
|
|
938
944
|
Dict where keys are database names and values are :class:`DB <onetick.py.db._inspection.DB>` objects
|
|
939
945
|
with ``context`` specified.
|
|
940
946
|
"""
|
|
947
|
+
if fetch_description and not is_show_db_list_show_description_supported():
|
|
948
|
+
fetch_description = False
|
|
949
|
+
|
|
941
950
|
if readable_only:
|
|
942
951
|
node = (
|
|
943
952
|
otq.AccessInfo(info_type='DATABASES', show_for_all_users=False, deep_scan=True).tick_type('ANY')
|
|
944
953
|
>> otq.Passthrough('DB_NAME,READ_ACCESS')
|
|
945
954
|
>> otq.WhereClause(where='READ_ACCESS = 1')
|
|
946
955
|
)
|
|
956
|
+
|
|
957
|
+
if fetch_description:
|
|
958
|
+
join = otq.Join(
|
|
959
|
+
left_source='LEFT', join_type='LEFT_OUTER', join_criteria='LEFT.DB_NAME = RIGHT.DATABASE_NAME'
|
|
960
|
+
)
|
|
961
|
+
|
|
962
|
+
_ = node.set_node_name('LEFT') >> join
|
|
963
|
+
_ = (
|
|
964
|
+
otq.ShowDbList(show_description=fetch_description).tick_type('ANY')
|
|
965
|
+
>> otq.Passthrough('DATABASE_NAME,DESCRIPTION').set_node_name('RIGHT')
|
|
966
|
+
>> join
|
|
967
|
+
)
|
|
968
|
+
|
|
969
|
+
node = (
|
|
970
|
+
join >> otq.Passthrough('LEFT.DB_NAME,RIGHT.DESCRIPTION')
|
|
971
|
+
>> otq.RenameFields("LEFT.DB_NAME=DB_NAME,RIGHT.DESCRIPTION=DESCRIPTION")
|
|
972
|
+
)
|
|
947
973
|
else:
|
|
974
|
+
db_list_kwargs = {}
|
|
975
|
+
output_fields = ['DATABASE_NAME']
|
|
976
|
+
if fetch_description:
|
|
977
|
+
db_list_kwargs['show_description'] = fetch_description
|
|
978
|
+
output_fields.append('DESCRIPTION')
|
|
979
|
+
|
|
948
980
|
node = (
|
|
949
|
-
otq.ShowDbList().tick_type('ANY')
|
|
950
|
-
>> otq.Passthrough('
|
|
981
|
+
otq.ShowDbList(**db_list_kwargs).tick_type('ANY')
|
|
982
|
+
>> otq.Passthrough(','.join(output_fields))
|
|
951
983
|
)
|
|
984
|
+
|
|
985
|
+
if not fetch_description:
|
|
986
|
+
node = node >> otq.AddField('DESCRIPTION', '""')
|
|
987
|
+
|
|
952
988
|
dbs = otp.run(node,
|
|
953
989
|
symbols='LOCAL::',
|
|
954
990
|
# start and end times don't matter for this query, use some constants
|
|
@@ -961,9 +997,14 @@ def databases(context=utils.default, derived=False, readable_only: bool = True)
|
|
|
961
997
|
return {}
|
|
962
998
|
|
|
963
999
|
db_list = list(dbs['DB_NAME'] if readable_only else dbs['DATABASE_NAME'])
|
|
964
|
-
|
|
1000
|
+
merged_db_list = list(zip(db_list, dbs['DESCRIPTION']))
|
|
1001
|
+
|
|
1002
|
+
db_dict = {
|
|
1003
|
+
db_name: DB(db_name, description=db_description, context=context) for db_name, db_description in merged_db_list
|
|
1004
|
+
}
|
|
1005
|
+
|
|
965
1006
|
if derived:
|
|
966
|
-
kwargs = derived if isinstance(derived, dict) else {}
|
|
1007
|
+
kwargs: dict = derived if isinstance(derived, dict) else {}
|
|
967
1008
|
kwargs.setdefault('context', context)
|
|
968
1009
|
db_dict.update(
|
|
969
1010
|
derived_databases(**kwargs)
|
|
@@ -84,14 +84,14 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
|
|
|
84
84
|
start: :py:class:`datetime.datetime`, :py:class:`otp.datetime <onetick.py.datetime>`,\
|
|
85
85
|
:py:class:`pyomd.timeval_t`, optional
|
|
86
86
|
The start time of the query. Can be timezone-naive or timezone-aware. See also ``timezone`` argument.
|
|
87
|
-
onetick.py uses :py:attr:`default_start_time<onetick.py.configuration.Config.default_start_time>`
|
|
87
|
+
onetick.py uses :py:attr:`otp.config.default_start_time<onetick.py.configuration.Config.default_start_time>`
|
|
88
88
|
as default value, if you don't want to specify start time, e.g. to use saved time of the query,
|
|
89
89
|
then you should specify None value.
|
|
90
90
|
end: :py:class:`datetime.datetime`, :py:class:`otp.datetime <onetick.py.datetime>`,\
|
|
91
91
|
:py:class:`pyomd.timeval_t`, optional
|
|
92
92
|
The end time of the query (note that it's non-inclusive).
|
|
93
93
|
Can be timezone-naive or timezone-aware. See also ``timezone`` argument.
|
|
94
|
-
onetick.py uses :py:attr:`default_end_time<onetick.py.configuration.Config.default_end_time>`
|
|
94
|
+
onetick.py uses :py:attr:`otp.config.default_end_time<onetick.py.configuration.Config.default_end_time>`
|
|
95
95
|
as default value, if you don't want to specify end time, e.g. to use saved time of the query,
|
|
96
96
|
then you should specify None value.
|
|
97
97
|
date: :py:class:`datetime.date`, :py:class:`otp.date <onetick.py.date>`, optional
|
|
@@ -109,28 +109,30 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
|
|
|
109
109
|
The timezone of output timestamps.
|
|
110
110
|
Also, when start and/or end arguments are timezone-naive, it will define their timezone.
|
|
111
111
|
If parameter is omitted timestamps of ticks will be formatted
|
|
112
|
-
with the default :py:attr:`tz<onetick.py.configuration.Config.tz>`.
|
|
112
|
+
with the default :py:attr:`otp.config.tz<onetick.py.configuration.Config.tz>`.
|
|
113
113
|
context: str, optional
|
|
114
114
|
Allows specification of different contexts from OneTick configuration to connect to.
|
|
115
|
-
If not set then default :py:attr:`context<onetick.py.configuration.Config.context>` is used.
|
|
115
|
+
If not set then default :py:attr:`otp.config.context<onetick.py.configuration.Config.context>` is used.
|
|
116
116
|
See :ref:`guide about switching contexts <switching contexts>` for examples.
|
|
117
117
|
username
|
|
118
118
|
The username to make the connection.
|
|
119
|
-
By default the user which executed the process is used
|
|
119
|
+
By default the user which executed the process is used or the value specified in
|
|
120
|
+
:py:attr:`otp.config.default_username<onetick.py.configuration.Config.default_username>`.
|
|
120
121
|
alternative_username: str
|
|
121
122
|
The username used for authentication.
|
|
122
123
|
Needs to be set only when the tick server is configured to use password-based authentication.
|
|
123
|
-
By default,
|
|
124
|
+
By default,
|
|
125
|
+
:py:attr:`otp.config.default_auth_username<onetick.py.configuration.Config.default_auth_username>` is used.
|
|
124
126
|
Not supported for WebAPI mode.
|
|
125
127
|
password: str, optional
|
|
126
128
|
The password used for authentication.
|
|
127
129
|
Needs to be set only when the tick server is configured to use password-based authentication.
|
|
128
130
|
Note: not supported and ignored on older OneTick versions.
|
|
129
|
-
By default, :py:attr:`default_password<onetick.py.configuration.Config.default_password>` is used.
|
|
131
|
+
By default, :py:attr:`otp.config.default_password<onetick.py.configuration.Config.default_password>` is used.
|
|
130
132
|
batch_size: int
|
|
131
133
|
number of symbols to run in one batch.
|
|
132
134
|
By default, the value from
|
|
133
|
-
:py:attr:`default_batch_size<onetick.py.configuration.Config.default_batch_size>` is used.
|
|
135
|
+
:py:attr:`otp.config.default_batch_size<onetick.py.configuration.Config.default_batch_size>` is used.
|
|
134
136
|
Not supported for WebAPI mode.
|
|
135
137
|
running: bool, optional
|
|
136
138
|
Indicates whether a query is CEP or not. Default is `False`.
|
|
@@ -139,7 +141,7 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
|
|
|
139
141
|
concurrency: int, optional
|
|
140
142
|
The maximum number of CPU cores to use to process the query.
|
|
141
143
|
By default, the value from
|
|
142
|
-
:py:attr:`default_concurrency<onetick.py.configuration.Config.default_concurrency>` is used.
|
|
144
|
+
:py:attr:`otp.config.default_concurrency<onetick.py.configuration.Config.default_concurrency>` is used.
|
|
143
145
|
apply_times_daily: bool
|
|
144
146
|
Runs the query for every day in the ``start``-``end`` time range,
|
|
145
147
|
using the time components of ``start`` and ``end`` datetimes.
|
|
@@ -195,9 +197,8 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
|
|
|
195
197
|
If set to True, result will be forced to be a dictionary even if it's returned for a single symbol
|
|
196
198
|
max_expected_ticks_per_symbol: int
|
|
197
199
|
Expected maximum number of ticks per symbol (used for performance optimizations).
|
|
198
|
-
By default,
|
|
199
|
-
|
|
200
|
-
is used.
|
|
200
|
+
By default, :py:attr:`otp.config.max_expected_ticks_per_symbol \
|
|
201
|
+
<onetick.py.configuration.Config.max_expected_ticks_per_symbol>` is used.
|
|
201
202
|
Not supported for WebAPI mode.
|
|
202
203
|
log_symbol: bool
|
|
203
204
|
Log currently executed symbol.
|
|
@@ -547,6 +548,7 @@ def run(query: Union[Callable, Dict, otp.Source, otp.MultiOutputSource, # NOSON
|
|
|
547
548
|
start, end = _get_start_end(start, end, timezone)
|
|
548
549
|
|
|
549
550
|
# authentication
|
|
551
|
+
username = username or otp.config.default_username
|
|
550
552
|
alternative_username = alternative_username or otp.config.default_auth_username
|
|
551
553
|
password = password or otp.config.default_password
|
|
552
554
|
kwargs = {}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_manually_bound_value.py
RENAMED
|
File without changes
|
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_op_utils/__init__.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_op_utils/every_operand.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_internal/_op_utils/is_const.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/__init__.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/aggregations.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/applyers.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/columns.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/data_quality.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/debugs.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/drops.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/fields.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/filters.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/merges.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/misc.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/pandases.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/renames.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/sorts.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/switches.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/symbols.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/times.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/_source/source_methods/writes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/methods.py
RENAMED
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/core/column_operations/_methods/op_types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onetick_py-1.167.0 → onetick_py-1.169.0}/src/onetick/py/sources/split_query_output_by_symbol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|