quasardb 3.14.2.dev5__cp311-cp311-macosx_11_0_arm64.whl → 3.14.2.dev6__cp311-cp311-macosx_11_0_arm64.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.

Files changed (27) hide show
  1. quasardb/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  2. quasardb/Makefile +11 -11
  3. quasardb/cmake_install.cmake +1 -1
  4. quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  5. quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake +1 -1
  6. quasardb/date/Makefile +11 -11
  7. quasardb/date/cmake_install.cmake +1 -1
  8. quasardb/date/dateTargets.cmake +1 -1
  9. quasardb/libqdb_api.dylib +0 -0
  10. quasardb/numpy/__init__.py +104 -31
  11. quasardb/pandas/__init__.py +3 -0
  12. quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  13. quasardb/pybind11/Makefile +11 -11
  14. quasardb/pybind11/cmake_install.cmake +1 -1
  15. quasardb/quasardb.cpython-311-darwin.so +0 -0
  16. quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  17. quasardb/range-v3/CMakeFiles/Export/d94ef200eca10a819b5858b33e808f5b/range-v3-targets.cmake +1 -1
  18. quasardb/range-v3/CMakeFiles/range.v3.headers.dir/build.make +3 -3
  19. quasardb/range-v3/Makefile +11 -11
  20. quasardb/range-v3/cmake_install.cmake +1 -1
  21. quasardb/range-v3/range-v3-config.cmake +1 -1
  22. quasardb/stats.py +223 -110
  23. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info}/METADATA +3 -2
  24. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info}/RECORD +27 -27
  25. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info}/WHEEL +1 -1
  26. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev6.dist-info/licenses}/LICENSE.md +0 -0
  27. {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 3.31
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 3.31
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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake
51
+ CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
54
+ RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
71
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
81
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
100
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
106
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
112
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
118
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
124
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
130
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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/local/clang16/bin/llvm-objdump")
37
+ set(CMAKE_OBJDUMP "/usr/bin/objdump")
38
38
  endif()
39
39
 
40
40
  if(NOT CMAKE_INSTALL_LOCAL_ONLY)
@@ -1,5 +1,5 @@
1
1
  # CMAKE generated file: DO NOT EDIT!
2
- # Generated by "Unix Makefiles" Generator, CMake Version 3.31
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.29)
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 3.31
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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake
51
+ CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
54
+ RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
71
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
81
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
100
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
106
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
112
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
118
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
124
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
130
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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/local/clang16/bin/llvm-objdump")
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.29)
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
@@ -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=False,
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
- return write_arrays(
751
- [(table, data)],
752
- cluster,
753
- table=None,
754
- dtype=dtype,
755
- index=index,
756
- _async=_async,
757
- fast=fast,
758
- truncate=truncate,
759
- deduplicate=deduplicate,
760
- deduplication_mode=deduplication_mode,
761
- infer_types=infer_types,
762
- write_through=write_through,
763
- writer=writer,
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
- ret = []
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))
@@ -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 3.31
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")
@@ -1,5 +1,5 @@
1
1
  # CMAKE generated file: DO NOT EDIT!
2
- # Generated by "Unix Makefiles" Generator, CMake Version 3.31
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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake
51
+ CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
54
+ RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
71
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
81
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
100
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
106
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
112
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
118
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
124
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
130
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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/local/clang16/bin/llvm-objdump")
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 3.31
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.29)
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 3.31
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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake
47
+ CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
50
+ RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
51
51
 
52
52
  # Escaping for special characters.
53
53
  EQUALS = =
@@ -1,5 +1,5 @@
1
1
  # CMAKE generated file: DO NOT EDIT!
2
- # Generated by "Unix Makefiles" Generator, CMake Version 3.31
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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake
51
+ CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -E rm -f
54
+ RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
71
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
81
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
100
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
106
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
112
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
118
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
124
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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-k6rf7kt7/lib/python3.11/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
130
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-f5dh6jbm/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/local/clang16/bin/llvm-objdump")
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.29)
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
- ret = {"by_uid": _by_uid(raw), "cumulative": _cumulative(raw)}
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"] = 1
60
- ret["cumulative"]["check.duration_ms"] = int(check_duration.total_seconds() * 1000)
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
- return _stat_type(stat_id)
148
-
100
+ import warnings
149
101
 
150
- def _calculate_delta_stat(stat_id, prev, cur):
151
- logger.info(
152
- "calculating delta for stat_id = {}, prev = {}. cur = {}".format(
153
- stat_id, prev, cur
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
- stat_type = _stat_type(stat_id)
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 _calculate_delta_stats(prev_stats, cur_stats):
167
- ret = {}
168
- for stat_id in cur_stats.keys():
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
- value = _calculate_delta_stat(stat_id, prev_stat, cur_stat)
174
- if value is not None:
175
- ret[stat_id] = value
116
+ Parameters:
117
+ dconn: quasardb.Node
118
+ Direct node connection to the node we wish to connect to.
176
119
 
177
- except KeyError:
178
- # Stat likely was not present yet in prev_stats
179
- pass
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 ret
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 calculate_delta(prev, cur):
190
+ def _lookup_type(dconn, k):
185
191
  """
186
- Calculates the 'delta' between two successive statistic measurements.
192
+ Looks up and parses/validates the metric type.
187
193
  """
188
- ret = {}
189
- for node_id in cur.keys():
190
- ret[node_id] = _calculate_delta_stats(
191
- prev[node_id]["cumulative"], cur[node_id]["cumulative"]
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 _get_stat(dconn, k):
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
- if not metric.startswith("serialized"):
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
- if not metric.startswith("serialized"):
243
- xs[metric] = v
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.2
1
+ Metadata-Version: 2.4
2
2
  Name: quasardb
3
- Version: 3.14.2.dev5
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=5blOMWObCwXAn-JFuMn3KzNZkHhENkhgl-GJ8j88prw,8317
1
+ quasardb/Makefile,sha256=Dl9SlCwLD4BnQ7Pb6-vJeqSs1xNjuICmLhsOJmckqis,8316
2
2
  quasardb/__init__.py,sha256=x_gazIFMlZ35Op_6Dh0YuKhslM9GlVH2UfjluLsMwf4,4614
3
- quasardb/cmake_install.cmake,sha256=ldtkace99ElFrVIuj1bnQ3GF1oE1003X9A1fyfuvoA8,1999
3
+ quasardb/cmake_install.cmake,sha256=Rq9yM6rzPHnFGxs4XZlCwBDwzgfKJJBgrm15hca5ZdY,1980
4
4
  quasardb/firehose.py,sha256=_kSHuu2rTDHij1RpPLfsnbaiX_rSw-hurhBw54VNS2w,3350
5
- quasardb/libqdb_api.dylib,sha256=8ThPKhWDokAYMHIeLEe0cXKIBOIiq3tkYtrJf-HrFx4,36197568
5
+ quasardb/libqdb_api.dylib,sha256=K9ULhfPVyVTakctCESIli-CsTotOl6moxsL0d4tVXqA,46908656
6
6
  quasardb/pool.py,sha256=ph4gxwaOcvQ0QqrTO9oVu5Vqy-7t1CweakrgfsmvprM,8474
7
- quasardb/quasardb.cpython-311-darwin.so,sha256=KrQzbzLcLy8-tAqobd4Oe9kGB7W50E2dqTLMr41JJQo,917392
8
- quasardb/stats.py,sha256=SoLZzsD2sw4vdHSfqK4dyrGxDzjlVzbboKCpDeYOXbc,7294
7
+ quasardb/quasardb.cpython-311-darwin.so,sha256=gWsCOsMgloGQxK9-SLh0cYXNUf__p3YAUVe7fc23d1Y,901632
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=mFgHn_IVgYL5fvIDHeMuu6AT9E4XMFmhed6b_Hw4Iak,732
10
+ quasardb/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=-b3ebWONj-FoHjOI4n6Z5o6H1n_1o3ibqF3BohoGnj8,731
11
11
  quasardb/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
12
- quasardb/date/Makefile,sha256=3sFoq0K3pq46tKoAwFLsaYea1OEfDsGoAr5kKeKuGT0,8342
13
- quasardb/date/cmake_install.cmake,sha256=BM8F7gRVkL6hF4Cp_RFsE8udMP6eDdninqHtLkib0FE,3580
12
+ quasardb/date/Makefile,sha256=nMR8rez701sOALPUf4slMDX5ajRiiffk2-jRWB1CEwg,8341
13
+ quasardb/date/cmake_install.cmake,sha256=A5ohfBk6-ofbNDRq4JqIHQEi2L4lntUe9d89RY5Y-3w,3561
14
14
  quasardb/date/dateConfigVersion.cmake,sha256=rL5Cp_r_23Yu8HmjowwKIH04sxxMwdBZ7no3tr4cx14,2762
15
- quasardb/date/dateTargets.cmake,sha256=UTTH7zSPDb_tkscV25dahdEEX0Bw_t2SozDUBKy7mHI,2869
16
- quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=mFgHn_IVgYL5fvIDHeMuu6AT9E4XMFmhed6b_Hw4Iak,732
15
+ quasardb/date/dateTargets.cmake,sha256=LowYrYv6cqMxByqm9k4ekO1LnnIiSUJL0IQMrfISydE,2869
16
+ quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=-b3ebWONj-FoHjOI4n6Z5o6H1n_1o3ibqF3BohoGnj8,731
17
17
  quasardb/date/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
18
- quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake,sha256=rWNkRmrNRa8_x5hIZdFw8rJ_aLoigP5fUoRmXaKSyys,4211
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=N-RIdmUPVUsxTe_Og3v1jv2tO3nCjyP2yUC9bKU2Iag,30581
22
- quasardb/pandas/__init__.py,sha256=HXzFKT-nmkG65jcA850GgB8Toc9ArVwtAF4LQA5iW_M,15989
23
- quasardb/pybind11/Makefile,sha256=m8EPCrYG_UDZRJQKx33j4BTuRwAWLPChbBAbEAbFB3s,8362
24
- quasardb/pybind11/cmake_install.cmake,sha256=KNj4YkvjxHctz76yUbAsu9fnfJZC_7d4GeLYJn-hTBk,1504
25
- quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=mFgHn_IVgYL5fvIDHeMuu6AT9E4XMFmhed6b_Hw4Iak,732
21
+ quasardb/numpy/__init__.py,sha256=f1Umha37ZOaRlb3akQjS8ycSN7feQw9yTTWAIF2mqvM,33915
22
+ quasardb/pandas/__init__.py,sha256=6MaY_JvFdkvbuZGWRwN132zDXRogAcrKcZOLbXWnHVg,16196
23
+ quasardb/pybind11/Makefile,sha256=EgmXeg9YeWlhRB3vtt7Ut41W_GgSVq4xeD1y7oEY4Ok,8361
24
+ quasardb/pybind11/cmake_install.cmake,sha256=PDOcFiCEXYF1bJL8tzRcMWIiIVqD-n8ua_zDXfQOnDQ,1485
25
+ quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=-b3ebWONj-FoHjOI4n6Z5o6H1n_1o3ibqF3BohoGnj8,731
26
26
  quasardb/pybind11/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
27
- quasardb/range-v3/Makefile,sha256=OoucwE1-AIuaBhEO_Fg_898LhbDCobbAP2Um2behjt0,9731
28
- quasardb/range-v3/cmake_install.cmake,sha256=oetQfWz8XAMkAL8mV8fHP9oQpZyrvS1583ZeCxD00ts,4550
27
+ quasardb/range-v3/Makefile,sha256=WrjmR4OiY8Nw-HK9irhZSFHBpe2xDauAJ_WofZ28Rh8,9730
28
+ quasardb/range-v3/cmake_install.cmake,sha256=rniqlcrytS76_oxUsmsSnJdgTNZTRCFWZiYi7uUz9PQ,4531
29
29
  quasardb/range-v3/range-v3-config-version.cmake,sha256=xGi8nCg5dIl5VmCOtTEVVa-dwABxKxLEd1Mx-bUvLLM,3249
30
- quasardb/range-v3/range-v3-config.cmake,sha256=iiZBJD9yisikJNYDR84f3siZY7xRddr6z48_0R5jj7c,3423
31
- quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=mFgHn_IVgYL5fvIDHeMuu6AT9E4XMFmhed6b_Hw4Iak,732
30
+ quasardb/range-v3/range-v3-config.cmake,sha256=x2OIgfSL5bagNUvMFMuIwJxXOVtz50D_4ZpawrD3-UA,3423
31
+ quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=-b3ebWONj-FoHjOI4n6Z5o6H1n_1o3ibqF3BohoGnj8,731
32
32
  quasardb/range-v3/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
33
- quasardb/range-v3/CMakeFiles/Export/d94ef200eca10a819b5858b33e808f5b/range-v3-targets.cmake,sha256=V-vcw4htrvk0Sf8A5IKO2_meFGd26tUGbt-Y2R8kZk4,5265
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=JkiH6eRhtyliIEaw9aVkOih4RjiHfstR3FfyhkE02N0,4459
35
+ quasardb/range-v3/CMakeFiles/range.v3.headers.dir/build.make,sha256=D6C3GvajGshb4kAtXXYmdLKE3jNDyg-RApNuigcV9eU,4458
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.dev5.dist-info/LICENSE.md,sha256=_drOadIrIX8mzUZcnTJBTpUQih5gwdRAGK8ZKanYD6k,1467
42
- quasardb-3.14.2.dev5.dist-info/METADATA,sha256=zRtHEBSC3to6u7sCd2cZoSyf4XLlDr7KE1_2cVlTd2U,1443
43
- quasardb-3.14.2.dev5.dist-info/WHEEL,sha256=NW1RskY9zow1Y68W-gXg0oZyBRAugI1JHywIzAIai5o,109
44
- quasardb-3.14.2.dev5.dist-info/top_level.txt,sha256=wlprix4hCywuF1PkgKWYdZeJKq_kgJOqkAvukm_sZQ8,9
45
- quasardb-3.14.2.dev5.dist-info/RECORD,,
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=RGmqfcbp12luPjiDM8mezinyU_RW3Bfc2FnRbfVfvNM,109
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (80.3.1)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-macosx_11_0_arm64
5
5