quasardb 3.14.2.dev5__cp311-cp311-macosx_15_0_x86_64.whl → 3.14.2.dev6__cp311-cp311-macosx_15_0_x86_64.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.
Potentially problematic release.
This version of quasardb might be problematic. Click here for more details.
- quasardb/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
- quasardb/Makefile +11 -11
- quasardb/cmake_install.cmake +1 -1
- quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
- quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake +1 -1
- quasardb/date/Makefile +11 -11
- quasardb/date/cmake_install.cmake +1 -1
- quasardb/date/dateTargets.cmake +1 -1
- quasardb/libqdb_api.dylib +0 -0
- quasardb/numpy/__init__.py +104 -31
- quasardb/pandas/__init__.py +3 -0
- quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
- quasardb/pybind11/Makefile +11 -11
- quasardb/pybind11/cmake_install.cmake +1 -1
- quasardb/quasardb.cpython-311-darwin.so +0 -0
- quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
- quasardb/range-v3/CMakeFiles/Export/d94ef200eca10a819b5858b33e808f5b/range-v3-targets.cmake +1 -1
- quasardb/range-v3/CMakeFiles/range.v3.headers.dir/build.make +3 -3
- quasardb/range-v3/Makefile +11 -11
- quasardb/range-v3/cmake_install.cmake +1 -1
- quasardb/range-v3/range-v3-config.cmake +1 -1
- quasardb/stats.py +223 -110
- {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info}/METADATA +3 -2
- {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info}/RECORD +27 -27
- {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info}/WHEEL +1 -1
- {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info/licenses}/LICENSE.md +0 -0
- {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Relative path conversion top directories.
|
|
5
5
|
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/teamcity/buildAgent/work/938b0bdf6727d1ad/thirdparty")
|
quasardb/Makefile
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Default target executed when no arguments are given to make.
|
|
5
5
|
default_target: all
|
|
@@ -48,10 +48,10 @@ cmake_force:
|
|
|
48
48
|
SHELL = /bin/sh
|
|
49
49
|
|
|
50
50
|
# The CMake executable.
|
|
51
|
-
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
51
|
+
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake
|
|
52
52
|
|
|
53
53
|
# The command to remove a file.
|
|
54
|
-
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
54
|
+
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
|
|
55
55
|
|
|
56
56
|
# Escaping for special characters.
|
|
57
57
|
EQUALS = =
|
|
@@ -68,7 +68,7 @@ CMAKE_BINARY_DIR = /Users/teamcity/buildAgent/work/938b0bdf6727d1ad/build/temp.m
|
|
|
68
68
|
# Special rule for the target edit_cache
|
|
69
69
|
edit_cache:
|
|
70
70
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
|
|
71
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
71
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
72
72
|
.PHONY : edit_cache
|
|
73
73
|
|
|
74
74
|
# Special rule for the target edit_cache
|
|
@@ -78,7 +78,7 @@ edit_cache/fast: edit_cache
|
|
|
78
78
|
# Special rule for the target rebuild_cache
|
|
79
79
|
rebuild_cache:
|
|
80
80
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
|
|
81
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
81
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
82
82
|
.PHONY : rebuild_cache
|
|
83
83
|
|
|
84
84
|
# Special rule for the target rebuild_cache
|
|
@@ -97,37 +97,37 @@ list_install_components/fast: list_install_components
|
|
|
97
97
|
# Special rule for the target install
|
|
98
98
|
install: preinstall
|
|
99
99
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
100
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
100
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
101
101
|
.PHONY : install
|
|
102
102
|
|
|
103
103
|
# Special rule for the target install
|
|
104
104
|
install/fast: preinstall/fast
|
|
105
105
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
106
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
106
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
107
107
|
.PHONY : install/fast
|
|
108
108
|
|
|
109
109
|
# Special rule for the target install/local
|
|
110
110
|
install/local: preinstall
|
|
111
111
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
112
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
112
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
113
113
|
.PHONY : install/local
|
|
114
114
|
|
|
115
115
|
# Special rule for the target install/local
|
|
116
116
|
install/local/fast: preinstall/fast
|
|
117
117
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
118
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
118
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
119
119
|
.PHONY : install/local/fast
|
|
120
120
|
|
|
121
121
|
# Special rule for the target install/strip
|
|
122
122
|
install/strip: preinstall
|
|
123
123
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
124
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
124
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
125
125
|
.PHONY : install/strip
|
|
126
126
|
|
|
127
127
|
# Special rule for the target install/strip
|
|
128
128
|
install/strip/fast: preinstall/fast
|
|
129
129
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
130
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
130
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
131
131
|
.PHONY : install/strip/fast
|
|
132
132
|
|
|
133
133
|
# The main all target
|
quasardb/cmake_install.cmake
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Relative path conversion top directories.
|
|
5
5
|
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/teamcity/buildAgent/work/938b0bdf6727d1ad/thirdparty")
|
|
@@ -7,7 +7,7 @@ if(CMAKE_VERSION VERSION_LESS "3.1.0")
|
|
|
7
7
|
message(FATAL_ERROR "CMake >= 3.1.0 required")
|
|
8
8
|
endif()
|
|
9
9
|
cmake_policy(PUSH)
|
|
10
|
-
cmake_policy(VERSION 3.1.0...3.
|
|
10
|
+
cmake_policy(VERSION 3.1.0...3.30)
|
|
11
11
|
#----------------------------------------------------------------
|
|
12
12
|
# Generated CMake target import file.
|
|
13
13
|
#----------------------------------------------------------------
|
quasardb/date/Makefile
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Default target executed when no arguments are given to make.
|
|
5
5
|
default_target: all
|
|
@@ -48,10 +48,10 @@ cmake_force:
|
|
|
48
48
|
SHELL = /bin/sh
|
|
49
49
|
|
|
50
50
|
# The CMake executable.
|
|
51
|
-
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
51
|
+
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake
|
|
52
52
|
|
|
53
53
|
# The command to remove a file.
|
|
54
|
-
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
54
|
+
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
|
|
55
55
|
|
|
56
56
|
# Escaping for special characters.
|
|
57
57
|
EQUALS = =
|
|
@@ -68,7 +68,7 @@ CMAKE_BINARY_DIR = /Users/teamcity/buildAgent/work/938b0bdf6727d1ad/build/temp.m
|
|
|
68
68
|
# Special rule for the target edit_cache
|
|
69
69
|
edit_cache:
|
|
70
70
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
|
|
71
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
71
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
72
72
|
.PHONY : edit_cache
|
|
73
73
|
|
|
74
74
|
# Special rule for the target edit_cache
|
|
@@ -78,7 +78,7 @@ edit_cache/fast: edit_cache
|
|
|
78
78
|
# Special rule for the target rebuild_cache
|
|
79
79
|
rebuild_cache:
|
|
80
80
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
|
|
81
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
81
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
82
82
|
.PHONY : rebuild_cache
|
|
83
83
|
|
|
84
84
|
# Special rule for the target rebuild_cache
|
|
@@ -97,37 +97,37 @@ list_install_components/fast: list_install_components
|
|
|
97
97
|
# Special rule for the target install
|
|
98
98
|
install: preinstall
|
|
99
99
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
100
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
100
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
101
101
|
.PHONY : install
|
|
102
102
|
|
|
103
103
|
# Special rule for the target install
|
|
104
104
|
install/fast: preinstall/fast
|
|
105
105
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
106
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
106
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
107
107
|
.PHONY : install/fast
|
|
108
108
|
|
|
109
109
|
# Special rule for the target install/local
|
|
110
110
|
install/local: preinstall
|
|
111
111
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
112
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
112
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
113
113
|
.PHONY : install/local
|
|
114
114
|
|
|
115
115
|
# Special rule for the target install/local
|
|
116
116
|
install/local/fast: preinstall/fast
|
|
117
117
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
118
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
118
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
119
119
|
.PHONY : install/local/fast
|
|
120
120
|
|
|
121
121
|
# Special rule for the target install/strip
|
|
122
122
|
install/strip: preinstall
|
|
123
123
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
124
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
124
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
125
125
|
.PHONY : install/strip
|
|
126
126
|
|
|
127
127
|
# Special rule for the target install/strip
|
|
128
128
|
install/strip/fast: preinstall/fast
|
|
129
129
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
130
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
130
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
131
131
|
.PHONY : install/strip/fast
|
|
132
132
|
|
|
133
133
|
# The main all target
|
|
@@ -34,7 +34,7 @@ endif()
|
|
|
34
34
|
|
|
35
35
|
# Set path to fallback-tool for dependency-resolution.
|
|
36
36
|
if(NOT DEFINED CMAKE_OBJDUMP)
|
|
37
|
-
set(CMAKE_OBJDUMP "/usr/
|
|
37
|
+
set(CMAKE_OBJDUMP "/usr/bin/objdump")
|
|
38
38
|
endif()
|
|
39
39
|
|
|
40
40
|
if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT)
|
quasardb/date/dateTargets.cmake
CHANGED
|
@@ -7,7 +7,7 @@ if(CMAKE_VERSION VERSION_LESS "3.0.0")
|
|
|
7
7
|
message(FATAL_ERROR "CMake >= 3.0.0 required")
|
|
8
8
|
endif()
|
|
9
9
|
cmake_policy(PUSH)
|
|
10
|
-
cmake_policy(VERSION 3.0.0...3.
|
|
10
|
+
cmake_policy(VERSION 3.0.0...3.30)
|
|
11
11
|
#----------------------------------------------------------------
|
|
12
12
|
# Generated CMake target import file.
|
|
13
13
|
#----------------------------------------------------------------
|
quasardb/libqdb_api.dylib
CHANGED
|
Binary file
|
quasardb/numpy/__init__.py
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
import logging
|
|
31
31
|
import time
|
|
32
|
+
import warnings
|
|
32
33
|
|
|
33
34
|
import quasardb
|
|
34
35
|
import quasardb.table_cache as table_cache
|
|
@@ -482,6 +483,33 @@ def _coerce_retries(retries) -> quasardb.RetryOptions:
|
|
|
482
483
|
)
|
|
483
484
|
|
|
484
485
|
|
|
486
|
+
def _kwarg_deprecation_warning(
|
|
487
|
+
old_kwarg, old_value, new_kwargs, new_values, stacklevel
|
|
488
|
+
):
|
|
489
|
+
new_declaration = ", ".join(
|
|
490
|
+
f"{new_kwarg}={new_value}"
|
|
491
|
+
for new_kwarg, new_value in zip(new_kwargs, new_values)
|
|
492
|
+
)
|
|
493
|
+
warnings.warn(
|
|
494
|
+
f"The argument '{old_kwarg}' <{type(old_value).__name__}> is deprecated and will be removed in a future version. "
|
|
495
|
+
f"Please use '{new_declaration}' instead.",
|
|
496
|
+
DeprecationWarning,
|
|
497
|
+
stacklevel=stacklevel + 1,
|
|
498
|
+
)
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
def _type_check(var, var_name, target_type, raise_error=True, allow_none=True):
|
|
502
|
+
if allow_none and var is None:
|
|
503
|
+
return True
|
|
504
|
+
if not isinstance(var, target_type):
|
|
505
|
+
if raise_error:
|
|
506
|
+
raise quasardb.quasardb.InvalidArgumentError(
|
|
507
|
+
f"Invalid '{var_name}' type, expected: {target_type}, got: {type(var)}"
|
|
508
|
+
)
|
|
509
|
+
return False
|
|
510
|
+
return True
|
|
511
|
+
|
|
512
|
+
|
|
485
513
|
def ensure_ma(xs, dtype=None):
|
|
486
514
|
if isinstance(dtype, list):
|
|
487
515
|
assert isinstance(xs, list) == True
|
|
@@ -630,14 +658,17 @@ def write_arrays(
|
|
|
630
658
|
*,
|
|
631
659
|
dtype=None,
|
|
632
660
|
index=None,
|
|
661
|
+
# TODO: Set the default push_mode after removing _async, fast and truncate
|
|
662
|
+
push_mode=None,
|
|
633
663
|
_async=False,
|
|
634
664
|
fast=False,
|
|
635
665
|
truncate=False,
|
|
666
|
+
truncate_range=None,
|
|
636
667
|
deduplicate=False,
|
|
637
668
|
deduplication_mode="drop",
|
|
638
669
|
infer_types=True,
|
|
639
670
|
writer=None,
|
|
640
|
-
write_through=
|
|
671
|
+
write_through=True,
|
|
641
672
|
retries=3,
|
|
642
673
|
# We accept additional kwargs that will be passed through the writer.push() methods
|
|
643
674
|
**kwargs,
|
|
@@ -705,13 +736,32 @@ def write_arrays(
|
|
|
705
736
|
Defaults to True. For production use cases where you want to avoid implicit conversions,
|
|
706
737
|
we recommend setting this to False.
|
|
707
738
|
|
|
739
|
+
push_mode: optional quasardb.WriterPushMode
|
|
740
|
+
The mode used for inserting data. Can be either a string or a `WriterPushMode` enumeration item.
|
|
741
|
+
Available options:
|
|
742
|
+
* `Truncate`: Truncate (also referred to as upsert) the data in-place. Will detect time range
|
|
743
|
+
to truncate from the time range inside the dataframe.
|
|
744
|
+
* `Async`: Uses asynchronous insertion API where commits are buffered server-side and
|
|
745
|
+
acknowledged before they are written to disk. If you insert to the same table from
|
|
746
|
+
multiple processes, setting this to True may improve performance.
|
|
747
|
+
* `Fast`: Whether to use 'fast push'. If you incrementally add small batches of data to table,
|
|
748
|
+
you may see better performance if you set this to True.
|
|
749
|
+
* `Transactional`: Ensures full transactional consistency.
|
|
750
|
+
|
|
751
|
+
Defaults to `Transactional`.
|
|
752
|
+
|
|
708
753
|
truncate: optional bool
|
|
754
|
+
**DEPRECATED** – Use `push_mode=WriterPushMode.Truncate` instead.
|
|
709
755
|
Truncate (also referred to as upsert) the data in-place. Will detect time range to truncate
|
|
710
756
|
from the time range inside the dataframe.
|
|
711
757
|
|
|
712
758
|
Defaults to False.
|
|
713
759
|
|
|
760
|
+
truncate_range: optional tuple
|
|
761
|
+
Time range to truncate from the time range inside the dataframe.
|
|
762
|
+
|
|
714
763
|
_async: optional bool
|
|
764
|
+
**DEPRECATED** – Use `push_mode=WriterPushMode.Async` instead.
|
|
715
765
|
If true, uses asynchronous insertion API where commits are buffered server-side and
|
|
716
766
|
acknowledged before they are written to disk. If you insert to the same table from
|
|
717
767
|
multiple processes, setting this to True may improve performance.
|
|
@@ -719,6 +769,7 @@ def write_arrays(
|
|
|
719
769
|
Defaults to False.
|
|
720
770
|
|
|
721
771
|
fast: optional bool
|
|
772
|
+
**DEPRECATED** – Use `push_mode=WriterPushMode.Fast` instead.
|
|
722
773
|
Whether to use 'fast push'. If you incrementally add small batches of data to table,
|
|
723
774
|
you may see better performance if you set this to True.
|
|
724
775
|
|
|
@@ -747,32 +798,57 @@ def write_arrays(
|
|
|
747
798
|
|
|
748
799
|
if table:
|
|
749
800
|
logger.debug("table explicitly provided, assuming single-table write")
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
retries=retries,
|
|
765
|
-
**kwargs,
|
|
801
|
+
data = [(table, data)]
|
|
802
|
+
table = None
|
|
803
|
+
|
|
804
|
+
_type_check(push_mode, "push_mode", target_type=quasardb.WriterPushMode)
|
|
805
|
+
deprecation_stacklevel = kwargs.pop("deprecation_stacklevel", 1) + 1
|
|
806
|
+
|
|
807
|
+
if isinstance(truncate, tuple):
|
|
808
|
+
# Especial case, truncate might be a tuple indicating the range.
|
|
809
|
+
_kwarg_deprecation_warning(
|
|
810
|
+
"truncate",
|
|
811
|
+
truncate,
|
|
812
|
+
["push_mode", "truncate_range"],
|
|
813
|
+
[quasardb.WriterPushMode.Truncate, truncate],
|
|
814
|
+
deprecation_stacklevel,
|
|
766
815
|
)
|
|
816
|
+
truncate_range = truncate_range or truncate
|
|
817
|
+
truncate = True
|
|
818
|
+
|
|
819
|
+
kwarg_to_mode = {
|
|
820
|
+
# "kwarg": (kwarg_type, kwarg_push_mode, is_deprecated)
|
|
821
|
+
"fast": (bool, quasardb.WriterPushMode.Fast, True),
|
|
822
|
+
"_async": (bool, quasardb.WriterPushMode.Async, True),
|
|
823
|
+
"truncate": (bool, quasardb.WriterPushMode.Truncate, True),
|
|
824
|
+
"truncate_range": (tuple, quasardb.WriterPushMode.Truncate, False),
|
|
825
|
+
}
|
|
767
826
|
|
|
768
|
-
|
|
827
|
+
for kwarg, info in kwarg_to_mode.items():
|
|
828
|
+
expected_type, mode, deprecated = info
|
|
829
|
+
kwarg_value = locals()[kwarg]
|
|
830
|
+
_type_check(kwarg_value, kwarg, target_type=expected_type)
|
|
831
|
+
|
|
832
|
+
if kwarg_value:
|
|
833
|
+
if push_mode and push_mode != mode:
|
|
834
|
+
raise quasardb.quasardb.InvalidArgumentError(
|
|
835
|
+
f"Found '{kwarg}' in kwargs, but push mode is already set to {push_mode}"
|
|
836
|
+
)
|
|
837
|
+
push_mode = mode
|
|
838
|
+
if deprecated:
|
|
839
|
+
_kwarg_deprecation_warning(
|
|
840
|
+
kwarg, kwarg_value, ["push_mode"], [mode], deprecation_stacklevel
|
|
841
|
+
)
|
|
842
|
+
|
|
843
|
+
if not push_mode:
|
|
844
|
+
push_mode = quasardb.WriterPushMode.Transactional
|
|
769
845
|
|
|
770
846
|
# Create batch column info from dataframe
|
|
771
847
|
if writer is None:
|
|
772
848
|
writer = cluster.writer()
|
|
773
849
|
|
|
850
|
+
ret = []
|
|
774
851
|
n_rows = 0
|
|
775
|
-
|
|
776
852
|
push_data = quasardb.WriterData()
|
|
777
853
|
|
|
778
854
|
for table, data_ in data:
|
|
@@ -787,6 +863,12 @@ def write_arrays(
|
|
|
787
863
|
assert len(dtype) is len(cinfos)
|
|
788
864
|
|
|
789
865
|
if index is None and isinstance(data_, dict) and "$timestamp" in data_:
|
|
866
|
+
# Create shallow copy of `data_` so that we don't modify the reference, i.e.
|
|
867
|
+
# delete keys.
|
|
868
|
+
#
|
|
869
|
+
# This ensures that the user can call the same function multiple times without
|
|
870
|
+
# side-effects.
|
|
871
|
+
data_ = data_.copy()
|
|
790
872
|
index_ = data_.pop("$timestamp")
|
|
791
873
|
assert "$timestamp" not in data_
|
|
792
874
|
elif index is not None:
|
|
@@ -837,22 +919,13 @@ def write_arrays(
|
|
|
837
919
|
push_kwargs["deduplication_mode"] = deduplication_mode
|
|
838
920
|
push_kwargs["write_through"] = write_through
|
|
839
921
|
push_kwargs["retries"] = retries
|
|
922
|
+
push_kwargs["push_mode"] = push_mode
|
|
923
|
+
if truncate_range:
|
|
924
|
+
push_kwargs["range"] = truncate_range
|
|
840
925
|
|
|
841
926
|
logger.debug("pushing %d rows", n_rows)
|
|
842
927
|
start = time.time()
|
|
843
928
|
|
|
844
|
-
if fast is True:
|
|
845
|
-
push_kwargs["push_mode"] = quasardb.WriterPushMode.Fast
|
|
846
|
-
elif truncate is True:
|
|
847
|
-
push_kwargs["push_mode"] = quasardb.WriterPushMode.Truncate
|
|
848
|
-
elif isinstance(truncate, tuple):
|
|
849
|
-
push_kwargs["push_mode"] = quasardb.WriterPushMode.Truncate
|
|
850
|
-
push_kwargs["range"] = truncate
|
|
851
|
-
elif _async is True:
|
|
852
|
-
push_kwargs["push_mode"] = quasardb.WriterPushMode.Async
|
|
853
|
-
else:
|
|
854
|
-
push_kwargs["push_mode"] = quasardb.WriterPushMode.Transactional
|
|
855
|
-
|
|
856
929
|
writer.push(push_data, **push_kwargs)
|
|
857
930
|
|
|
858
931
|
logger.debug("pushed %d rows in %s seconds", n_rows, (time.time() - start))
|
quasardb/pandas/__init__.py
CHANGED
|
@@ -419,6 +419,7 @@ def write_dataframes(dfs, cluster, *, create=False, shard_size=None, **kwargs):
|
|
|
419
419
|
|
|
420
420
|
data_by_table.append((table, data))
|
|
421
421
|
|
|
422
|
+
kwargs["deprecation_stacklevel"] = kwargs.get("deprecation_stacklevel", 1) + 1
|
|
422
423
|
return qdbnp.write_arrays(data_by_table, cluster, table=None, index=None, **kwargs)
|
|
423
424
|
|
|
424
425
|
|
|
@@ -427,6 +428,7 @@ def write_dataframe(df, cluster, table, **kwargs):
|
|
|
427
428
|
Store a single dataframe into a table. Takes the same arguments as `write_dataframes`, except only
|
|
428
429
|
a single df/table combination.
|
|
429
430
|
"""
|
|
431
|
+
kwargs["deprecation_stacklevel"] = kwargs.get("deprecation_stacklevel", 1) + 1
|
|
430
432
|
write_dataframes([(table, df)], cluster, **kwargs)
|
|
431
433
|
|
|
432
434
|
|
|
@@ -438,6 +440,7 @@ def write_pinned_dataframe(*args, **kwargs):
|
|
|
438
440
|
"write_pinned_dataframe is deprecated and will be removed in a future release."
|
|
439
441
|
)
|
|
440
442
|
logger.warn("Please use write_dataframe directly instead")
|
|
443
|
+
kwargs["deprecation_stacklevel"] = 2
|
|
441
444
|
return write_dataframe(*args, **kwargs)
|
|
442
445
|
|
|
443
446
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Relative path conversion top directories.
|
|
5
5
|
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/teamcity/buildAgent/work/938b0bdf6727d1ad/thirdparty")
|
quasardb/pybind11/Makefile
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Default target executed when no arguments are given to make.
|
|
5
5
|
default_target: all
|
|
@@ -48,10 +48,10 @@ cmake_force:
|
|
|
48
48
|
SHELL = /bin/sh
|
|
49
49
|
|
|
50
50
|
# The CMake executable.
|
|
51
|
-
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
51
|
+
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake
|
|
52
52
|
|
|
53
53
|
# The command to remove a file.
|
|
54
|
-
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
54
|
+
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
|
|
55
55
|
|
|
56
56
|
# Escaping for special characters.
|
|
57
57
|
EQUALS = =
|
|
@@ -68,7 +68,7 @@ CMAKE_BINARY_DIR = /Users/teamcity/buildAgent/work/938b0bdf6727d1ad/build/temp.m
|
|
|
68
68
|
# Special rule for the target edit_cache
|
|
69
69
|
edit_cache:
|
|
70
70
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
|
|
71
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
71
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
72
72
|
.PHONY : edit_cache
|
|
73
73
|
|
|
74
74
|
# Special rule for the target edit_cache
|
|
@@ -78,7 +78,7 @@ edit_cache/fast: edit_cache
|
|
|
78
78
|
# Special rule for the target rebuild_cache
|
|
79
79
|
rebuild_cache:
|
|
80
80
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
|
|
81
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
81
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
82
82
|
.PHONY : rebuild_cache
|
|
83
83
|
|
|
84
84
|
# Special rule for the target rebuild_cache
|
|
@@ -97,37 +97,37 @@ list_install_components/fast: list_install_components
|
|
|
97
97
|
# Special rule for the target install
|
|
98
98
|
install: preinstall
|
|
99
99
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
100
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
100
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
101
101
|
.PHONY : install
|
|
102
102
|
|
|
103
103
|
# Special rule for the target install
|
|
104
104
|
install/fast: preinstall/fast
|
|
105
105
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
106
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
106
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
107
107
|
.PHONY : install/fast
|
|
108
108
|
|
|
109
109
|
# Special rule for the target install/local
|
|
110
110
|
install/local: preinstall
|
|
111
111
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
112
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
112
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
113
113
|
.PHONY : install/local
|
|
114
114
|
|
|
115
115
|
# Special rule for the target install/local
|
|
116
116
|
install/local/fast: preinstall/fast
|
|
117
117
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
118
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
118
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
119
119
|
.PHONY : install/local/fast
|
|
120
120
|
|
|
121
121
|
# Special rule for the target install/strip
|
|
122
122
|
install/strip: preinstall
|
|
123
123
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
124
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
124
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
125
125
|
.PHONY : install/strip
|
|
126
126
|
|
|
127
127
|
# Special rule for the target install/strip
|
|
128
128
|
install/strip/fast: preinstall/fast
|
|
129
129
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
130
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
130
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
131
131
|
.PHONY : install/strip/fast
|
|
132
132
|
|
|
133
133
|
# The main all target
|
|
@@ -34,7 +34,7 @@ endif()
|
|
|
34
34
|
|
|
35
35
|
# Set path to fallback-tool for dependency-resolution.
|
|
36
36
|
if(NOT DEFINED CMAKE_OBJDUMP)
|
|
37
|
-
set(CMAKE_OBJDUMP "/usr/
|
|
37
|
+
set(CMAKE_OBJDUMP "/usr/bin/objdump")
|
|
38
38
|
endif()
|
|
39
39
|
|
|
40
40
|
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Relative path conversion top directories.
|
|
5
5
|
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/teamcity/buildAgent/work/938b0bdf6727d1ad/thirdparty")
|
|
@@ -7,7 +7,7 @@ if(CMAKE_VERSION VERSION_LESS "3.0.0")
|
|
|
7
7
|
message(FATAL_ERROR "CMake >= 3.0.0 required")
|
|
8
8
|
endif()
|
|
9
9
|
cmake_policy(PUSH)
|
|
10
|
-
cmake_policy(VERSION 3.0.0...3.
|
|
10
|
+
cmake_policy(VERSION 3.0.0...3.30)
|
|
11
11
|
#----------------------------------------------------------------
|
|
12
12
|
# Generated CMake target import file.
|
|
13
13
|
#----------------------------------------------------------------
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Delete rule output on recipe failure.
|
|
5
5
|
.DELETE_ON_ERROR:
|
|
@@ -44,10 +44,10 @@ cmake_force:
|
|
|
44
44
|
SHELL = /bin/sh
|
|
45
45
|
|
|
46
46
|
# The CMake executable.
|
|
47
|
-
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
47
|
+
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake
|
|
48
48
|
|
|
49
49
|
# The command to remove a file.
|
|
50
|
-
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
50
|
+
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
|
|
51
51
|
|
|
52
52
|
# Escaping for special characters.
|
|
53
53
|
EQUALS = =
|
quasardb/range-v3/Makefile
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# CMAKE generated file: DO NOT EDIT!
|
|
2
|
-
# Generated by "Unix Makefiles" Generator, CMake Version
|
|
2
|
+
# Generated by "Unix Makefiles" Generator, CMake Version 4.0
|
|
3
3
|
|
|
4
4
|
# Default target executed when no arguments are given to make.
|
|
5
5
|
default_target: all
|
|
@@ -48,10 +48,10 @@ cmake_force:
|
|
|
48
48
|
SHELL = /bin/sh
|
|
49
49
|
|
|
50
50
|
# The CMake executable.
|
|
51
|
-
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
51
|
+
CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake
|
|
52
52
|
|
|
53
53
|
# The command to remove a file.
|
|
54
|
-
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
54
|
+
RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
|
|
55
55
|
|
|
56
56
|
# Escaping for special characters.
|
|
57
57
|
EQUALS = =
|
|
@@ -68,7 +68,7 @@ CMAKE_BINARY_DIR = /Users/teamcity/buildAgent/work/938b0bdf6727d1ad/build/temp.m
|
|
|
68
68
|
# Special rule for the target edit_cache
|
|
69
69
|
edit_cache:
|
|
70
70
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
|
|
71
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
71
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
72
72
|
.PHONY : edit_cache
|
|
73
73
|
|
|
74
74
|
# Special rule for the target edit_cache
|
|
@@ -78,7 +78,7 @@ edit_cache/fast: edit_cache
|
|
|
78
78
|
# Special rule for the target rebuild_cache
|
|
79
79
|
rebuild_cache:
|
|
80
80
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
|
|
81
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
81
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
|
82
82
|
.PHONY : rebuild_cache
|
|
83
83
|
|
|
84
84
|
# Special rule for the target rebuild_cache
|
|
@@ -97,37 +97,37 @@ list_install_components/fast: list_install_components
|
|
|
97
97
|
# Special rule for the target install
|
|
98
98
|
install: preinstall
|
|
99
99
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
100
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
100
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
101
101
|
.PHONY : install
|
|
102
102
|
|
|
103
103
|
# Special rule for the target install
|
|
104
104
|
install/fast: preinstall/fast
|
|
105
105
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
|
|
106
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
106
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
|
|
107
107
|
.PHONY : install/fast
|
|
108
108
|
|
|
109
109
|
# Special rule for the target install/local
|
|
110
110
|
install/local: preinstall
|
|
111
111
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
112
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
112
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
113
113
|
.PHONY : install/local
|
|
114
114
|
|
|
115
115
|
# Special rule for the target install/local
|
|
116
116
|
install/local/fast: preinstall/fast
|
|
117
117
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
|
|
118
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
118
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
|
|
119
119
|
.PHONY : install/local/fast
|
|
120
120
|
|
|
121
121
|
# Special rule for the target install/strip
|
|
122
122
|
install/strip: preinstall
|
|
123
123
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
124
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
124
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
125
125
|
.PHONY : install/strip
|
|
126
126
|
|
|
127
127
|
# Special rule for the target install/strip
|
|
128
128
|
install/strip/fast: preinstall/fast
|
|
129
129
|
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
|
|
130
|
-
/Users/teamcity/buildAgent/temp/buildTmp/build-env-
|
|
130
|
+
/Users/teamcity/buildAgent/temp/buildTmp/build-env-jr5gpll6/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
|
|
131
131
|
.PHONY : install/strip/fast
|
|
132
132
|
|
|
133
133
|
# The main all target
|
|
@@ -34,7 +34,7 @@ endif()
|
|
|
34
34
|
|
|
35
35
|
# Set path to fallback-tool for dependency-resolution.
|
|
36
36
|
if(NOT DEFINED CMAKE_OBJDUMP)
|
|
37
|
-
set(CMAKE_OBJDUMP "/usr/
|
|
37
|
+
set(CMAKE_OBJDUMP "/usr/bin/objdump")
|
|
38
38
|
endif()
|
|
39
39
|
|
|
40
40
|
if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT)
|
|
@@ -7,7 +7,7 @@ if(CMAKE_VERSION VERSION_LESS "3.0.0")
|
|
|
7
7
|
message(FATAL_ERROR "CMake >= 3.0.0 required")
|
|
8
8
|
endif()
|
|
9
9
|
cmake_policy(PUSH)
|
|
10
|
-
cmake_policy(VERSION 3.0.0...3.
|
|
10
|
+
cmake_policy(VERSION 3.0.0...3.30)
|
|
11
11
|
#----------------------------------------------------------------
|
|
12
12
|
# Generated CMake target import file.
|
|
13
13
|
#----------------------------------------------------------------
|
quasardb/stats.py
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import re
|
|
2
|
+
|
|
2
3
|
import quasardb
|
|
3
4
|
import logging
|
|
5
|
+
from collections import defaultdict
|
|
4
6
|
from datetime import datetime
|
|
7
|
+
from enum import Enum
|
|
5
8
|
|
|
6
9
|
logger = logging.getLogger("quasardb.stats")
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
MAX_KEYS = 4 * 1024 * 1024 # 4 million max keys
|
|
9
12
|
stats_prefix = "$qdb.statistics."
|
|
13
|
+
|
|
14
|
+
# Compile these regexes once for speed
|
|
10
15
|
user_pattern = re.compile(r"\$qdb.statistics.(.*).uid_([0-9]+)$")
|
|
11
16
|
total_pattern = re.compile(r"\$qdb.statistics.(.*)$")
|
|
17
|
+
user_clean_pattern = re.compile(r"\.uid_\d+")
|
|
12
18
|
|
|
13
19
|
|
|
14
20
|
def is_user_stat(s):
|
|
@@ -50,49 +56,29 @@ def of_node(dconn):
|
|
|
50
56
|
"""
|
|
51
57
|
|
|
52
58
|
start = datetime.now()
|
|
53
|
-
raw = {k: _get_stat(dconn, k) for k in dconn.prefix_get(stats_prefix, 1000)}
|
|
54
59
|
|
|
55
|
-
|
|
60
|
+
ks = _get_all_keys(dconn)
|
|
61
|
+
idx = _index_keys(dconn, ks)
|
|
62
|
+
raw = {k: _get_stat_value(dconn, k) for k in ks}
|
|
63
|
+
|
|
64
|
+
ret = {"by_uid": _by_uid(raw, idx), "cumulative": _cumulative(raw, idx)}
|
|
56
65
|
|
|
57
66
|
check_duration = datetime.now() - start
|
|
58
67
|
|
|
59
|
-
ret["cumulative"]["check.online"] =
|
|
60
|
-
|
|
68
|
+
ret["cumulative"]["check.online"] = {
|
|
69
|
+
"value": 1,
|
|
70
|
+
"type": Type.ACCUMULATOR,
|
|
71
|
+
"unit": Unit.NONE,
|
|
72
|
+
}
|
|
73
|
+
ret["cumulative"]["check.duration_ms"] = {
|
|
74
|
+
"value": int(check_duration.total_seconds() * 1000),
|
|
75
|
+
"type": Type.ACCUMULATOR,
|
|
76
|
+
"unit": Unit.MILLISECONDS,
|
|
77
|
+
}
|
|
61
78
|
|
|
62
79
|
return ret
|
|
63
80
|
|
|
64
81
|
|
|
65
|
-
_stat_types = {
|
|
66
|
-
"node_id": ("constant", None),
|
|
67
|
-
"operating_system": ("constant", None),
|
|
68
|
-
"partitions_count": ("constant", "count"),
|
|
69
|
-
"cpu.system": ("counter", "ns"),
|
|
70
|
-
"cpu.user": ("counter", "ns"),
|
|
71
|
-
"cpu.idle": ("counter", "ns"),
|
|
72
|
-
"startup": ("constant", None),
|
|
73
|
-
"startup_time": ("constant", None),
|
|
74
|
-
"shutdown_time": ("constant", None),
|
|
75
|
-
"network.current_users_count": ("gauge", "count"),
|
|
76
|
-
"hardware_concurrency": ("gauge", "count"),
|
|
77
|
-
"check.online": ("gauge", "count"),
|
|
78
|
-
"check.duration_ms": ("constant", "ms"),
|
|
79
|
-
"requests.bytes_in": ("counter", "bytes"),
|
|
80
|
-
"requests.bytes_out": ("counter", "bytes"),
|
|
81
|
-
"requests.errors_count": ("counter", "count"),
|
|
82
|
-
"requests.successes_count": ("counter", "count"),
|
|
83
|
-
"requests.total_count": ("counter", "count"),
|
|
84
|
-
"async_pipelines.merge.bucket_count": ("counter", "count"),
|
|
85
|
-
"async_pipelines.merge.duration_us": ("counter", "us"),
|
|
86
|
-
"async_pipelines.write.successes_count": ("counter", "count"),
|
|
87
|
-
"async_pipelines.write.failures_count": ("counter", "count"),
|
|
88
|
-
"async_pipelines.write.time_us": ("counter", "us"),
|
|
89
|
-
"async_pipelines.merge.max_bucket_count": ("gauge", "count"),
|
|
90
|
-
"async_pipelines.merge.max_depth_count": ("gauge", "count"),
|
|
91
|
-
"async_pipelines.merge.requests_count": ("counter", "count"),
|
|
92
|
-
"evicted.count": ("counter", "count"),
|
|
93
|
-
"pageins.count": ("counter", "count"),
|
|
94
|
-
}
|
|
95
|
-
|
|
96
82
|
async_pipeline_bytes_pattern = re.compile(
|
|
97
83
|
r"async_pipelines.pipe_[0-9]+.merge_map.bytes"
|
|
98
84
|
)
|
|
@@ -101,39 +87,6 @@ async_pipeline_count_pattern = re.compile(
|
|
|
101
87
|
)
|
|
102
88
|
|
|
103
89
|
|
|
104
|
-
def _stat_type(stat_id):
|
|
105
|
-
if stat_id in _stat_types:
|
|
106
|
-
return _stat_types[stat_id]
|
|
107
|
-
elif stat_id.endswith("total_ns"):
|
|
108
|
-
return ("counter", "ns")
|
|
109
|
-
elif stat_id.endswith("total_bytes"):
|
|
110
|
-
return ("counter", "bytes")
|
|
111
|
-
elif stat_id.endswith("read_bytes"):
|
|
112
|
-
return ("counter", "bytes")
|
|
113
|
-
elif stat_id.endswith("written_bytes"):
|
|
114
|
-
return ("counter", "bytes")
|
|
115
|
-
elif stat_id.endswith("total_count"):
|
|
116
|
-
return ("counter", "count")
|
|
117
|
-
elif stat_id.startswith("network.sessions."):
|
|
118
|
-
return ("gauge", "count")
|
|
119
|
-
elif stat_id.startswith("memory."):
|
|
120
|
-
# memory statistics are all gauges i think, describes how much memory currently allocated where
|
|
121
|
-
return ("gauge", "bytes")
|
|
122
|
-
elif stat_id.startswith("persistence.") or stat_id.startswith("disk"):
|
|
123
|
-
# persistence are also all gauges, describes mostly how much is currently available/used on storage
|
|
124
|
-
return ("gauge", "bytes")
|
|
125
|
-
elif stat_id.startswith("license."):
|
|
126
|
-
return ("gauge", None)
|
|
127
|
-
elif stat_id.startswith("engine_"):
|
|
128
|
-
return ("constant", None)
|
|
129
|
-
elif async_pipeline_bytes_pattern.match(stat_id):
|
|
130
|
-
return ("gauge", "bytes")
|
|
131
|
-
elif async_pipeline_count_pattern.match(stat_id):
|
|
132
|
-
return ("gauge", "count")
|
|
133
|
-
else:
|
|
134
|
-
return None
|
|
135
|
-
|
|
136
|
-
|
|
137
90
|
def stat_type(stat_id):
|
|
138
91
|
"""
|
|
139
92
|
Returns the statistic type by a stat id. Returns one of:
|
|
@@ -144,66 +97,193 @@ def stat_type(stat_id):
|
|
|
144
97
|
|
|
145
98
|
This is useful for determining which value should be reported in a dashboard.
|
|
146
99
|
"""
|
|
147
|
-
|
|
148
|
-
|
|
100
|
+
import warnings
|
|
149
101
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
"
|
|
153
|
-
|
|
154
|
-
|
|
102
|
+
warnings.warn(
|
|
103
|
+
"The 'stat_type' method is deprecated and will be removed in a future release."
|
|
104
|
+
"The stat type and unit are now part of the return value of invocations to the 'of_node' and 'by_node' methods.",
|
|
105
|
+
DeprecationWarning,
|
|
106
|
+
stacklevel=2,
|
|
155
107
|
)
|
|
156
108
|
|
|
157
|
-
|
|
158
|
-
if stat_type == "counter":
|
|
159
|
-
return cur - prev
|
|
160
|
-
elif stat_type == "gauge":
|
|
161
|
-
return cur
|
|
162
|
-
else:
|
|
163
|
-
return None
|
|
109
|
+
return None
|
|
164
110
|
|
|
165
111
|
|
|
166
|
-
def
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
try:
|
|
170
|
-
prev_stat = cur_stats[stat_id]
|
|
171
|
-
cur_stat = cur_stats[stat_id]
|
|
112
|
+
def _get_all_keys(dconn, n=1024):
|
|
113
|
+
"""
|
|
114
|
+
Returns all keys from a single node.
|
|
172
115
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
116
|
+
Parameters:
|
|
117
|
+
dconn: quasardb.Node
|
|
118
|
+
Direct node connection to the node we wish to connect to.
|
|
176
119
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
120
|
+
n: int
|
|
121
|
+
Number of keys to retrieve.
|
|
122
|
+
"""
|
|
123
|
+
xs = None
|
|
124
|
+
increase_rate = 8
|
|
125
|
+
# keep getting keys while number of results exceeds the given "n"
|
|
126
|
+
while xs is None or len(xs) >= n:
|
|
127
|
+
if xs is not None:
|
|
128
|
+
n = n * increase_rate
|
|
129
|
+
if n >= MAX_KEYS:
|
|
130
|
+
raise Exception(f"ERROR: Cannot fetch more than {MAX_KEYS} keys.")
|
|
131
|
+
xs = dconn.prefix_get(stats_prefix, n)
|
|
180
132
|
|
|
181
|
-
return
|
|
133
|
+
return xs
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class Type(Enum):
|
|
137
|
+
ACCUMULATOR = 1
|
|
138
|
+
GAUGE = 2
|
|
139
|
+
LABEL = 3
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class Unit(Enum):
|
|
143
|
+
NONE = 0
|
|
144
|
+
COUNT = 1
|
|
145
|
+
|
|
146
|
+
# Size units
|
|
147
|
+
BYTES = 32
|
|
148
|
+
|
|
149
|
+
# Time/duration units
|
|
150
|
+
EPOCH = 64
|
|
151
|
+
NANOSECONDS = 65
|
|
152
|
+
MICROSECONDS = 66
|
|
153
|
+
MILLISECONDS = 67
|
|
154
|
+
SECONDS = 68
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
_type_string_to_enum = {
|
|
158
|
+
"accumulator": Type.ACCUMULATOR,
|
|
159
|
+
"gauge": Type.GAUGE,
|
|
160
|
+
"label": Type.LABEL,
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
_unit_string_to_enum = {
|
|
164
|
+
"none": Unit.NONE,
|
|
165
|
+
"count": Unit.COUNT,
|
|
166
|
+
"bytes": Unit.BYTES,
|
|
167
|
+
"epoch": Unit.EPOCH,
|
|
168
|
+
"nanoseconds": Unit.NANOSECONDS,
|
|
169
|
+
"microseconds": Unit.MICROSECONDS,
|
|
170
|
+
"milliseconds": Unit.MILLISECONDS,
|
|
171
|
+
"seconds": Unit.SECONDS,
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def _lookup_enum(dconn, k, m):
|
|
176
|
+
"""
|
|
177
|
+
Utility function to avoid code duplication: automatically looks up a key's value
|
|
178
|
+
from QuasarDB and looks it up in provided dict.
|
|
179
|
+
"""
|
|
180
|
+
|
|
181
|
+
x = dconn.blob(k).get()
|
|
182
|
+
x = _clean_blob(x)
|
|
183
|
+
|
|
184
|
+
if x not in m:
|
|
185
|
+
raise Exception(f"Unrecognized unit/type {x} from key {k}")
|
|
186
|
+
|
|
187
|
+
return m[x]
|
|
182
188
|
|
|
183
189
|
|
|
184
|
-
def
|
|
190
|
+
def _lookup_type(dconn, k):
|
|
185
191
|
"""
|
|
186
|
-
|
|
192
|
+
Looks up and parses/validates the metric type.
|
|
187
193
|
"""
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
194
|
+
assert k.endswith(".type")
|
|
195
|
+
|
|
196
|
+
return _lookup_enum(dconn, k, _type_string_to_enum)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def _lookup_unit(dconn, k):
|
|
200
|
+
"""
|
|
201
|
+
Looks up and parses/validates the metric type.
|
|
202
|
+
"""
|
|
203
|
+
assert k.endswith(".unit")
|
|
204
|
+
|
|
205
|
+
return _lookup_enum(dconn, k, _unit_string_to_enum)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def _index_keys(dconn, ks):
|
|
209
|
+
"""
|
|
210
|
+
Takes all statistics keys that are retrieved, and "indexes" them in such a way
|
|
211
|
+
that we end up with a dict of all statistic keys, their type and their unit.
|
|
212
|
+
"""
|
|
213
|
+
|
|
214
|
+
###
|
|
215
|
+
# The keys generally look like this, for example:
|
|
216
|
+
#
|
|
217
|
+
# $qdb.statistics.requests.out_bytes
|
|
218
|
+
# $qdb.statistics.requests.out_bytes.type
|
|
219
|
+
# $qdb.statistics.requests.out_bytes.uid_1
|
|
220
|
+
# $qdb.statistics.requests.out_bytes.uid_1.type
|
|
221
|
+
# $qdb.statistics.requests.out_bytes.uid_1.unit
|
|
222
|
+
# $qdb.statistics.requests.out_bytes.unit
|
|
223
|
+
#
|
|
224
|
+
# For this purpose, we simply get rid of the "uid" part, as the per-uid metrics are guaranteed
|
|
225
|
+
# to be of the exact same type as all the others. So after trimming those, the keys will look
|
|
226
|
+
# like this:
|
|
227
|
+
#
|
|
228
|
+
# $qdb.statistics.requests.out_bytes
|
|
229
|
+
# $qdb.statistics.requests.out_bytes.type
|
|
230
|
+
# $qdb.statistics.requests.out_bytes
|
|
231
|
+
# $qdb.statistics.requests.out_bytes.type
|
|
232
|
+
# $qdb.statistics.requests.out_bytes.unit
|
|
233
|
+
# $qdb.statistics.requests.out_bytes.unit
|
|
234
|
+
#
|
|
235
|
+
# And after deduplication like this:
|
|
236
|
+
#
|
|
237
|
+
# $qdb.statistics.requests.out_bytes
|
|
238
|
+
# $qdb.statistics.requests.out_bytes.type
|
|
239
|
+
# $qdb.statistics.requests.out_bytes.unit
|
|
240
|
+
#
|
|
241
|
+
# In which case we'll store `requests.out_bytes` as the statistic type, and look up the type
|
|
242
|
+
# and unit for those metrics and add a placeholder value.
|
|
243
|
+
|
|
244
|
+
ret = defaultdict(lambda: {"value": None, "type": None, "unit": None})
|
|
245
|
+
|
|
246
|
+
for k in ks:
|
|
247
|
+
# Remove any 'uid_[0-9]+' part from the string
|
|
248
|
+
k_ = user_clean_pattern.sub("", k)
|
|
249
|
+
|
|
250
|
+
matches = total_pattern.match(k_)
|
|
251
|
+
|
|
252
|
+
parts = matches.groups()[0].rsplit(".", 1)
|
|
253
|
+
metric_id = parts[0]
|
|
254
|
+
|
|
255
|
+
if len(parts) > 1 and parts[1] == "type":
|
|
256
|
+
if ret[metric_id]["type"] == None:
|
|
257
|
+
# We haven't seen this particular statistic yet
|
|
258
|
+
ret[metric_id]["type"] = _lookup_type(dconn, k)
|
|
259
|
+
elif len(parts) > 1 and parts[1] == "unit":
|
|
260
|
+
if ret[metric_id]["unit"] == None:
|
|
261
|
+
# We haven't seen this particular statistic yet
|
|
262
|
+
ret[metric_id]["unit"] = _lookup_unit(dconn, k)
|
|
263
|
+
else:
|
|
264
|
+
# It's a value, we look those up later
|
|
265
|
+
pass
|
|
193
266
|
|
|
194
267
|
return ret
|
|
195
268
|
|
|
196
269
|
|
|
197
270
|
def _clean_blob(x):
|
|
271
|
+
"""
|
|
272
|
+
Utility function that decodes a blob as an UTF-8 string, as the direct node C API
|
|
273
|
+
does not yet support 'string' types and as such all statistics are stored as blobs.
|
|
274
|
+
"""
|
|
198
275
|
x_ = x.decode("utf-8", "replace")
|
|
199
276
|
|
|
200
277
|
# remove trailing zero-terminator
|
|
201
278
|
return "".join(c for c in x_ if ord(c) != 0)
|
|
202
279
|
|
|
203
280
|
|
|
204
|
-
def
|
|
281
|
+
def _get_stat_value(dconn, k):
|
|
205
282
|
# Ugly, but works: try to retrieve as integer, if not an int, retrieve as
|
|
206
283
|
# blob
|
|
284
|
+
#
|
|
285
|
+
# XXX(leon): we could use the index we built to get a much stronger hint
|
|
286
|
+
# on what the type is.
|
|
207
287
|
try:
|
|
208
288
|
return dconn.integer(k).get()
|
|
209
289
|
|
|
@@ -216,30 +296,63 @@ def _get_stat(dconn, k):
|
|
|
216
296
|
return _clean_blob(dconn.blob(k).get())
|
|
217
297
|
|
|
218
298
|
|
|
219
|
-
def _by_uid(stats):
|
|
299
|
+
def _by_uid(stats, idx):
|
|
220
300
|
xs = {}
|
|
221
301
|
for k, v in stats.items():
|
|
222
302
|
matches = user_pattern.match(k)
|
|
223
303
|
if is_user_stat(k) and matches:
|
|
224
304
|
(metric, uid_str) = matches.groups()
|
|
305
|
+
|
|
306
|
+
if metric.split(".")[-1] in ["type", "unit"]:
|
|
307
|
+
# We already indexed the type and unit in our idx, this is not interesting
|
|
308
|
+
continue
|
|
309
|
+
|
|
310
|
+
if metric.startswith("serialized"):
|
|
311
|
+
# Internal stuff we don't care about nor cannot do anything with
|
|
312
|
+
continue
|
|
313
|
+
|
|
314
|
+
if not metric in idx:
|
|
315
|
+
raise Exception(f"Metric not in internal index: {metric}")
|
|
316
|
+
|
|
317
|
+
# Parse user id
|
|
225
318
|
uid = int(uid_str)
|
|
319
|
+
|
|
320
|
+
# Prepare our metric dict
|
|
321
|
+
x = idx[metric].copy()
|
|
322
|
+
x["value"] = v
|
|
323
|
+
|
|
226
324
|
if uid not in xs:
|
|
227
325
|
xs[uid] = {}
|
|
228
326
|
|
|
229
|
-
|
|
230
|
-
xs[uid][metric] = v
|
|
327
|
+
xs[uid][metric] = x
|
|
231
328
|
|
|
232
329
|
return xs
|
|
233
330
|
|
|
234
331
|
|
|
235
|
-
def _cumulative(stats):
|
|
332
|
+
def _cumulative(stats, idx):
|
|
236
333
|
xs = {}
|
|
237
334
|
|
|
238
335
|
for k, v in stats.items():
|
|
239
336
|
matches = total_pattern.match(k)
|
|
240
337
|
if is_cumulative_stat(k) and matches:
|
|
241
338
|
metric = matches.groups()[0]
|
|
242
|
-
|
|
243
|
-
|
|
339
|
+
|
|
340
|
+
if metric.split(".")[-1] in ["type", "unit"]:
|
|
341
|
+
# We already indexed the type and unit in our idx, this is not interesting
|
|
342
|
+
continue
|
|
343
|
+
|
|
344
|
+
if metric.startswith("serialized"):
|
|
345
|
+
# Internal stuff we don't care about nor cannot do anything with
|
|
346
|
+
continue
|
|
347
|
+
|
|
348
|
+
if not metric in idx:
|
|
349
|
+
raise Exception(f"Metric not in internal index: {metric}")
|
|
350
|
+
|
|
351
|
+
x = idx[metric].copy()
|
|
352
|
+
x["value"] = v
|
|
353
|
+
xs[metric] = x
|
|
244
354
|
|
|
245
355
|
return xs
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
# async_pipelines.buffer.total_bytes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: quasardb
|
|
3
|
-
Version: 3.14.2.
|
|
3
|
+
Version: 3.14.2.dev6
|
|
4
4
|
Summary: Python API for quasardb
|
|
5
5
|
Home-page: https://www.quasardb.net/
|
|
6
6
|
Author: quasardb SAS
|
|
@@ -35,6 +35,7 @@ Dynamic: classifier
|
|
|
35
35
|
Dynamic: home-page
|
|
36
36
|
Dynamic: keywords
|
|
37
37
|
Dynamic: license
|
|
38
|
+
Dynamic: license-file
|
|
38
39
|
Dynamic: provides-extra
|
|
39
40
|
Dynamic: requires-dist
|
|
40
41
|
Dynamic: summary
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
quasardb/Makefile,sha256=
|
|
1
|
+
quasardb/Makefile,sha256=5DKbTZUOufjHZLSfMOKIIOmsRf-50Ri81ydmaePcooo,8331
|
|
2
2
|
quasardb/__init__.py,sha256=x_gazIFMlZ35Op_6Dh0YuKhslM9GlVH2UfjluLsMwf4,4614
|
|
3
|
-
quasardb/cmake_install.cmake,sha256=
|
|
3
|
+
quasardb/cmake_install.cmake,sha256=7Dlhsj5R-ebC7k1JW3g0xI39TofkldTqPwFFJ_lpXQ0,1984
|
|
4
4
|
quasardb/firehose.py,sha256=_kSHuu2rTDHij1RpPLfsnbaiX_rSw-hurhBw54VNS2w,3350
|
|
5
|
-
quasardb/libqdb_api.dylib,sha256=
|
|
5
|
+
quasardb/libqdb_api.dylib,sha256=vOaasBtECKBk47Dzf16tU_tvrqcsMEn4YjcdCvIOKB4,50932616
|
|
6
6
|
quasardb/pool.py,sha256=ph4gxwaOcvQ0QqrTO9oVu5Vqy-7t1CweakrgfsmvprM,8474
|
|
7
|
-
quasardb/quasardb.cpython-311-darwin.so,sha256
|
|
8
|
-
quasardb/stats.py,sha256=
|
|
7
|
+
quasardb/quasardb.cpython-311-darwin.so,sha256=08jpGNwNSBfcuMnEnvEonsfe1EmVqctTFAX4NRXDprQ,892768
|
|
8
|
+
quasardb/stats.py,sha256=XfMBSQoFbTNAFeyElhAXQRVFueHscmf5cg4zKSWnY2I,9750
|
|
9
9
|
quasardb/table_cache.py,sha256=gYX4wqx4v4uKUE-GE24g-ZOi-OtE67IVDdUcNCIik-w,1511
|
|
10
|
-
quasardb/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=
|
|
10
|
+
quasardb/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=rbyGSaqux5tbsfRvQRcVBJBtaYT55IEKr8mxXcs_jI8,732
|
|
11
11
|
quasardb/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
|
|
12
|
-
quasardb/date/Makefile,sha256=
|
|
13
|
-
quasardb/date/cmake_install.cmake,sha256=
|
|
12
|
+
quasardb/date/Makefile,sha256=rFgk7UXNTEGM1U3Es3nnA0tlTnPFhjuxJ5G--xFrdcc,8356
|
|
13
|
+
quasardb/date/cmake_install.cmake,sha256=OYYmlNSh5e4UpPxwPvT_mbUKAR7YwFCPuDeyKKRRFuA,3565
|
|
14
14
|
quasardb/date/dateConfigVersion.cmake,sha256=rL5Cp_r_23Yu8HmjowwKIH04sxxMwdBZ7no3tr4cx14,2762
|
|
15
|
-
quasardb/date/dateTargets.cmake,sha256=
|
|
16
|
-
quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=
|
|
15
|
+
quasardb/date/dateTargets.cmake,sha256=LowYrYv6cqMxByqm9k4ekO1LnnIiSUJL0IQMrfISydE,2869
|
|
16
|
+
quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=rbyGSaqux5tbsfRvQRcVBJBtaYT55IEKr8mxXcs_jI8,732
|
|
17
17
|
quasardb/date/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
|
|
18
|
-
quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake,sha256=
|
|
18
|
+
quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake,sha256=GvSd4PT0WpHLXzmbXs24xB-ekxbiMhN_B_4Te90CIQc,4211
|
|
19
19
|
quasardb/extensions/__init__.py,sha256=FUHR0i62qt5NkOXn7eiMZrzWXo9mQNr1xVz3VSCa9QU,112
|
|
20
20
|
quasardb/extensions/writer.py,sha256=uRL4fVkucd7vwdFySnPLpH4DuNK4bVtXCSRxQk4YJ-g,5567
|
|
21
|
-
quasardb/numpy/__init__.py,sha256=
|
|
22
|
-
quasardb/pandas/__init__.py,sha256=
|
|
23
|
-
quasardb/pybind11/Makefile,sha256
|
|
24
|
-
quasardb/pybind11/cmake_install.cmake,sha256=
|
|
25
|
-
quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=
|
|
21
|
+
quasardb/numpy/__init__.py,sha256=f1Umha37ZOaRlb3akQjS8ycSN7feQw9yTTWAIF2mqvM,33915
|
|
22
|
+
quasardb/pandas/__init__.py,sha256=6MaY_JvFdkvbuZGWRwN132zDXRogAcrKcZOLbXWnHVg,16196
|
|
23
|
+
quasardb/pybind11/Makefile,sha256=-K4NrqYeFxOHx4or6epiSgag0_4NgJsIk6AsAzvrhZw,8376
|
|
24
|
+
quasardb/pybind11/cmake_install.cmake,sha256=QmWCAxhy4GS3fKUeZufRyFemczfUC6ZBtIW0cDMoPaQ,1486
|
|
25
|
+
quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=rbyGSaqux5tbsfRvQRcVBJBtaYT55IEKr8mxXcs_jI8,732
|
|
26
26
|
quasardb/pybind11/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
|
|
27
|
-
quasardb/range-v3/Makefile,sha256=
|
|
28
|
-
quasardb/range-v3/cmake_install.cmake,sha256=
|
|
27
|
+
quasardb/range-v3/Makefile,sha256=yyutRb85btL7fQPkFRZRkOEXdUR0vrDeTkNEM6ae174,9753
|
|
28
|
+
quasardb/range-v3/cmake_install.cmake,sha256=X1ijuEyLm_R_DN9GinX5LA63gppujE07E7b03gCwI-Y,4538
|
|
29
29
|
quasardb/range-v3/range-v3-config-version.cmake,sha256=xGi8nCg5dIl5VmCOtTEVVa-dwABxKxLEd1Mx-bUvLLM,3249
|
|
30
|
-
quasardb/range-v3/range-v3-config.cmake,sha256=
|
|
31
|
-
quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=
|
|
30
|
+
quasardb/range-v3/range-v3-config.cmake,sha256=x2OIgfSL5bagNUvMFMuIwJxXOVtz50D_4ZpawrD3-UA,3423
|
|
31
|
+
quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=rbyGSaqux5tbsfRvQRcVBJBtaYT55IEKr8mxXcs_jI8,732
|
|
32
32
|
quasardb/range-v3/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
|
|
33
|
-
quasardb/range-v3/CMakeFiles/Export/d94ef200eca10a819b5858b33e808f5b/range-v3-targets.cmake,sha256=
|
|
33
|
+
quasardb/range-v3/CMakeFiles/Export/d94ef200eca10a819b5858b33e808f5b/range-v3-targets.cmake,sha256=J-PEbAp6ZILGVs6hgb_XBUVayBHMyacZTGvz2l259bo,5265
|
|
34
34
|
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/DependInfo.cmake,sha256=ssojOAtcndfwexIOMvsRoVek3vdNgBmUVZscjIj5L1U,585
|
|
35
|
-
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/build.make,sha256=
|
|
35
|
+
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/build.make,sha256=10b3Yg4NzXsTA5zv5Qw_sT7wMWVcuKbcD4Snsmag3Mc,4475
|
|
36
36
|
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/cmake_clean.cmake,sha256=3b0pZoiofoRzAiY1l7OLw203ZXp-mm1FUlQHob6i7aU,160
|
|
37
37
|
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/compiler_depend.make,sha256=Oge9eptzOB-hllw_Tye4o5wiXsIsdq1xm1GGCe0oGFM,126
|
|
38
38
|
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/compiler_depend.ts,sha256=orKrKpvHulgFBjBgzdeRvCpv0fV7cTffTdaHNqijFJg,120
|
|
39
39
|
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/progress.make,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
40
40
|
quasardb/range-v3/include/range/v3/version.hpp,sha256=d-ToEdR3GnC_p_0RAeS77xL-SVx6EKHgTlWJ9PUQlSQ,586
|
|
41
|
-
quasardb-3.14.2.
|
|
42
|
-
quasardb-3.14.2.
|
|
43
|
-
quasardb-3.14.2.
|
|
44
|
-
quasardb-3.14.2.
|
|
45
|
-
quasardb-3.14.2.
|
|
41
|
+
quasardb-3.14.2.dev6.dist-info/licenses/LICENSE.md,sha256=_drOadIrIX8mzUZcnTJBTpUQih5gwdRAGK8ZKanYD6k,1467
|
|
42
|
+
quasardb-3.14.2.dev6.dist-info/METADATA,sha256=3lgDPzrOiU-WoBg2yHBVrdBMshwFAJrI-kNdQDV8QzI,1465
|
|
43
|
+
quasardb-3.14.2.dev6.dist-info/WHEEL,sha256=2vOEROhxJLEbm1ARWSnkt26vgyO3BzVfT1Ru8M8QVQ0,110
|
|
44
|
+
quasardb-3.14.2.dev6.dist-info/top_level.txt,sha256=wlprix4hCywuF1PkgKWYdZeJKq_kgJOqkAvukm_sZQ8,9
|
|
45
|
+
quasardb-3.14.2.dev6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|