quasardb 3.14.2.dev4__cp39-cp39-macosx_14_0_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of quasardb might be problematic. Click here for more details.
- quasardb/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
- quasardb/CMakeFiles/progress.marks +1 -0
- quasardb/Makefile +189 -0
- quasardb/__init__.py +123 -0
- quasardb/cmake_install.cmake +53 -0
- quasardb/date/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
- quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake +108 -0
- quasardb/date/CMakeFiles/progress.marks +1 -0
- quasardb/date/Makefile +189 -0
- quasardb/date/cmake_install.cmake +76 -0
- quasardb/date/dateConfigVersion.cmake +65 -0
- quasardb/date/dateTargets.cmake +63 -0
- quasardb/extensions/__init__.py +8 -0
- quasardb/extensions/writer.py +193 -0
- quasardb/firehose.py +101 -0
- quasardb/libqdb_api.dylib +0 -0
- quasardb/numpy/__init__.py +901 -0
- quasardb/pandas/__init__.py +447 -0
- quasardb/pool.py +294 -0
- quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
- quasardb/pybind11/CMakeFiles/progress.marks +1 -0
- quasardb/pybind11/Makefile +189 -0
- quasardb/pybind11/cmake_install.cmake +45 -0
- quasardb/quasardb.cpython-39-darwin.so +0 -0
- quasardb/range-v3/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
- quasardb/range-v3/CMakeFiles/Export/d94ef200eca10a819b5858b33e808f5b/range-v3-targets.cmake +128 -0
- quasardb/range-v3/CMakeFiles/progress.marks +1 -0
- quasardb/range-v3/CMakeFiles/range.v3.headers.dir/DependInfo.cmake +22 -0
- quasardb/range-v3/CMakeFiles/range.v3.headers.dir/build.make +86 -0
- quasardb/range-v3/CMakeFiles/range.v3.headers.dir/cmake_clean.cmake +5 -0
- quasardb/range-v3/CMakeFiles/range.v3.headers.dir/compiler_depend.make +2 -0
- quasardb/range-v3/CMakeFiles/range.v3.headers.dir/compiler_depend.ts +2 -0
- quasardb/range-v3/CMakeFiles/range.v3.headers.dir/progress.make +1 -0
- quasardb/range-v3/Makefile +204 -0
- quasardb/range-v3/cmake_install.cmake +88 -0
- quasardb/range-v3/include/range/v3/version.hpp +24 -0
- quasardb/range-v3/range-v3-config-version.cmake +83 -0
- quasardb/range-v3/range-v3-config.cmake +80 -0
- quasardb/stats.py +233 -0
- quasardb/table_cache.py +52 -0
- quasardb-3.14.2.dev4.dist-info/LICENSE.md +11 -0
- quasardb-3.14.2.dev4.dist-info/METADATA +40 -0
- quasardb-3.14.2.dev4.dist-info/RECORD +45 -0
- quasardb-3.14.2.dev4.dist-info/WHEEL +5 -0
- quasardb-3.14.2.dev4.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Generated by CMake
|
|
2
|
+
|
|
3
|
+
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
|
|
4
|
+
message(FATAL_ERROR "CMake >= 3.0.0 required")
|
|
5
|
+
endif()
|
|
6
|
+
if(CMAKE_VERSION VERSION_LESS "3.0.0")
|
|
7
|
+
message(FATAL_ERROR "CMake >= 3.0.0 required")
|
|
8
|
+
endif()
|
|
9
|
+
cmake_policy(PUSH)
|
|
10
|
+
cmake_policy(VERSION 3.0.0...3.29)
|
|
11
|
+
#----------------------------------------------------------------
|
|
12
|
+
# Generated CMake target import file.
|
|
13
|
+
#----------------------------------------------------------------
|
|
14
|
+
|
|
15
|
+
# Commands may need to know the format version.
|
|
16
|
+
set(CMAKE_IMPORT_FILE_VERSION 1)
|
|
17
|
+
|
|
18
|
+
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
|
|
19
|
+
set(_cmake_targets_defined "")
|
|
20
|
+
set(_cmake_targets_not_defined "")
|
|
21
|
+
set(_cmake_expected_targets "")
|
|
22
|
+
foreach(_cmake_expected_target IN ITEMS range-v3-concepts range-v3-meta range-v3)
|
|
23
|
+
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
|
|
24
|
+
if(TARGET "${_cmake_expected_target}")
|
|
25
|
+
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
|
|
26
|
+
else()
|
|
27
|
+
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
|
|
28
|
+
endif()
|
|
29
|
+
endforeach()
|
|
30
|
+
unset(_cmake_expected_target)
|
|
31
|
+
if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
|
|
32
|
+
unset(_cmake_targets_defined)
|
|
33
|
+
unset(_cmake_targets_not_defined)
|
|
34
|
+
unset(_cmake_expected_targets)
|
|
35
|
+
unset(CMAKE_IMPORT_FILE_VERSION)
|
|
36
|
+
cmake_policy(POP)
|
|
37
|
+
return()
|
|
38
|
+
endif()
|
|
39
|
+
if(NOT _cmake_targets_defined STREQUAL "")
|
|
40
|
+
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
|
|
41
|
+
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
|
|
42
|
+
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
|
|
43
|
+
endif()
|
|
44
|
+
unset(_cmake_targets_defined)
|
|
45
|
+
unset(_cmake_targets_not_defined)
|
|
46
|
+
unset(_cmake_expected_targets)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Create imported target range-v3-concepts
|
|
50
|
+
add_library(range-v3-concepts INTERFACE IMPORTED)
|
|
51
|
+
|
|
52
|
+
set_target_properties(range-v3-concepts PROPERTIES
|
|
53
|
+
INTERFACE_COMPILE_OPTIONS "\$<\$<COMPILE_LANG_AND_ID:CXX,MSVC>:/permissive->;\$<\$<COMPILE_LANG_AND_ID:CUDA,MSVC>:-Xcompiler=/permissive->"
|
|
54
|
+
INTERFACE_INCLUDE_DIRECTORIES "/Users/teamcity/buildAgent/work/938b0bdf6727d1ad/thirdparty/range-v3/include/"
|
|
55
|
+
INTERFACE_LINK_LIBRARIES "range-v3-meta"
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
# Create imported target range-v3-meta
|
|
59
|
+
add_library(range-v3-meta INTERFACE IMPORTED)
|
|
60
|
+
|
|
61
|
+
set_target_properties(range-v3-meta PROPERTIES
|
|
62
|
+
INTERFACE_COMPILE_OPTIONS "\$<\$<COMPILE_LANG_AND_ID:CXX,MSVC>:/permissive->;\$<\$<COMPILE_LANG_AND_ID:CUDA,MSVC>:-Xcompiler=/permissive->"
|
|
63
|
+
INTERFACE_INCLUDE_DIRECTORIES "/Users/teamcity/buildAgent/work/938b0bdf6727d1ad/thirdparty/range-v3/include/"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Create imported target range-v3
|
|
67
|
+
add_library(range-v3 INTERFACE IMPORTED)
|
|
68
|
+
|
|
69
|
+
set_target_properties(range-v3 PROPERTIES
|
|
70
|
+
INTERFACE_COMPILE_OPTIONS "\$<\$<COMPILE_LANG_AND_ID:CXX,MSVC>:/permissive->;\$<\$<COMPILE_LANG_AND_ID:CUDA,MSVC>:-Xcompiler=/permissive->"
|
|
71
|
+
INTERFACE_INCLUDE_DIRECTORIES "/Users/teamcity/buildAgent/work/938b0bdf6727d1ad/thirdparty/range-v3/include/"
|
|
72
|
+
INTERFACE_LINK_LIBRARIES "range-v3-concepts;range-v3-meta"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# This file does not depend on other imported targets which have
|
|
76
|
+
# been exported from the same project but in a separate export set.
|
|
77
|
+
|
|
78
|
+
# Commands beyond this point should not need to know the version.
|
|
79
|
+
set(CMAKE_IMPORT_FILE_VERSION)
|
|
80
|
+
cmake_policy(POP)
|
quasardb/stats.py
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import re
|
|
2
|
+
import quasardb
|
|
3
|
+
import logging
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
|
|
6
|
+
logger = logging.getLogger('quasardb.stats')
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
stats_prefix = '$qdb.statistics.'
|
|
10
|
+
user_pattern = re.compile(r'\$qdb.statistics.(.*).uid_([0-9]+)$')
|
|
11
|
+
total_pattern = re.compile(r'\$qdb.statistics.(.*)$')
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def is_user_stat(s):
|
|
15
|
+
return user_pattern.match(s) is not None
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def is_cumulative_stat(s):
|
|
19
|
+
# NOTE(leon): It's quite difficult to express in Python that you don't want any
|
|
20
|
+
# regex to _end_ with uid_[0-9]+, because Python's regex engine doesn't support
|
|
21
|
+
# variable width look-behind.
|
|
22
|
+
#
|
|
23
|
+
# An alternative would be to use the PyPi regex library (for POSIX regexes), but
|
|
24
|
+
# want to stay light on dependencies#
|
|
25
|
+
#
|
|
26
|
+
# As such, we define a 'cumulative' stat as anything that's not a user stat.
|
|
27
|
+
# Simple but effective.
|
|
28
|
+
return user_pattern.match(s) is None
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def by_node(conn):
|
|
32
|
+
"""
|
|
33
|
+
Returns statistic grouped by node URI.
|
|
34
|
+
|
|
35
|
+
Parameters:
|
|
36
|
+
conn: quasardb.Cluster
|
|
37
|
+
Active connection to the QuasarDB cluster
|
|
38
|
+
"""
|
|
39
|
+
return {x: of_node(conn.node(x)) for x in conn.endpoints()}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def of_node(dconn):
|
|
43
|
+
"""
|
|
44
|
+
Returns statistic for a single node.
|
|
45
|
+
|
|
46
|
+
Parameters:
|
|
47
|
+
dconn: quasardb.Node
|
|
48
|
+
Direct node connection to the node we wish to connect to
|
|
49
|
+
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
start = datetime.now()
|
|
53
|
+
raw = {
|
|
54
|
+
k: _get_stat(dconn,k) for k in dconn.prefix_get(stats_prefix, 1000)}
|
|
55
|
+
|
|
56
|
+
ret = {'by_uid': _by_uid(raw),
|
|
57
|
+
'cumulative': _cumulative(raw)}
|
|
58
|
+
|
|
59
|
+
check_duration = datetime.now() - start
|
|
60
|
+
|
|
61
|
+
ret['cumulative']['check.online'] = 1
|
|
62
|
+
ret['cumulative']['check.duration_ms'] = int(check_duration.total_seconds() * 1000)
|
|
63
|
+
|
|
64
|
+
return ret
|
|
65
|
+
|
|
66
|
+
_stat_types = {'node_id': ('constant', None),
|
|
67
|
+
'operating_system': ('constant', None),
|
|
68
|
+
'partitions_count': ('constant', 'count'),
|
|
69
|
+
|
|
70
|
+
'cpu.system': ('counter', 'ns'),
|
|
71
|
+
'cpu.user': ('counter', 'ns'),
|
|
72
|
+
'cpu.idle': ('counter', 'ns'),
|
|
73
|
+
'startup': ('constant', None),
|
|
74
|
+
'startup_time': ('constant', None),
|
|
75
|
+
'shutdown_time': ('constant', None),
|
|
76
|
+
|
|
77
|
+
'network.current_users_count': ('gauge', 'count'),
|
|
78
|
+
'hardware_concurrency': ('gauge', 'count'),
|
|
79
|
+
|
|
80
|
+
'check.online': ('gauge', 'count'),
|
|
81
|
+
'check.duration_ms': ('constant', 'ms'),
|
|
82
|
+
|
|
83
|
+
'requests.bytes_in': ('counter', 'bytes'),
|
|
84
|
+
'requests.bytes_out': ('counter', 'bytes'),
|
|
85
|
+
'requests.errors_count': ('counter', 'count'),
|
|
86
|
+
'requests.successes_count': ('counter', 'count'),
|
|
87
|
+
'requests.total_count': ('counter', 'count'),
|
|
88
|
+
|
|
89
|
+
'async_pipelines.merge.bucket_count': ('counter', 'count'),
|
|
90
|
+
'async_pipelines.merge.duration_us': ('counter', 'us'),
|
|
91
|
+
'async_pipelines.write.successes_count': ('counter', 'count'),
|
|
92
|
+
'async_pipelines.write.failures_count': ('counter', 'count'),
|
|
93
|
+
'async_pipelines.write.time_us': ('counter', 'us'),
|
|
94
|
+
|
|
95
|
+
'async_pipelines.merge.max_bucket_count': ('gauge', 'count'),
|
|
96
|
+
'async_pipelines.merge.max_depth_count': ('gauge', 'count'),
|
|
97
|
+
'async_pipelines.merge.requests_count': ('counter', 'count'),
|
|
98
|
+
|
|
99
|
+
'evicted.count': ('counter', 'count'),
|
|
100
|
+
'pageins.count': ('counter', 'count'),
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async_pipeline_bytes_pattern = re.compile(r'async_pipelines.pipe_[0-9]+.merge_map.bytes')
|
|
105
|
+
async_pipeline_count_pattern = re.compile(r'async_pipelines.pipe_[0-9]+.merge_map.count')
|
|
106
|
+
|
|
107
|
+
def _stat_type(stat_id):
|
|
108
|
+
if stat_id in _stat_types:
|
|
109
|
+
return _stat_types[stat_id]
|
|
110
|
+
elif stat_id.endswith('total_ns'):
|
|
111
|
+
return ('counter', 'ns')
|
|
112
|
+
elif stat_id.endswith('total_bytes'):
|
|
113
|
+
return ('counter', 'bytes')
|
|
114
|
+
elif stat_id.endswith('read_bytes'):
|
|
115
|
+
return ('counter', 'bytes')
|
|
116
|
+
elif stat_id.endswith('written_bytes'):
|
|
117
|
+
return ('counter', 'bytes')
|
|
118
|
+
elif stat_id.endswith('total_count'):
|
|
119
|
+
return ('counter', 'count')
|
|
120
|
+
elif stat_id.startswith('network.sessions.'):
|
|
121
|
+
return ('gauge', 'count')
|
|
122
|
+
elif stat_id.startswith('memory.'):
|
|
123
|
+
# memory statistics are all gauges i think, describes how much memory currently allocated where
|
|
124
|
+
return ('gauge', 'bytes')
|
|
125
|
+
elif stat_id.startswith('persistence.') or stat_id.startswith('disk'):
|
|
126
|
+
# persistence are also all gauges, describes mostly how much is currently available/used on storage
|
|
127
|
+
return ('gauge', 'bytes')
|
|
128
|
+
elif stat_id.startswith('license.'):
|
|
129
|
+
return ('gauge', None)
|
|
130
|
+
elif stat_id.startswith('engine_'):
|
|
131
|
+
return ('constant', None)
|
|
132
|
+
elif async_pipeline_bytes_pattern.match(stat_id):
|
|
133
|
+
return ('gauge', 'bytes')
|
|
134
|
+
elif async_pipeline_count_pattern.match(stat_id):
|
|
135
|
+
return ('gauge', 'count')
|
|
136
|
+
else:
|
|
137
|
+
return None
|
|
138
|
+
|
|
139
|
+
def stat_type(stat_id):
|
|
140
|
+
"""
|
|
141
|
+
Returns the statistic type by a stat id. Returns one of:
|
|
142
|
+
|
|
143
|
+
- 'gauge'
|
|
144
|
+
- 'counter'
|
|
145
|
+
- None in case of unrecognized statistics
|
|
146
|
+
|
|
147
|
+
This is useful for determining which value should be reported in a dashboard.
|
|
148
|
+
"""
|
|
149
|
+
return _stat_type(stat_id)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def _calculate_delta_stat(stat_id, prev, cur):
|
|
153
|
+
logger.info("calculating delta for stat_id = {}, prev = {}. cur = {}".format(stat_id, prev, cur))
|
|
154
|
+
|
|
155
|
+
stat_type = _stat_type(stat_id)
|
|
156
|
+
if stat_type == 'counter':
|
|
157
|
+
return cur - prev
|
|
158
|
+
elif stat_type == 'gauge':
|
|
159
|
+
return cur
|
|
160
|
+
else:
|
|
161
|
+
return None
|
|
162
|
+
|
|
163
|
+
def _calculate_delta_stats(prev_stats, cur_stats):
|
|
164
|
+
ret = {}
|
|
165
|
+
for stat_id in cur_stats.keys():
|
|
166
|
+
try:
|
|
167
|
+
prev_stat = cur_stats[stat_id]
|
|
168
|
+
cur_stat = cur_stats[stat_id]
|
|
169
|
+
|
|
170
|
+
value = _calculate_delta_stat(stat_id, prev_stat, cur_stat)
|
|
171
|
+
if value is not None:
|
|
172
|
+
ret[stat_id] = value
|
|
173
|
+
|
|
174
|
+
except KeyError:
|
|
175
|
+
# Stat likely was not present yet in prev_stats
|
|
176
|
+
pass
|
|
177
|
+
|
|
178
|
+
return ret
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def calculate_delta(prev, cur):
|
|
182
|
+
"""
|
|
183
|
+
Calculates the 'delta' between two successive statistic measurements.
|
|
184
|
+
"""
|
|
185
|
+
ret = {}
|
|
186
|
+
for node_id in cur.keys():
|
|
187
|
+
ret[node_id] = _calculate_delta_stats(prev[node_id]['cumulative'],
|
|
188
|
+
cur[node_id]['cumulative'])
|
|
189
|
+
|
|
190
|
+
return ret
|
|
191
|
+
|
|
192
|
+
def _clean_blob(x):
|
|
193
|
+
x_ = x.decode('utf-8', 'replace')
|
|
194
|
+
|
|
195
|
+
# remove trailing zero-terminator
|
|
196
|
+
return ''.join(c for c in x_ if ord(c) != 0)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def _get_stat(dconn, k):
|
|
200
|
+
# Ugly, but works: try to retrieve as integer, if not an int, retrieve as
|
|
201
|
+
# blob
|
|
202
|
+
try:
|
|
203
|
+
return dconn.integer(k).get()
|
|
204
|
+
except quasardb.quasardb.AliasNotFoundError:
|
|
205
|
+
return _clean_blob(dconn.blob(k).get())
|
|
206
|
+
|
|
207
|
+
def _by_uid(stats):
|
|
208
|
+
xs = {}
|
|
209
|
+
for k, v in stats.items():
|
|
210
|
+
matches = user_pattern.match(k)
|
|
211
|
+
if is_user_stat(k) and matches:
|
|
212
|
+
(metric, uid_str) = matches.groups()
|
|
213
|
+
uid = int(uid_str)
|
|
214
|
+
if uid not in xs:
|
|
215
|
+
xs[uid] = {}
|
|
216
|
+
|
|
217
|
+
if not metric.startswith('serialized'):
|
|
218
|
+
xs[uid][metric] = v
|
|
219
|
+
|
|
220
|
+
return xs
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def _cumulative(stats):
|
|
224
|
+
xs = {}
|
|
225
|
+
|
|
226
|
+
for k, v in stats.items():
|
|
227
|
+
matches = total_pattern.match(k)
|
|
228
|
+
if is_cumulative_stat(k) and matches:
|
|
229
|
+
metric = matches.groups()[0]
|
|
230
|
+
if not metric.startswith('serialized'):
|
|
231
|
+
xs[metric] = v
|
|
232
|
+
|
|
233
|
+
return xs
|
quasardb/table_cache.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
logger = logging.getLogger('quasardb.table_cache')
|
|
4
|
+
|
|
5
|
+
_cache = {}
|
|
6
|
+
|
|
7
|
+
def clear():
|
|
8
|
+
logger.info("Clearing table cache")
|
|
9
|
+
_cache = {}
|
|
10
|
+
|
|
11
|
+
def exists(table_name: str) -> bool:
|
|
12
|
+
"""
|
|
13
|
+
Returns true if table already exists in table cache.
|
|
14
|
+
"""
|
|
15
|
+
return table_name in _cache
|
|
16
|
+
|
|
17
|
+
def store(table, table_name=None, force_retrieve_metadata=True):
|
|
18
|
+
"""
|
|
19
|
+
Stores a table into the cache. Ensures metadata is retrieved. This is useful if you want
|
|
20
|
+
to retrieve all table metadata at the beginning of a process, to avoid doing expensive
|
|
21
|
+
lookups in undesired code paths.
|
|
22
|
+
|
|
23
|
+
Returns a reference to the table being stored.
|
|
24
|
+
"""
|
|
25
|
+
if table_name is None:
|
|
26
|
+
table_name = table.get_name()
|
|
27
|
+
|
|
28
|
+
if exists(table_name):
|
|
29
|
+
logger.warn("Table already in cache, overwriting: %s", table_name)
|
|
30
|
+
|
|
31
|
+
logger.debug("Caching table %s", table_name)
|
|
32
|
+
_cache[table_name] = table
|
|
33
|
+
|
|
34
|
+
table.retrieve_metadata()
|
|
35
|
+
|
|
36
|
+
return table
|
|
37
|
+
|
|
38
|
+
def lookup(table_name: str, conn, force_retrieve_metadata=True):
|
|
39
|
+
"""
|
|
40
|
+
Retrieves table from _cache if already exists. If it does not exist,
|
|
41
|
+
looks up the table from `conn` and puts it in the cache.
|
|
42
|
+
|
|
43
|
+
If `force_retrieve_metadata` equals True, we will ensure that the table's
|
|
44
|
+
metadata is
|
|
45
|
+
"""
|
|
46
|
+
if exists(table_name):
|
|
47
|
+
return _cache[table_name]
|
|
48
|
+
|
|
49
|
+
logger.debug("table %s not yet found, looking up", table_name)
|
|
50
|
+
table = conn.table(table_name)
|
|
51
|
+
|
|
52
|
+
return store(table, table_name, force_retrieve_metadata=force_retrieve_metadata)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Copyright (c) 2009-2024, quasardb SAS. All rights reserved.
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
4
|
+
|
|
5
|
+
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
6
|
+
|
|
7
|
+
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
8
|
+
|
|
9
|
+
Neither the name of quasardb nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
10
|
+
|
|
11
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: quasardb
|
|
3
|
+
Version: 3.14.2.dev4
|
|
4
|
+
Summary: Python API for quasardb
|
|
5
|
+
Home-page: https://www.quasardb.net/
|
|
6
|
+
Author: quasardb SAS
|
|
7
|
+
Author-email: contact@quasardb.net
|
|
8
|
+
License: BSD
|
|
9
|
+
Keywords: quasardb timeseries database API driver
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
12
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
13
|
+
Classifier: Intended Audience :: Information Technology
|
|
14
|
+
Classifier: Intended Audience :: Other Audience
|
|
15
|
+
Classifier: Intended Audience :: System Administrators
|
|
16
|
+
Classifier: Intended Audience :: Telecommunications Industry
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Topic :: Database
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
26
|
+
License-File: LICENSE.md
|
|
27
|
+
Requires-Dist: numpy
|
|
28
|
+
Provides-Extra: pandas
|
|
29
|
+
Requires-Dist: pandas; extra == "pandas"
|
|
30
|
+
Provides-Extra: test
|
|
31
|
+
Requires-Dist: pytest; extra == "test"
|
|
32
|
+
Dynamic: author
|
|
33
|
+
Dynamic: author-email
|
|
34
|
+
Dynamic: classifier
|
|
35
|
+
Dynamic: home-page
|
|
36
|
+
Dynamic: keywords
|
|
37
|
+
Dynamic: license
|
|
38
|
+
Dynamic: provides-extra
|
|
39
|
+
Dynamic: requires-dist
|
|
40
|
+
Dynamic: summary
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
quasardb/Makefile,sha256=-3fG-G2VF655jC8byYFL6GM3yiU7hfWD_2ZXvCusNXg,8307
|
|
2
|
+
quasardb/__init__.py,sha256=bUq3IUkC13rfB4SIGIScDevSJ1jwB3oJbuBZVPfKt1Q,4547
|
|
3
|
+
quasardb/cmake_install.cmake,sha256=C-iRm8OpGp9_qjmnfJEobUnvUtsAr8Eq1DKa_RXM5oI,1999
|
|
4
|
+
quasardb/firehose.py,sha256=HO0GjCDg3x4cpzVSH3KZ1AJhV8lK2HJyXr9tpfnNSGI,3492
|
|
5
|
+
quasardb/libqdb_api.dylib,sha256=GdvDsW0pzmxyP5l3CBTjCVAA91cOsZv6mlnNztvvXQY,39032232
|
|
6
|
+
quasardb/pool.py,sha256=4IFwot-U8GEHo8h86264uVTWge44bOH_TUkoVy3Hjac,8449
|
|
7
|
+
quasardb/quasardb.cpython-39-darwin.so,sha256=H9pmOkSI07JnSmY1csOmed5QonysYEKQZKL1ZtL7Tf4,906280
|
|
8
|
+
quasardb/stats.py,sha256=DKvurzur-4c5nVPjr29_Stu9mvwCynM5gGnw0gVQlt8,7387
|
|
9
|
+
quasardb/table_cache.py,sha256=RgLOYEcgmlc5fVeOBOyjZImtYKoM1UEdzyzPc8EriQI,1507
|
|
10
|
+
quasardb/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=kWNZRwBRyVrt4OMQrir-zztmkdJxQTDFBXt7H7UnC5E,732
|
|
11
|
+
quasardb/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
|
|
12
|
+
quasardb/date/Makefile,sha256=lEbVJgBE56g9FrZV97-bBRjGWoq-pYgC5lczETq8oOc,8332
|
|
13
|
+
quasardb/date/cmake_install.cmake,sha256=_mGpLgz7tP4mkE1V7rLGptwAPVY_afb5-wrKbUCVWSI,3580
|
|
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=kWNZRwBRyVrt4OMQrir-zztmkdJxQTDFBXt7H7UnC5E,732
|
|
17
|
+
quasardb/date/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
|
|
18
|
+
quasardb/date/CMakeFiles/Export/a52b05f964b070ee926bcad51d3288af/dateTargets.cmake,sha256=rWNkRmrNRa8_x5hIZdFw8rJ_aLoigP5fUoRmXaKSyys,4211
|
|
19
|
+
quasardb/extensions/__init__.py,sha256=FUHR0i62qt5NkOXn7eiMZrzWXo9mQNr1xVz3VSCa9QU,112
|
|
20
|
+
quasardb/extensions/writer.py,sha256=ZH6ldQrbH-DimuQTyk3mXS1OyaJIhvCmZTzFtG4hRfY,5735
|
|
21
|
+
quasardb/numpy/__init__.py,sha256=F1gVvEH1ijnm-mG9nd1Co3bNwgO2Y_2RmsmWu3yCsYk,30050
|
|
22
|
+
quasardb/pandas/__init__.py,sha256=DkEPAgxIZNinOfFaQ2xMrLiAYdJn7I618HUUQUnvPYo,14884
|
|
23
|
+
quasardb/pybind11/Makefile,sha256=CS8g1OEOAuf8PQ3hQhsQCp3NXRXyU2UKBDgbbv2TyS8,8352
|
|
24
|
+
quasardb/pybind11/cmake_install.cmake,sha256=J2LgQRlYQl0usuGkj28oBJkgUSWhhIlo_rGL-TGcZj0,1504
|
|
25
|
+
quasardb/pybind11/CMakeFiles/CMakeDirectoryInformation.cmake,sha256=kWNZRwBRyVrt4OMQrir-zztmkdJxQTDFBXt7H7UnC5E,732
|
|
26
|
+
quasardb/pybind11/CMakeFiles/progress.marks,sha256=micfKpFrC27mzsskJvCzIG7wdFeL5V2byU9vP-Orhqo,2
|
|
27
|
+
quasardb/range-v3/Makefile,sha256=HBj-lcR2rej2Cgo6mUs0ow-pym3VGBSaDSax5ffYWvc,9721
|
|
28
|
+
quasardb/range-v3/cmake_install.cmake,sha256=X8HiiL17W7kOWxcXQUTo_bQ9gVvSR6apuzEyscWUi-w,4550
|
|
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=kWNZRwBRyVrt4OMQrir-zztmkdJxQTDFBXt7H7UnC5E,732
|
|
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
|
|
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=eCCqLv_Q2zGbGEjBelcFktisJ0vVzewwZ7H7MtHQgrY,4457
|
|
36
|
+
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/cmake_clean.cmake,sha256=3b0pZoiofoRzAiY1l7OLw203ZXp-mm1FUlQHob6i7aU,160
|
|
37
|
+
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/compiler_depend.make,sha256=Oge9eptzOB-hllw_Tye4o5wiXsIsdq1xm1GGCe0oGFM,126
|
|
38
|
+
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/compiler_depend.ts,sha256=orKrKpvHulgFBjBgzdeRvCpv0fV7cTffTdaHNqijFJg,120
|
|
39
|
+
quasardb/range-v3/CMakeFiles/range.v3.headers.dir/progress.make,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
40
|
+
quasardb/range-v3/include/range/v3/version.hpp,sha256=d-ToEdR3GnC_p_0RAeS77xL-SVx6EKHgTlWJ9PUQlSQ,586
|
|
41
|
+
quasardb-3.14.2.dev4.dist-info/LICENSE.md,sha256=_drOadIrIX8mzUZcnTJBTpUQih5gwdRAGK8ZKanYD6k,1467
|
|
42
|
+
quasardb-3.14.2.dev4.dist-info/METADATA,sha256=MOul9ySjqlzlJStiyMrcGCemCXzKkhvA_k74bztHBQ8,1443
|
|
43
|
+
quasardb-3.14.2.dev4.dist-info/WHEEL,sha256=7Gq-umGP-tZeTvlwBR_ZhuHDUjRNP3RSFa_Dipb_Be4,108
|
|
44
|
+
quasardb-3.14.2.dev4.dist-info/top_level.txt,sha256=wlprix4hCywuF1PkgKWYdZeJKq_kgJOqkAvukm_sZQ8,9
|
|
45
|
+
quasardb-3.14.2.dev4.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
quasardb
|