valkey-glide 1.2.0rc14__cp311-cp311-macosx_11_0_arm64.whl → 2.2.3__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.
- glide/__init__.py +169 -104
- glide/async_commands/cluster_commands.py +367 -172
- glide/async_commands/core.py +1808 -1026
- glide/async_commands/{server_modules/ft.py → ft.py} +91 -21
- glide/async_commands/{server_modules/glide_json.py → glide_json.py} +161 -146
- glide/async_commands/standalone_commands.py +204 -136
- glide/glide.cpython-311-darwin.so +0 -0
- glide/glide.pyi +26 -1
- glide/glide_client.py +355 -136
- glide/logger.py +34 -22
- glide/opentelemetry.py +185 -0
- glide_shared/__init__.py +330 -0
- glide_shared/commands/__init__.py +0 -0
- glide/async_commands/transaction.py → glide_shared/commands/batch.py +1845 -1059
- glide_shared/commands/batch_options.py +261 -0
- {glide/async_commands → glide_shared/commands}/bitmap.py +96 -86
- {glide/async_commands → glide_shared/commands}/command_args.py +7 -6
- glide_shared/commands/core_options.py +407 -0
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_aggregate_options.py +18 -11
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_create_options.py +27 -13
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_profile_options.py +16 -11
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_search_options.py +17 -9
- glide_shared/commands/server_modules/json_batch.py +820 -0
- glide_shared/commands/server_modules/json_options.py +93 -0
- {glide/async_commands → glide_shared/commands}/sorted_set.py +42 -32
- {glide/async_commands → glide_shared/commands}/stream.py +95 -88
- glide_shared/config.py +975 -0
- {glide → glide_shared}/constants.py +11 -7
- {glide → glide_shared}/exceptions.py +27 -1
- glide_shared/protobuf/command_request_pb2.py +56 -0
- glide_shared/protobuf/connection_request_pb2.py +56 -0
- {glide → glide_shared}/protobuf/response_pb2.py +6 -6
- {glide → glide_shared}/protobuf_codec.py +7 -6
- glide_shared/routes.py +161 -0
- valkey_glide-2.2.3.dist-info/METADATA +211 -0
- valkey_glide-2.2.3.dist-info/RECORD +40 -0
- {valkey_glide-1.2.0rc14.dist-info → valkey_glide-2.2.3.dist-info}/WHEEL +1 -1
- glide/config.py +0 -521
- glide/protobuf/command_request_pb2.py +0 -54
- glide/protobuf/command_request_pb2.pyi +0 -1161
- glide/protobuf/connection_request_pb2.py +0 -52
- glide/protobuf/connection_request_pb2.pyi +0 -287
- glide/protobuf/response_pb2.pyi +0 -101
- glide/routes.py +0 -114
- valkey_glide-1.2.0rc14.dist-info/METADATA +0 -122
- valkey_glide-1.2.0rc14.dist-info/RECORD +0 -36
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_constants.py +0 -0
glide/logger.py
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import traceback
|
|
5
6
|
from enum import Enum
|
|
6
7
|
from typing import Optional
|
|
7
8
|
|
|
8
|
-
from .glide import Level as internalLevel
|
|
9
|
-
from .glide import py_init, py_log
|
|
9
|
+
from glide.glide import Level as internalLevel
|
|
10
|
+
from glide.glide import py_init, py_log
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class Level(Enum):
|
|
@@ -20,13 +21,12 @@ class Level(Enum):
|
|
|
20
21
|
|
|
21
22
|
class Logger:
|
|
22
23
|
"""
|
|
23
|
-
A singleton class that allows logging which is consistent with logs from the internal
|
|
24
|
+
A singleton class that allows logging which is consistent with logs from the internal GLIDE core.
|
|
24
25
|
The logger can be set up in 2 ways -
|
|
25
26
|
1. By calling Logger.init, which configures the logger only if it wasn't previously configured.
|
|
26
27
|
2. By calling Logger.set_logger_config, which replaces the existing configuration, and means that new logs will not be
|
|
27
|
-
|
|
28
|
-
If
|
|
29
|
-
by the Rust core.
|
|
28
|
+
saved with the logs that were sent before the call.
|
|
29
|
+
If none of these functions are called, the first log attempt will initialize a new logger with default configuration.
|
|
30
30
|
"""
|
|
31
31
|
|
|
32
32
|
_instance = None
|
|
@@ -38,48 +38,60 @@ class Logger:
|
|
|
38
38
|
|
|
39
39
|
@classmethod
|
|
40
40
|
def init(cls, level: Optional[Level] = None, file_name: Optional[str] = None):
|
|
41
|
-
"""
|
|
41
|
+
"""
|
|
42
42
|
Initialize a logger if it wasn't initialized before - this method is meant to be used when there is no intention to
|
|
43
|
-
replace an existing logger.
|
|
44
|
-
The logger will filter all logs with a level lower than the given level
|
|
45
|
-
If given a
|
|
43
|
+
replace an existing logger. Otherwise, use `set_logger_config` for overriding the existing logger configs.
|
|
44
|
+
The logger will filter all logs with a level lower than the given level.
|
|
45
|
+
If given a file_name argument, will write the logs to files postfixed with file_name. If file_name isn't provided,
|
|
46
46
|
the logs will be written to the console.
|
|
47
|
+
|
|
47
48
|
Args:
|
|
48
49
|
level (Optional[Level]): Set the logger level to one of [ERROR, WARN, INFO, DEBUG, TRACE, OFF].
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
If log level isn't provided, the logger will be configured with default configuration.
|
|
51
|
+
To turn off logging completely, set the level to Level.OFF.
|
|
52
|
+
file_name (Optional[str]): If provided the target of the logs will be the file mentioned.
|
|
53
|
+
Otherwise, logs will be printed to the console.
|
|
53
54
|
"""
|
|
54
55
|
if cls._instance is None:
|
|
55
56
|
cls._instance = cls(level, file_name)
|
|
56
57
|
|
|
57
58
|
@classmethod
|
|
58
|
-
def log(
|
|
59
|
-
|
|
59
|
+
def log(
|
|
60
|
+
cls,
|
|
61
|
+
log_level: Level,
|
|
62
|
+
log_identifier: str,
|
|
63
|
+
message: str,
|
|
64
|
+
err: Optional[Exception] = None,
|
|
65
|
+
):
|
|
66
|
+
"""
|
|
67
|
+
Logs the provided message if the provided log level is lower then the logger level.
|
|
60
68
|
|
|
61
69
|
Args:
|
|
62
|
-
log_level (Level): The log level of the provided message
|
|
70
|
+
log_level (Level): The log level of the provided message.
|
|
63
71
|
log_identifier (str): The log identifier should give the log a context.
|
|
64
72
|
message (str): The message to log.
|
|
73
|
+
err (Optional[Exception]): The exception or error to log.
|
|
65
74
|
"""
|
|
66
75
|
if not cls._instance:
|
|
67
76
|
cls._instance = cls(None)
|
|
68
77
|
if not log_level.value.is_lower(Logger.logger_level):
|
|
69
78
|
return
|
|
79
|
+
if err:
|
|
80
|
+
message = f"{message}: {traceback.format_exception(err)}"
|
|
70
81
|
py_log(log_level.value, log_identifier, message)
|
|
71
82
|
|
|
72
83
|
@classmethod
|
|
73
84
|
def set_logger_config(
|
|
74
85
|
cls, level: Optional[Level] = None, file_name: Optional[str] = None
|
|
75
86
|
):
|
|
76
|
-
"""
|
|
87
|
+
"""
|
|
88
|
+
Creates a new logger instance and configure it with the provided log level and file name.
|
|
77
89
|
|
|
78
90
|
Args:
|
|
79
91
|
level (Optional[Level]): Set the logger level to one of [ERROR, WARN, INFO, DEBUG, TRACE, OFF].
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
92
|
+
If log level isn't provided, the logger will be configured with default configuration.
|
|
93
|
+
To turn off logging completely, set the level to OFF.
|
|
94
|
+
file_name (Optional[str]): If provided the target of the logs will be the file mentioned.
|
|
95
|
+
Otherwise, logs will be printed to the console.
|
|
84
96
|
"""
|
|
85
97
|
Logger._instance = Logger(level, file_name)
|
glide/opentelemetry.py
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
⚠️ OpenTelemetry can only be initialized once per process. Calling `OpenTelemetry.init()` more than once will be ignored.
|
|
5
|
+
If you need to change configuration, restart the process with new settings.
|
|
6
|
+
|
|
7
|
+
### OpenTelemetry
|
|
8
|
+
|
|
9
|
+
- **openTelemetryConfig**: Use this object to configure OpenTelemetry exporters and options.
|
|
10
|
+
- **traces**: (optional) Configure trace exporting.
|
|
11
|
+
- **endpoint**: The collector endpoint for traces. Supported protocols:
|
|
12
|
+
- `http://` or `https://` for HTTP/HTTPS
|
|
13
|
+
- `grpc://` for gRPC
|
|
14
|
+
- `file://` for local file export (see below)
|
|
15
|
+
- **sample_percentage**: (optional) The percentage of requests to sample and create a span for, used to measure command duration. Must be between 0 and 100. Defaults to 1 if not specified.
|
|
16
|
+
Note: There is a tradeoff between sampling percentage and performance. Higher sampling percentages will provide more detailed telemetry data but will impact performance.
|
|
17
|
+
It is recommended to keep this number low (1-5%) in production environments unless you have specific needs for higher sampling rates.
|
|
18
|
+
- **metrics**: (optional) Configure metrics exporting.
|
|
19
|
+
- **endpoint**: The collector endpoint for metrics. Same protocol rules as above.
|
|
20
|
+
- **flush_interval_ms**: (optional) Interval in milliseconds for flushing data to the collector. Must be a positive integer. Defaults to 5000ms if not specified.
|
|
21
|
+
|
|
22
|
+
#### File Exporter Details
|
|
23
|
+
- For `file://` endpoints:
|
|
24
|
+
- The path must start with `file://` (e.g., `file:///tmp/otel` or `file:///tmp/otel/traces.json`).
|
|
25
|
+
- If the path is a directory or lacks a file extension, data is written to `signals.json` in that directory.
|
|
26
|
+
- If the path includes a filename with an extension, that file is used as-is.
|
|
27
|
+
- The parent directory must already exist; otherwise, initialization will fail with an InvalidInput error.
|
|
28
|
+
- If the target file exists, new data is appended (not overwritten).
|
|
29
|
+
|
|
30
|
+
#### Validation Rules
|
|
31
|
+
- `flush_interval_ms` must be a positive integer.
|
|
32
|
+
- `sample_percentage` must be between 0 and 100.
|
|
33
|
+
- File exporter paths must start with `file://` and have an existing parent directory.
|
|
34
|
+
- Invalid configuration will throw an error synchronously when calling `OpenTelemetry.init()`.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
import random
|
|
38
|
+
from typing import Optional
|
|
39
|
+
|
|
40
|
+
from glide.glide import (
|
|
41
|
+
OpenTelemetryConfig,
|
|
42
|
+
OpenTelemetryTracesConfig,
|
|
43
|
+
init_opentelemetry,
|
|
44
|
+
)
|
|
45
|
+
from glide_shared.exceptions import ConfigurationError
|
|
46
|
+
|
|
47
|
+
from .logger import Level, Logger
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class OpenTelemetry:
|
|
51
|
+
"""
|
|
52
|
+
Singleton class for managing OpenTelemetry configuration and operations.
|
|
53
|
+
|
|
54
|
+
This class provides a centralized way to initialize OpenTelemetry and control
|
|
55
|
+
sampling behavior at runtime.
|
|
56
|
+
|
|
57
|
+
Example usage:
|
|
58
|
+
```python
|
|
59
|
+
from glide import OpenTelemetry, OpenTelemetryConfig, OpenTelemetryTracesConfig, OpenTelemetryMetricsConfig
|
|
60
|
+
|
|
61
|
+
OpenTelemetry.init(OpenTelemetryConfig(
|
|
62
|
+
traces=OpenTelemetryTracesConfig(
|
|
63
|
+
endpoint="http://localhost:4318/v1/traces",
|
|
64
|
+
sample_percentage=10 # Optional, defaults to 1. Can also be changed at runtime via set_sample_percentage().
|
|
65
|
+
),
|
|
66
|
+
metrics=OpenTelemetryMetricsConfig(
|
|
67
|
+
endpoint="http://localhost:4318/v1/metrics"
|
|
68
|
+
),
|
|
69
|
+
flush_interval_ms=1000 # Optional, defaults to 5000
|
|
70
|
+
))
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Note:
|
|
74
|
+
OpenTelemetry can only be initialized once per process. Subsequent calls to
|
|
75
|
+
init() will be ignored. This is by design, as OpenTelemetry is a global
|
|
76
|
+
resource that should be configured once at application startup.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
_instance: Optional["OpenTelemetry"] = None
|
|
80
|
+
_config: Optional[OpenTelemetryConfig] = None
|
|
81
|
+
|
|
82
|
+
@classmethod
|
|
83
|
+
def init(cls, config: OpenTelemetryConfig) -> None:
|
|
84
|
+
"""
|
|
85
|
+
Initialize the OpenTelemetry instance.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
config: The OpenTelemetry configuration
|
|
89
|
+
|
|
90
|
+
Note:
|
|
91
|
+
OpenTelemetry can only be initialized once per process.
|
|
92
|
+
Subsequent calls will be ignored and a warning will be logged.
|
|
93
|
+
"""
|
|
94
|
+
if not cls._instance:
|
|
95
|
+
cls._config = config
|
|
96
|
+
# Initialize the underlying OpenTelemetry implementation
|
|
97
|
+
init_opentelemetry(config)
|
|
98
|
+
cls._instance = OpenTelemetry()
|
|
99
|
+
Logger.log(
|
|
100
|
+
Level.INFO,
|
|
101
|
+
"GlideOpenTelemetry",
|
|
102
|
+
"OpenTelemetry initialized successfully",
|
|
103
|
+
)
|
|
104
|
+
return
|
|
105
|
+
|
|
106
|
+
Logger.log(
|
|
107
|
+
Level.WARN,
|
|
108
|
+
"GlideOpenTelemetry",
|
|
109
|
+
"OpenTelemetry already initialized - ignoring new configuration",
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
@classmethod
|
|
113
|
+
def is_initialized(cls) -> bool:
|
|
114
|
+
"""
|
|
115
|
+
Check if the OpenTelemetry instance is initialized.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
bool: True if the OpenTelemetry instance is initialized, False otherwise
|
|
119
|
+
"""
|
|
120
|
+
return cls._instance is not None
|
|
121
|
+
|
|
122
|
+
@classmethod
|
|
123
|
+
def get_sample_percentage(cls) -> Optional[int]:
|
|
124
|
+
"""
|
|
125
|
+
Get the sample percentage for traces.
|
|
126
|
+
|
|
127
|
+
Returns:
|
|
128
|
+
Optional[int]: The sample percentage for traces only if OpenTelemetry is initialized
|
|
129
|
+
and the traces config is set, otherwise None.
|
|
130
|
+
"""
|
|
131
|
+
if cls._config:
|
|
132
|
+
traces_config = cls._config.get_traces()
|
|
133
|
+
if traces_config:
|
|
134
|
+
return traces_config.get_sample_percentage()
|
|
135
|
+
return None
|
|
136
|
+
|
|
137
|
+
@classmethod
|
|
138
|
+
def should_sample(cls) -> bool:
|
|
139
|
+
"""
|
|
140
|
+
Determines if the current request should be sampled for OpenTelemetry tracing.
|
|
141
|
+
Uses the configured sample percentage to randomly decide whether to create a span for this request.
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
bool: True if the request should be sampled, False otherwise
|
|
145
|
+
"""
|
|
146
|
+
percentage = cls.get_sample_percentage()
|
|
147
|
+
return (
|
|
148
|
+
cls.is_initialized()
|
|
149
|
+
and percentage is not None
|
|
150
|
+
and random.random() * 100 < percentage
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
@classmethod
|
|
154
|
+
def set_sample_percentage(cls, percentage: int) -> None:
|
|
155
|
+
"""
|
|
156
|
+
Set the percentage of requests to be sampled and traced. Must be a value between 0 and 100.
|
|
157
|
+
This setting only affects traces, not metrics.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
percentage: The sample percentage 0-100
|
|
161
|
+
|
|
162
|
+
Raises:
|
|
163
|
+
ConfigurationError: If OpenTelemetry is not initialized or traces config is not set
|
|
164
|
+
|
|
165
|
+
Remarks:
|
|
166
|
+
This method can be called at runtime to change the sampling percentage
|
|
167
|
+
without reinitializing OpenTelemetry.
|
|
168
|
+
"""
|
|
169
|
+
if not cls._config or not cls._config.get_traces():
|
|
170
|
+
raise ConfigurationError("OpenTelemetry config traces not initialized")
|
|
171
|
+
|
|
172
|
+
if percentage < 0 or percentage > 100:
|
|
173
|
+
raise ConfigurationError("Sample percentage must be between 0 and 100")
|
|
174
|
+
|
|
175
|
+
# Create a new traces config with the updated sample_percentage
|
|
176
|
+
# This is necessary because the PyO3 binding doesn't properly handle direct assignment to Option<u32>
|
|
177
|
+
traces_config = cls._config.get_traces()
|
|
178
|
+
if traces_config:
|
|
179
|
+
endpoint = traces_config.get_endpoint()
|
|
180
|
+
new_traces_config = OpenTelemetryTracesConfig(
|
|
181
|
+
endpoint=endpoint, sample_percentage=percentage
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
# Replace the traces config
|
|
185
|
+
cls._config.set_traces(new_traces_config)
|
glide_shared/__init__.py
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
# Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
|
|
2
|
+
|
|
3
|
+
from .commands.batch import Batch, ClusterBatch, ClusterTransaction, TBatch, Transaction
|
|
4
|
+
from .commands.batch_options import (
|
|
5
|
+
BatchOptions,
|
|
6
|
+
BatchRetryStrategy,
|
|
7
|
+
ClusterBatchOptions,
|
|
8
|
+
)
|
|
9
|
+
from .commands.bitmap import (
|
|
10
|
+
BitEncoding,
|
|
11
|
+
BitFieldGet,
|
|
12
|
+
BitFieldIncrBy,
|
|
13
|
+
BitFieldOffset,
|
|
14
|
+
BitFieldOverflow,
|
|
15
|
+
BitFieldSet,
|
|
16
|
+
BitFieldSubCommands,
|
|
17
|
+
BitmapIndexType,
|
|
18
|
+
BitOffset,
|
|
19
|
+
BitOffsetMultiplier,
|
|
20
|
+
BitOverflowControl,
|
|
21
|
+
BitwiseOperation,
|
|
22
|
+
OffsetOptions,
|
|
23
|
+
SignedEncoding,
|
|
24
|
+
UnsignedEncoding,
|
|
25
|
+
)
|
|
26
|
+
from .commands.command_args import Limit, ListDirection, ObjectType, OrderBy
|
|
27
|
+
from .commands.core_options import (
|
|
28
|
+
ConditionalChange,
|
|
29
|
+
ExpireOptions,
|
|
30
|
+
ExpiryGetEx,
|
|
31
|
+
ExpirySet,
|
|
32
|
+
ExpiryType,
|
|
33
|
+
ExpiryTypeGetEx,
|
|
34
|
+
FlushMode,
|
|
35
|
+
FunctionRestorePolicy,
|
|
36
|
+
HashFieldConditionalChange,
|
|
37
|
+
InfoSection,
|
|
38
|
+
InsertPosition,
|
|
39
|
+
OnlyIfEqual,
|
|
40
|
+
PubSubMsg,
|
|
41
|
+
UpdateOptions,
|
|
42
|
+
)
|
|
43
|
+
from .commands.server_modules import json_batch
|
|
44
|
+
from .commands.server_modules.ft_options.ft_aggregate_options import (
|
|
45
|
+
FtAggregateApply,
|
|
46
|
+
FtAggregateClause,
|
|
47
|
+
FtAggregateFilter,
|
|
48
|
+
FtAggregateGroupBy,
|
|
49
|
+
FtAggregateLimit,
|
|
50
|
+
FtAggregateOptions,
|
|
51
|
+
FtAggregateReducer,
|
|
52
|
+
FtAggregateSortBy,
|
|
53
|
+
FtAggregateSortProperty,
|
|
54
|
+
)
|
|
55
|
+
from .commands.server_modules.ft_options.ft_create_options import (
|
|
56
|
+
DataType,
|
|
57
|
+
DistanceMetricType,
|
|
58
|
+
Field,
|
|
59
|
+
FieldType,
|
|
60
|
+
FtCreateOptions,
|
|
61
|
+
NumericField,
|
|
62
|
+
TagField,
|
|
63
|
+
TextField,
|
|
64
|
+
VectorAlgorithm,
|
|
65
|
+
VectorField,
|
|
66
|
+
VectorFieldAttributes,
|
|
67
|
+
VectorFieldAttributesFlat,
|
|
68
|
+
VectorFieldAttributesHnsw,
|
|
69
|
+
VectorType,
|
|
70
|
+
)
|
|
71
|
+
from .commands.server_modules.ft_options.ft_profile_options import (
|
|
72
|
+
FtProfileOptions,
|
|
73
|
+
QueryType,
|
|
74
|
+
)
|
|
75
|
+
from .commands.server_modules.ft_options.ft_search_options import (
|
|
76
|
+
FtSearchLimit,
|
|
77
|
+
FtSearchOptions,
|
|
78
|
+
ReturnField,
|
|
79
|
+
)
|
|
80
|
+
from .commands.server_modules.json_options import (
|
|
81
|
+
JsonArrIndexOptions,
|
|
82
|
+
JsonArrPopOptions,
|
|
83
|
+
JsonGetOptions,
|
|
84
|
+
)
|
|
85
|
+
from .commands.sorted_set import (
|
|
86
|
+
AggregationType,
|
|
87
|
+
GeoSearchByBox,
|
|
88
|
+
GeoSearchByRadius,
|
|
89
|
+
GeoSearchCount,
|
|
90
|
+
GeospatialData,
|
|
91
|
+
GeoUnit,
|
|
92
|
+
InfBound,
|
|
93
|
+
LexBoundary,
|
|
94
|
+
RangeByIndex,
|
|
95
|
+
RangeByLex,
|
|
96
|
+
RangeByScore,
|
|
97
|
+
ScoreBoundary,
|
|
98
|
+
ScoreFilter,
|
|
99
|
+
)
|
|
100
|
+
from .commands.stream import (
|
|
101
|
+
ExclusiveIdBound,
|
|
102
|
+
IdBound,
|
|
103
|
+
MaxId,
|
|
104
|
+
MinId,
|
|
105
|
+
StreamAddOptions,
|
|
106
|
+
StreamClaimOptions,
|
|
107
|
+
StreamGroupOptions,
|
|
108
|
+
StreamPendingOptions,
|
|
109
|
+
StreamRangeBound,
|
|
110
|
+
StreamReadGroupOptions,
|
|
111
|
+
StreamReadOptions,
|
|
112
|
+
StreamTrimOptions,
|
|
113
|
+
TrimByMaxLen,
|
|
114
|
+
TrimByMinId,
|
|
115
|
+
)
|
|
116
|
+
from .config import (
|
|
117
|
+
AdvancedGlideClientConfiguration,
|
|
118
|
+
AdvancedGlideClusterClientConfiguration,
|
|
119
|
+
BackoffStrategy,
|
|
120
|
+
GlideClientConfiguration,
|
|
121
|
+
GlideClusterClientConfiguration,
|
|
122
|
+
IamAuthConfig,
|
|
123
|
+
NodeAddress,
|
|
124
|
+
PeriodicChecksManualInterval,
|
|
125
|
+
PeriodicChecksStatus,
|
|
126
|
+
ProtocolVersion,
|
|
127
|
+
ReadFrom,
|
|
128
|
+
ServerCredentials,
|
|
129
|
+
ServiceType,
|
|
130
|
+
TlsAdvancedConfiguration,
|
|
131
|
+
)
|
|
132
|
+
from .constants import (
|
|
133
|
+
OK,
|
|
134
|
+
TOK,
|
|
135
|
+
FtAggregateResponse,
|
|
136
|
+
FtInfoResponse,
|
|
137
|
+
FtProfileResponse,
|
|
138
|
+
FtSearchResponse,
|
|
139
|
+
TClusterResponse,
|
|
140
|
+
TEncodable,
|
|
141
|
+
TFunctionListResponse,
|
|
142
|
+
TFunctionStatsFullResponse,
|
|
143
|
+
TFunctionStatsSingleNodeResponse,
|
|
144
|
+
TJsonResponse,
|
|
145
|
+
TJsonUniversalResponse,
|
|
146
|
+
TResult,
|
|
147
|
+
TSingleNodeRoute,
|
|
148
|
+
TXInfoStreamFullResponse,
|
|
149
|
+
TXInfoStreamResponse,
|
|
150
|
+
)
|
|
151
|
+
from .exceptions import (
|
|
152
|
+
ClosingError,
|
|
153
|
+
ConfigurationError,
|
|
154
|
+
ConnectionError,
|
|
155
|
+
ExecAbortError,
|
|
156
|
+
GlideError,
|
|
157
|
+
LoggerError,
|
|
158
|
+
RequestError,
|
|
159
|
+
TimeoutError,
|
|
160
|
+
)
|
|
161
|
+
from .routes import (
|
|
162
|
+
AllNodes,
|
|
163
|
+
AllPrimaries,
|
|
164
|
+
ByAddressRoute,
|
|
165
|
+
RandomNode,
|
|
166
|
+
Route,
|
|
167
|
+
SlotIdRoute,
|
|
168
|
+
SlotKeyRoute,
|
|
169
|
+
SlotType,
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
__all__ = [
|
|
173
|
+
# Client
|
|
174
|
+
"Batch",
|
|
175
|
+
"ClusterBatch",
|
|
176
|
+
"ClusterTransaction",
|
|
177
|
+
"Transaction",
|
|
178
|
+
"TBatch",
|
|
179
|
+
# Batch Options
|
|
180
|
+
"BatchOptions",
|
|
181
|
+
"BatchRetryStrategy",
|
|
182
|
+
"ClusterBatchOptions",
|
|
183
|
+
# Config
|
|
184
|
+
"AdvancedGlideClientConfiguration",
|
|
185
|
+
"AdvancedGlideClusterClientConfiguration",
|
|
186
|
+
"GlideClientConfiguration",
|
|
187
|
+
"GlideClusterClientConfiguration",
|
|
188
|
+
"BackoffStrategy",
|
|
189
|
+
"ReadFrom",
|
|
190
|
+
"ServerCredentials",
|
|
191
|
+
"ServiceType",
|
|
192
|
+
"IamAuthConfig",
|
|
193
|
+
"NodeAddress",
|
|
194
|
+
"ProtocolVersion",
|
|
195
|
+
"PeriodicChecksManualInterval",
|
|
196
|
+
"PeriodicChecksStatus",
|
|
197
|
+
"TlsAdvancedConfiguration",
|
|
198
|
+
# Response
|
|
199
|
+
"OK",
|
|
200
|
+
"TClusterResponse",
|
|
201
|
+
"TEncodable",
|
|
202
|
+
"TFunctionListResponse",
|
|
203
|
+
"TFunctionStatsFullResponse",
|
|
204
|
+
"TFunctionStatsSingleNodeResponse",
|
|
205
|
+
"TJsonResponse",
|
|
206
|
+
"TJsonUniversalResponse",
|
|
207
|
+
"TOK",
|
|
208
|
+
"TResult",
|
|
209
|
+
"TXInfoStreamFullResponse",
|
|
210
|
+
"TXInfoStreamResponse",
|
|
211
|
+
"FtAggregateResponse",
|
|
212
|
+
"FtInfoResponse",
|
|
213
|
+
"FtProfileResponse",
|
|
214
|
+
"FtSearchResponse",
|
|
215
|
+
# Commands
|
|
216
|
+
"BitEncoding",
|
|
217
|
+
"BitFieldGet",
|
|
218
|
+
"BitFieldIncrBy",
|
|
219
|
+
"BitFieldOffset",
|
|
220
|
+
"BitFieldOverflow",
|
|
221
|
+
"BitFieldSet",
|
|
222
|
+
"BitFieldSubCommands",
|
|
223
|
+
"BitmapIndexType",
|
|
224
|
+
"BitOffset",
|
|
225
|
+
"BitOffsetMultiplier",
|
|
226
|
+
"BitOverflowControl",
|
|
227
|
+
"BitwiseOperation",
|
|
228
|
+
"OffsetOptions",
|
|
229
|
+
"SignedEncoding",
|
|
230
|
+
"UnsignedEncoding",
|
|
231
|
+
"ScoreBoundary",
|
|
232
|
+
"ConditionalChange",
|
|
233
|
+
"HashFieldConditionalChange",
|
|
234
|
+
"OnlyIfEqual",
|
|
235
|
+
"ExpireOptions",
|
|
236
|
+
"ExpiryGetEx",
|
|
237
|
+
"ExpirySet",
|
|
238
|
+
"ExpiryType",
|
|
239
|
+
"ExpiryTypeGetEx",
|
|
240
|
+
"FlushMode",
|
|
241
|
+
"FunctionRestorePolicy",
|
|
242
|
+
"GeoSearchByBox",
|
|
243
|
+
"GeoSearchByRadius",
|
|
244
|
+
"GeoSearchCount",
|
|
245
|
+
"GeoUnit",
|
|
246
|
+
"GeospatialData",
|
|
247
|
+
"AggregationType",
|
|
248
|
+
"InfBound",
|
|
249
|
+
"InfoSection",
|
|
250
|
+
"InsertPosition",
|
|
251
|
+
"LexBoundary",
|
|
252
|
+
"Limit",
|
|
253
|
+
"ListDirection",
|
|
254
|
+
"RangeByIndex",
|
|
255
|
+
"RangeByLex",
|
|
256
|
+
"RangeByScore",
|
|
257
|
+
"ScoreFilter",
|
|
258
|
+
"ObjectType",
|
|
259
|
+
"OrderBy",
|
|
260
|
+
"ExclusiveIdBound",
|
|
261
|
+
"IdBound",
|
|
262
|
+
"MaxId",
|
|
263
|
+
"MinId",
|
|
264
|
+
"StreamAddOptions",
|
|
265
|
+
"StreamClaimOptions",
|
|
266
|
+
"StreamGroupOptions",
|
|
267
|
+
"StreamPendingOptions",
|
|
268
|
+
"StreamReadGroupOptions",
|
|
269
|
+
"StreamRangeBound",
|
|
270
|
+
"StreamReadOptions",
|
|
271
|
+
"StreamTrimOptions",
|
|
272
|
+
"TrimByMaxLen",
|
|
273
|
+
"TrimByMinId",
|
|
274
|
+
"UpdateOptions",
|
|
275
|
+
# PubSub
|
|
276
|
+
"PubSubMsg",
|
|
277
|
+
# Json
|
|
278
|
+
"json_batch",
|
|
279
|
+
"JsonGetOptions",
|
|
280
|
+
"JsonArrIndexOptions",
|
|
281
|
+
"JsonArrPopOptions",
|
|
282
|
+
# Routes
|
|
283
|
+
"Route",
|
|
284
|
+
"SlotType",
|
|
285
|
+
"AllNodes",
|
|
286
|
+
"AllPrimaries",
|
|
287
|
+
"ByAddressRoute",
|
|
288
|
+
"RandomNode",
|
|
289
|
+
"SlotKeyRoute",
|
|
290
|
+
"SlotIdRoute",
|
|
291
|
+
"TSingleNodeRoute",
|
|
292
|
+
# Exceptions
|
|
293
|
+
"ClosingError",
|
|
294
|
+
"ConfigurationError",
|
|
295
|
+
"ConnectionError",
|
|
296
|
+
"ExecAbortError",
|
|
297
|
+
"GlideError",
|
|
298
|
+
"RequestError",
|
|
299
|
+
"TimeoutError",
|
|
300
|
+
"LoggerError",
|
|
301
|
+
# Ft
|
|
302
|
+
"DataType",
|
|
303
|
+
"DistanceMetricType",
|
|
304
|
+
"Field",
|
|
305
|
+
"FieldType",
|
|
306
|
+
"FtCreateOptions",
|
|
307
|
+
"NumericField",
|
|
308
|
+
"TagField",
|
|
309
|
+
"TextField",
|
|
310
|
+
"VectorAlgorithm",
|
|
311
|
+
"VectorField",
|
|
312
|
+
"VectorFieldAttributes",
|
|
313
|
+
"VectorFieldAttributesFlat",
|
|
314
|
+
"VectorFieldAttributesHnsw",
|
|
315
|
+
"VectorType",
|
|
316
|
+
"FtSearchLimit",
|
|
317
|
+
"ReturnField",
|
|
318
|
+
"FtSearchOptions",
|
|
319
|
+
"FtAggregateApply",
|
|
320
|
+
"FtAggregateFilter",
|
|
321
|
+
"FtAggregateClause",
|
|
322
|
+
"FtAggregateLimit",
|
|
323
|
+
"FtAggregateOptions",
|
|
324
|
+
"FtAggregateGroupBy",
|
|
325
|
+
"FtAggregateReducer",
|
|
326
|
+
"FtAggregateSortBy",
|
|
327
|
+
"FtAggregateSortProperty",
|
|
328
|
+
"FtProfileOptions",
|
|
329
|
+
"QueryType",
|
|
330
|
+
]
|
|
File without changes
|