quasardb 3.14.2.dev5__cp310-cp310-macosx_11_0_arm64.whl → 3.14.2.dev7__cp310-cp310-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 (54) hide show
  1. quasardb/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  2. quasardb/Makefile +11 -11
  3. quasardb/__init__.py +8 -5
  4. quasardb/__init__.pyi +72 -0
  5. quasardb/cmake_install.cmake +1 -1
  6. quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  7. quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake +1 -1
  8. quasardb/date/Makefile +11 -11
  9. quasardb/date/cmake_install.cmake +1 -1
  10. quasardb/date/dateTargets.cmake +1 -1
  11. quasardb/libqdb_api.dylib +0 -0
  12. quasardb/numpy/__init__.py +126 -43
  13. quasardb/pandas/__init__.py +55 -20
  14. quasardb/pool.py +6 -0
  15. quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  16. quasardb/pybind11/Makefile +11 -11
  17. quasardb/pybind11/cmake_install.cmake +1 -1
  18. quasardb/quasardb/__init__.pyi +97 -0
  19. quasardb/quasardb/_batch_column.pyi +5 -0
  20. quasardb/quasardb/_batch_inserter.pyi +30 -0
  21. quasardb/quasardb/_blob.pyi +16 -0
  22. quasardb/quasardb/_cluster.pyi +100 -0
  23. quasardb/quasardb/_continuous.pyi +16 -0
  24. quasardb/quasardb/_double.pyi +7 -0
  25. quasardb/quasardb/_entry.pyi +60 -0
  26. quasardb/quasardb/_error.pyi +15 -0
  27. quasardb/quasardb/_integer.pyi +7 -0
  28. quasardb/quasardb/_node.pyi +26 -0
  29. quasardb/quasardb/_options.pyi +105 -0
  30. quasardb/quasardb/_perf.pyi +5 -0
  31. quasardb/quasardb/_properties.pyi +5 -0
  32. quasardb/quasardb/_query.pyi +2 -0
  33. quasardb/quasardb/_reader.pyi +9 -0
  34. quasardb/quasardb/_retry.pyi +16 -0
  35. quasardb/quasardb/_string.pyi +12 -0
  36. quasardb/quasardb/_table.pyi +125 -0
  37. quasardb/quasardb/_tag.pyi +5 -0
  38. quasardb/quasardb/_timestamp.pyi +9 -0
  39. quasardb/quasardb/_writer.pyi +111 -0
  40. quasardb/quasardb/metrics/__init__.pyi +20 -0
  41. quasardb/quasardb.cpython-310-darwin.so +0 -0
  42. quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake +1 -1
  43. quasardb/range-v3/CMakeFiles/Export/d94ef200eca10a819b5858b33e808f5b/range-v3-targets.cmake +1 -1
  44. quasardb/range-v3/CMakeFiles/range.v3.headers.dir/build.make +3 -3
  45. quasardb/range-v3/Makefile +11 -11
  46. quasardb/range-v3/cmake_install.cmake +1 -1
  47. quasardb/range-v3/range-v3-config.cmake +1 -1
  48. quasardb/stats.py +223 -110
  49. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev7.dist-info}/METADATA +3 -2
  50. quasardb-3.14.2.dev7.dist-info/RECORD +69 -0
  51. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev7.dist-info}/WHEEL +1 -1
  52. quasardb-3.14.2.dev5.dist-info/RECORD +0 -45
  53. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev7.dist-info/licenses}/LICENSE.md +0 -0
  54. {quasardb-3.14.2.dev5.dist-info → quasardb-3.14.2.dev7.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.1
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.1
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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake
51
+ CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -E rm -f
54
+ RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
71
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/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-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
100
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
106
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
112
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
118
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
124
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
130
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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/__init__.py CHANGED
@@ -36,7 +36,10 @@
36
36
  """
37
37
 
38
38
 
39
- def generic_error_msg(msg, e=None):
39
+ from typing import List, Optional
40
+
41
+
42
+ def generic_error_msg(msg: List[str], e: Optional[BaseException] = None) -> str:
40
43
  msg_str = "\n".join(msg)
41
44
 
42
45
  if e is None:
@@ -47,7 +50,7 @@ def generic_error_msg(msg, e=None):
47
50
 
48
51
  **************************************************************************
49
52
  """.format(
50
- msg_str, type(e), str(e)
53
+ msg_str
51
54
  )
52
55
  else:
53
56
  return """
@@ -68,7 +71,7 @@ Original exception:
68
71
  )
69
72
 
70
73
 
71
- def link_error_msg(e):
74
+ def link_error_msg(e: BaseException) -> str:
72
75
  msg = [
73
76
  "QuasarDB was unable to find all expected symbols in the compiled library.",
74
77
  "This is usually caused by running an incorrect version of the QuasarDB C",
@@ -82,7 +85,7 @@ def link_error_msg(e):
82
85
  return generic_error_msg(msg, e)
83
86
 
84
87
 
85
- def glibc_error_msg(e):
88
+ def glibc_error_msg(e: BaseException) -> str:
86
89
  msg = [
87
90
  "QuasarDB was unable to find the expected GLIBC version on this machine.",
88
91
  "This is usually caused by compiling the Python API on a different machine "
@@ -99,7 +102,7 @@ def glibc_error_msg(e):
99
102
  return generic_error_msg(msg, e)
100
103
 
101
104
 
102
- def unknown_error_msg():
105
+ def unknown_error_msg() -> str:
103
106
  msg = [
104
107
  "Unable to import quasardb module: unknown error. ",
105
108
  "",
quasardb/__init__.pyi ADDED
@@ -0,0 +1,72 @@
1
+ """
2
+
3
+ .. module: quasardb
4
+ :platform: Unix, Windows
5
+ :synopsis: quasardb official Python API
6
+
7
+ .. moduleauthor: quasardb SAS. All rights reserved
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from quasardb.quasardb import (
13
+ AliasAlreadyExistsError,
14
+ AliasNotFoundError,
15
+ AsyncPipelineFullError,
16
+ BatchColumnInfo,
17
+ Cluster,
18
+ ColumnInfo,
19
+ ColumnType,
20
+ Error,
21
+ IncompatibleTypeError,
22
+ IndexedColumnInfo,
23
+ InputBufferTooSmallError,
24
+ InternalLocalError,
25
+ InvalidArgumentError,
26
+ InvalidDatetimeError,
27
+ InvalidHandleError,
28
+ InvalidQueryError,
29
+ Node,
30
+ NotImplementedError,
31
+ OutOfBoundsError,
32
+ RetryOptions,
33
+ TryAgainError,
34
+ UninitializedError,
35
+ WriterData,
36
+ WriterPushMode,
37
+ build,
38
+ metrics,
39
+ never_expires,
40
+ version,
41
+ )
42
+
43
+ __all__ = [
44
+ "AliasAlreadyExistsError",
45
+ "AliasNotFoundError",
46
+ "AsyncPipelineFullError",
47
+ "BatchColumnInfo",
48
+ "Cluster",
49
+ "ColumnInfo",
50
+ "ColumnType",
51
+ "Error",
52
+ "IncompatibleTypeError",
53
+ "IndexedColumnInfo",
54
+ "InputBufferTooSmallError",
55
+ "InternalLocalError",
56
+ "InvalidArgumentError",
57
+ "InvalidDatetimeError",
58
+ "InvalidHandleError",
59
+ "InvalidQueryError",
60
+ "Node",
61
+ "NotImplementedError",
62
+ "OutOfBoundsError",
63
+ "RetryOptions",
64
+ "TryAgainError",
65
+ "UninitializedError",
66
+ "WriterData",
67
+ "WriterPushMode",
68
+ "build",
69
+ "metrics",
70
+ "never_expires",
71
+ "version",
72
+ ]
@@ -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.1
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.31)
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.1
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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake
51
+ CMAKE_COMMAND = /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -E rm -f
54
+ RM = /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
71
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/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-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
100
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -P cmake_install.cmake
106
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
112
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
118
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
124
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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-k20dk34_/lib/python3.10/site-packages/cmake/data/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
130
+ /Users/teamcity/buildAgent/temp/buildTmp/build-env-pub1e7r1/lib/python3.10/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.31)
11
11
  #----------------------------------------------------------------
12
12
  # Generated CMake target import file.
13
13
  #----------------------------------------------------------------
quasardb/libqdb_api.dylib CHANGED
Binary file
@@ -29,6 +29,9 @@
29
29
 
30
30
  import logging
31
31
  import time
32
+ import warnings
33
+ from typing import Dict, List, Optional, Tuple, Union
34
+ from numpy.typing import DTypeLike
32
35
 
33
36
  import quasardb
34
37
  import quasardb.table_cache as table_cache
@@ -61,14 +64,14 @@ class IncompatibleDtypeError(TypeError):
61
64
  Exception raised when a provided dtype is not the expected dtype.
62
65
  """
63
66
 
64
- def __init__(self, cname=None, ctype=None, expected=None, provided=None):
67
+ def __init__(self, cname=None, ctype=None, expected=None, provided=None) -> None:
65
68
  self.cname = cname
66
69
  self.ctype = ctype
67
70
  self.expected = expected
68
71
  self.provided = provided
69
72
  super().__init__(self.msg())
70
73
 
71
- def msg(self):
74
+ def msg(self) -> str:
72
75
  return "Data for column '{}' with type '{}' was provided in dtype '{}' but need '{}'.".format(
73
76
  self.cname, self.ctype, self.provided, self.expected
74
77
  )
@@ -79,11 +82,11 @@ class IncompatibleDtypeErrors(TypeError):
79
82
  Wraps multiple dtype errors
80
83
  """
81
84
 
82
- def __init__(self, xs):
85
+ def __init__(self, xs) -> None:
83
86
  self.xs = xs
84
87
  super().__init__(self.msg())
85
88
 
86
- def msg(self):
89
+ def msg(self) -> str:
87
90
  return "\n".join(x.msg() for x in self.xs)
88
91
 
89
92
 
@@ -92,12 +95,12 @@ class InvalidDataCardinalityError(ValueError):
92
95
  Raised when the provided data arrays doesn't match the table's columns.
93
96
  """
94
97
 
95
- def __init__(self, data, cinfos):
98
+ def __init__(self, data, cinfos) -> None:
96
99
  self.data = data
97
100
  self.cinfos = cinfos
98
101
  super().__init__(self.msg())
99
102
 
100
- def msg(self):
103
+ def msg(self) -> str:
101
104
  return "Provided data array length '{}' exceeds amount of table columns '{}', unable to map data to columns".format(
102
105
  len(self.data), len(self.cinfos)
103
106
  )
@@ -116,7 +119,7 @@ _ctype_to_dtype = {
116
119
  }
117
120
 
118
121
 
119
- def _best_dtype_for_ctype(ctype: quasardb.quasardb.ColumnType):
122
+ def _best_dtype_for_ctype(ctype: quasardb.ColumnType):
120
123
  """
121
124
  Returns the 'best' DType for a certain column type. For example, for blobs, even
122
125
  though we accept py::bytes, prefer bytestrings (as they are faster to read in c++).
@@ -128,7 +131,10 @@ def _best_dtype_for_ctype(ctype: quasardb.quasardb.ColumnType):
128
131
  return possible_dtypes[0]
129
132
 
130
133
 
131
- def _coerce_dtype(dtype, columns):
134
+ def _coerce_dtype(
135
+ dtype: Union[DTypeLike, Dict[str, DTypeLike], List[DTypeLike]],
136
+ columns: List[Tuple[str, quasardb.ColumnInfo]],
137
+ ) -> List[DTypeLike]:
132
138
  if dtype is None:
133
139
  dtype = [None] * len(columns)
134
140
 
@@ -136,11 +142,10 @@ def _coerce_dtype(dtype, columns):
136
142
  dtype = [dtype]
137
143
 
138
144
  if type(dtype) is dict:
139
-
140
145
  # Conveniently look up column index by label
141
146
  offsets = {}
142
147
  for i in range(len(columns)):
143
- (cname, ctype) = columns[i]
148
+ (cname, _) = columns[i]
144
149
  offsets[cname] = i
145
150
 
146
151
  # Now convert the provided dtype dict to a list that matches
@@ -151,7 +156,7 @@ def _coerce_dtype(dtype, columns):
151
156
 
152
157
  for k, dt in dtype.items():
153
158
  if not k in offsets:
154
- logger.warn(
159
+ logger.warning(
155
160
  "Forced dtype provided for column '%s' = %s, but that column is not found in the table. Skipping...",
156
161
  k,
157
162
  )
@@ -178,7 +183,9 @@ def _coerce_dtype(dtype, columns):
178
183
  return dtype
179
184
 
180
185
 
181
- def _add_desired_dtypes(dtype, columns):
186
+ def _add_desired_dtypes(
187
+ dtype: List[DTypeLike], columns: List[Tuple[str, quasardb.ColumnInfo]]
188
+ ) -> List[DTypeLike]:
182
189
  """
183
190
  When infer_types=True, this function sets the 'desired' dtype for each of the columns.
184
191
  `dtype` is expected to be the output of `_coerce_dtype`, that is, a list-like with an
@@ -452,6 +459,10 @@ def _ensure_list(xs, cinfos):
452
459
  # of the array.
453
460
  n = _probe_length(xs)
454
461
 
462
+ if n is None:
463
+ logger.error("Unable to probe length: provided arrays: %s", xs)
464
+ raise ValueError("Unable to probe array length: all provided arrays None?")
465
+
455
466
  ret = list()
456
467
 
457
468
  for i in range(len(cinfos)):
@@ -482,6 +493,33 @@ def _coerce_retries(retries) -> quasardb.RetryOptions:
482
493
  )
483
494
 
484
495
 
496
+ def _kwarg_deprecation_warning(
497
+ old_kwarg, old_value, new_kwargs, new_values, stacklevel
498
+ ):
499
+ new_declaration = ", ".join(
500
+ f"{new_kwarg}={new_value}"
501
+ for new_kwarg, new_value in zip(new_kwargs, new_values)
502
+ )
503
+ warnings.warn(
504
+ f"The argument '{old_kwarg}' <{type(old_value).__name__}> is deprecated and will be removed in a future version. "
505
+ f"Please use '{new_declaration}' instead.",
506
+ DeprecationWarning,
507
+ stacklevel=stacklevel + 1,
508
+ )
509
+
510
+
511
+ def _type_check(var, var_name, target_type, raise_error=True, allow_none=True):
512
+ if allow_none and var is None:
513
+ return True
514
+ if not isinstance(var, target_type):
515
+ if raise_error:
516
+ raise quasardb.quasardb.InvalidArgumentError(
517
+ f"Invalid '{var_name}' type, expected: {target_type}, got: {type(var)}"
518
+ )
519
+ return False
520
+ return True
521
+
522
+
485
523
  def ensure_ma(xs, dtype=None):
486
524
  if isinstance(dtype, list):
487
525
  assert isinstance(xs, list) == True
@@ -630,14 +668,17 @@ def write_arrays(
630
668
  *,
631
669
  dtype=None,
632
670
  index=None,
671
+ # TODO: Set the default push_mode after removing _async, fast and truncate
672
+ push_mode=None,
633
673
  _async=False,
634
674
  fast=False,
635
675
  truncate=False,
676
+ truncate_range=None,
636
677
  deduplicate=False,
637
678
  deduplication_mode="drop",
638
679
  infer_types=True,
639
680
  writer=None,
640
- write_through=False,
681
+ write_through=True,
641
682
  retries=3,
642
683
  # We accept additional kwargs that will be passed through the writer.push() methods
643
684
  **kwargs,
@@ -705,13 +746,32 @@ def write_arrays(
705
746
  Defaults to True. For production use cases where you want to avoid implicit conversions,
706
747
  we recommend setting this to False.
707
748
 
749
+ push_mode: optional quasardb.WriterPushMode
750
+ The mode used for inserting data. Can be either a string or a `WriterPushMode` enumeration item.
751
+ Available options:
752
+ * `Truncate`: Truncate (also referred to as upsert) the data in-place. Will detect time range
753
+ to truncate from the time range inside the dataframe.
754
+ * `Async`: Uses asynchronous insertion API where commits are buffered server-side and
755
+ acknowledged before they are written to disk. If you insert to the same table from
756
+ multiple processes, setting this to True may improve performance.
757
+ * `Fast`: Whether to use 'fast push'. If you incrementally add small batches of data to table,
758
+ you may see better performance if you set this to True.
759
+ * `Transactional`: Ensures full transactional consistency.
760
+
761
+ Defaults to `Transactional`.
762
+
708
763
  truncate: optional bool
764
+ **DEPRECATED** – Use `push_mode=WriterPushMode.Truncate` instead.
709
765
  Truncate (also referred to as upsert) the data in-place. Will detect time range to truncate
710
766
  from the time range inside the dataframe.
711
767
 
712
768
  Defaults to False.
713
769
 
770
+ truncate_range: optional tuple
771
+ Time range to truncate from the time range inside the dataframe.
772
+
714
773
  _async: optional bool
774
+ **DEPRECATED** – Use `push_mode=WriterPushMode.Async` instead.
715
775
  If true, uses asynchronous insertion API where commits are buffered server-side and
716
776
  acknowledged before they are written to disk. If you insert to the same table from
717
777
  multiple processes, setting this to True may improve performance.
@@ -719,6 +779,7 @@ def write_arrays(
719
779
  Defaults to False.
720
780
 
721
781
  fast: optional bool
782
+ **DEPRECATED** – Use `push_mode=WriterPushMode.Fast` instead.
722
783
  Whether to use 'fast push'. If you incrementally add small batches of data to table,
723
784
  you may see better performance if you set this to True.
724
785
 
@@ -747,32 +808,57 @@ def write_arrays(
747
808
 
748
809
  if table:
749
810
  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,
811
+ data = [(table, data)]
812
+ table = None
813
+
814
+ _type_check(push_mode, "push_mode", target_type=quasardb.WriterPushMode)
815
+ deprecation_stacklevel = kwargs.pop("deprecation_stacklevel", 1) + 1
816
+
817
+ if isinstance(truncate, tuple):
818
+ # Especial case, truncate might be a tuple indicating the range.
819
+ _kwarg_deprecation_warning(
820
+ "truncate",
821
+ truncate,
822
+ ["push_mode", "truncate_range"],
823
+ [quasardb.WriterPushMode.Truncate, truncate],
824
+ deprecation_stacklevel,
766
825
  )
826
+ truncate_range = truncate_range or truncate
827
+ truncate = True
828
+
829
+ kwarg_to_mode = {
830
+ # "kwarg": (kwarg_type, kwarg_push_mode, is_deprecated)
831
+ "fast": (bool, quasardb.WriterPushMode.Fast, True),
832
+ "_async": (bool, quasardb.WriterPushMode.Async, True),
833
+ "truncate": (bool, quasardb.WriterPushMode.Truncate, True),
834
+ "truncate_range": (tuple, quasardb.WriterPushMode.Truncate, False),
835
+ }
767
836
 
768
- ret = []
837
+ for kwarg, info in kwarg_to_mode.items():
838
+ expected_type, mode, deprecated = info
839
+ kwarg_value = locals()[kwarg]
840
+ _type_check(kwarg_value, kwarg, target_type=expected_type)
841
+
842
+ if kwarg_value:
843
+ if push_mode and push_mode != mode:
844
+ raise quasardb.quasardb.InvalidArgumentError(
845
+ f"Found '{kwarg}' in kwargs, but push mode is already set to {push_mode}"
846
+ )
847
+ push_mode = mode
848
+ if deprecated:
849
+ _kwarg_deprecation_warning(
850
+ kwarg, kwarg_value, ["push_mode"], [mode], deprecation_stacklevel
851
+ )
852
+
853
+ if not push_mode:
854
+ push_mode = quasardb.WriterPushMode.Transactional
769
855
 
770
856
  # Create batch column info from dataframe
771
857
  if writer is None:
772
858
  writer = cluster.writer()
773
859
 
860
+ ret = []
774
861
  n_rows = 0
775
-
776
862
  push_data = quasardb.WriterData()
777
863
 
778
864
  for table, data_ in data:
@@ -787,6 +873,12 @@ def write_arrays(
787
873
  assert len(dtype) is len(cinfos)
788
874
 
789
875
  if index is None and isinstance(data_, dict) and "$timestamp" in data_:
876
+ # Create shallow copy of `data_` so that we don't modify the reference, i.e.
877
+ # delete keys.
878
+ #
879
+ # This ensures that the user can call the same function multiple times without
880
+ # side-effects.
881
+ data_ = data_.copy()
790
882
  index_ = data_.pop("$timestamp")
791
883
  assert "$timestamp" not in data_
792
884
  elif index is not None:
@@ -837,22 +929,13 @@ def write_arrays(
837
929
  push_kwargs["deduplication_mode"] = deduplication_mode
838
930
  push_kwargs["write_through"] = write_through
839
931
  push_kwargs["retries"] = retries
932
+ push_kwargs["push_mode"] = push_mode
933
+ if truncate_range:
934
+ push_kwargs["range"] = truncate_range
840
935
 
841
936
  logger.debug("pushing %d rows", n_rows)
842
937
  start = time.time()
843
938
 
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
939
  writer.push(push_data, **push_kwargs)
857
940
 
858
941
  logger.debug("pushed %d rows in %s seconds", n_rows, (time.time() - start))