add
This commit is contained in:
@@ -0,0 +1 @@
|
||||
pip
|
||||
@@ -0,0 +1,348 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: redis
|
||||
Version: 8.1.0
|
||||
Summary: Python client for Redis database and key-value store
|
||||
Project-URL: Changes, https://github.com/redis/redis-py/releases
|
||||
Project-URL: Code, https://github.com/redis/redis-py
|
||||
Project-URL: Documentation, https://redis.readthedocs.io/en/latest/
|
||||
Project-URL: Homepage, https://github.com/redis/redis-py
|
||||
Project-URL: Issue tracker, https://github.com/redis/redis-py/issues
|
||||
Author-email: "Redis Inc." <oss@redis.com>
|
||||
License-Expression: MIT
|
||||
License-File: LICENSE
|
||||
Keywords: Redis,database,key-value-store
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Console
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Python :: 3.14
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Requires-Python: >=3.10
|
||||
Requires-Dist: async-timeout>=4.0.3; python_full_version < '3.11.3'
|
||||
Provides-Extra: circuit-breaker
|
||||
Requires-Dist: pybreaker>=1.4.0; extra == 'circuit-breaker'
|
||||
Provides-Extra: hiredis
|
||||
Requires-Dist: hiredis>=3.2.0; extra == 'hiredis'
|
||||
Provides-Extra: jwt
|
||||
Requires-Dist: pyjwt>=2.13.0; extra == 'jwt'
|
||||
Provides-Extra: ocsp
|
||||
Requires-Dist: cryptography>=36.0.1; extra == 'ocsp'
|
||||
Requires-Dist: pyopenssl>=20.0.1; extra == 'ocsp'
|
||||
Requires-Dist: requests>=2.31.0; extra == 'ocsp'
|
||||
Provides-Extra: otel
|
||||
Requires-Dist: opentelemetry-api>=1.39.1; extra == 'otel'
|
||||
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.39.1; extra == 'otel'
|
||||
Requires-Dist: opentelemetry-sdk>=1.39.1; extra == 'otel'
|
||||
Provides-Extra: xxhash
|
||||
Requires-Dist: xxhash~=3.6.0; extra == 'xxhash'
|
||||
Description-Content-Type: text/markdown
|
||||
|
||||
# redis-py
|
||||
|
||||
The Python interface to the Redis key-value store.
|
||||
|
||||
[](https://github.com/redis/redis-py/actions/workflows/integration.yaml)
|
||||
[](https://redis.readthedocs.io/en/stable/)
|
||||
[](https://github.com/redis/redis-py/blob/master/LICENSE)
|
||||
[](https://pypi.org/project/redis/)
|
||||
[](https://github.com/redis/redis-py/releases)
|
||||
[](https://codecov.io/gh/redis/redis-py)
|
||||
|
||||
[Installation](#installation) | [Usage](#usage) | [Advanced Topics](#advanced-topics) | [Contributing](https://github.com/redis/redis-py/blob/master/CONTRIBUTING.md)
|
||||
|
||||
---------------------------------------------
|
||||
|
||||
**Note:** redis-py 5.0 is the last version of redis-py that supports Python 3.7, as it has reached [end of life](https://devguide.python.org/versions/). redis-py 5.1 supports Python 3.8+.<br>
|
||||
**Note:** redis-py 6.1.0 is the last version of redis-py that supports Python 3.8, as it has reached [end of life](https://devguide.python.org/versions/). redis-py 6.2.0 supports Python 3.9+.
|
||||
|
||||
---------------------------------------------
|
||||
|
||||
## How do I Redis?
|
||||
|
||||
[Learn for free at Redis University](https://redis.io/learn/university)
|
||||
|
||||
[Try the Redis Cloud](https://redis.io/try-free/)
|
||||
|
||||
[Dive in developer tutorials](https://redis.io/learn)
|
||||
|
||||
[Join the Redis community](https://redis.io/community/)
|
||||
|
||||
[Work at Redis](https://redis.io/careers/)
|
||||
|
||||
## Installation
|
||||
|
||||
Start a redis via docker (for Redis versions >= 8.0):
|
||||
|
||||
``` bash
|
||||
docker run -p 6379:6379 -it redis:latest
|
||||
```
|
||||
|
||||
Start a redis via docker (for Redis versions < 8.0):
|
||||
|
||||
``` bash
|
||||
docker run -p 6379:6379 -it redis/redis-stack:latest
|
||||
```
|
||||
To install redis-py, simply:
|
||||
|
||||
``` bash
|
||||
$ pip install redis
|
||||
```
|
||||
|
||||
For faster performance, install redis with hiredis support, this provides a compiled response parser, and *for most cases* requires zero code changes.
|
||||
By default, if hiredis >= 1.0 is available, redis-py will attempt to use it for response parsing.
|
||||
|
||||
``` bash
|
||||
$ pip install "redis[hiredis]"
|
||||
```
|
||||
|
||||
Looking for a high-level library to handle object mapping? See [redis-om-python](https://github.com/redis/redis-om-python)!
|
||||
|
||||
## Supported Redis Versions
|
||||
|
||||
The most recent version of this library supports Redis version [7.2](https://github.com/redis/redis/blob/7.2/00-RELEASENOTES), [7.4](https://github.com/redis/redis/blob/7.4/00-RELEASENOTES), [8.0](https://github.com/redis/redis/blob/8.0/00-RELEASENOTES), [8.2](https://github.com/redis/redis/blob/8.2/00-RELEASENOTES), [8.4](https://github.com/redis/redis/blob/8.4/00-RELEASENOTES), [8.6](https://github.com/redis/redis/blob/8.6/00-RELEASENOTES) and [8.8](https://github.com/redis/redis/blob/8.8/00-RELEASENOTES).
|
||||
|
||||
The table below highlights version compatibility of the most-recent library versions and redis versions.
|
||||
|
||||
| Library version | Supported redis versions |
|
||||
|-----------------|-------------------|
|
||||
| 3.5.3 | <= 6.2 Family of releases |
|
||||
| >= 4.5.0 | Version 5.0 to 7.0 |
|
||||
| >= 5.0.0 | Version 5.0 to 7.4 |
|
||||
| >= 6.0.0 | Version 7.2 to current |
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Example
|
||||
|
||||
``` python
|
||||
>>> import redis
|
||||
>>> r = redis.Redis(host='localhost', port=6379, db=0)
|
||||
>>> r.set('foo', 'bar')
|
||||
True
|
||||
>>> r.get('foo')
|
||||
b'bar'
|
||||
```
|
||||
|
||||
The above code connects to localhost on port 6379, sets a value in Redis, and retrieves it. All responses are returned as bytes in Python, to receive decoded strings, set *decode_responses=True*. For this, and more connection options, see [these examples](https://redis.readthedocs.io/en/stable/examples.html).
|
||||
|
||||
|
||||
#### RESP3 Support
|
||||
redis-py supports RESP3 starting with version 5.0. Starting with redis-py 8.0,
|
||||
clients use RESP3 on the wire by default while preserving legacy
|
||||
RESP2-compatible Python response shapes for existing applications.
|
||||
|
||||
Set *protocol=3* explicitly when your application should receive
|
||||
RESP3-specific response shapes or when you want the wire protocol choice to be
|
||||
visible in code. To force RESP2 on the wire, set *protocol=2*. To opt in to
|
||||
protocol-independent response shapes, set *legacy_responses=False*.
|
||||
|
||||
For new projects, we recommend opting out of legacy response compatibility by
|
||||
setting *legacy_responses=False*. This makes redis-py return unified Python
|
||||
response shapes for affected commands whether the connection uses RESP2 or
|
||||
RESP3. Existing applications can keep the default legacy-compatible behavior
|
||||
while they migrate response handling at their own pace.
|
||||
|
||||
``` python
|
||||
>>> import redis
|
||||
>>> r = redis.Redis(host='localhost', port=6379, db=0, legacy_responses=False)
|
||||
```
|
||||
|
||||
See the [unified responses migration guide](https://redis.readthedocs.io/en/stable/unified_responses.html)
|
||||
for activation instructions and command-by-command response differences. For
|
||||
RESP3-specific behavior, see the [RESP3 features guide](https://redis.readthedocs.io/en/stable/resp3_features.html).
|
||||
|
||||
### Connection Pools
|
||||
|
||||
By default, redis-py uses a connection pool to manage connections. Each instance of a Redis class receives its own connection pool. You can however define your own [redis.ConnectionPool](https://redis.readthedocs.io/en/stable/connections.html#connection-pools).
|
||||
|
||||
``` python
|
||||
>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
|
||||
>>> r = redis.Redis(connection_pool=pool)
|
||||
```
|
||||
|
||||
Alternatively, you might want to look at [Async connections](https://redis.readthedocs.io/en/stable/examples/asyncio_examples.html), or [Cluster connections](https://redis.readthedocs.io/en/stable/connections.html#cluster-client), or even [Async Cluster connections](https://redis.readthedocs.io/en/stable/connections.html#async-cluster-client).
|
||||
|
||||
### Redis Commands
|
||||
|
||||
There is built-in support for all of the [out-of-the-box Redis commands](https://redis.io/commands). They are exposed using the raw Redis command names (`HSET`, `HGETALL`, etc.) except where a word (i.e. del) is reserved by the language. The complete set of commands can be found [here](https://github.com/redis/redis-py/tree/master/redis/commands), or [the documentation](https://redis.readthedocs.io/en/stable/commands.html).
|
||||
|
||||
## Advanced Topics
|
||||
|
||||
The [official Redis command documentation](https://redis.io/commands)
|
||||
does a great job of explaining each command in detail. redis-py attempts
|
||||
to adhere to the official command syntax. There are a few exceptions:
|
||||
|
||||
- **MULTI/EXEC**: These are implemented as part of the Pipeline class.
|
||||
The pipeline is wrapped with the MULTI and EXEC statements by
|
||||
default when it is executed, which can be disabled by specifying
|
||||
transaction=False. See more about Pipelines below.
|
||||
|
||||
- **SUBSCRIBE/LISTEN**: Similar to pipelines, PubSub is implemented as
|
||||
a separate class as it places the underlying connection in a state
|
||||
where it can\'t execute non-pubsub commands. Calling the pubsub
|
||||
method from the Redis client will return a PubSub instance where you
|
||||
can subscribe to channels and listen for messages. You can only call
|
||||
PUBLISH from the Redis client (see [this comment on issue
|
||||
#151](https://github.com/redis/redis-py/issues/151#issuecomment-1545015)
|
||||
for details).
|
||||
|
||||
For more details, please see the documentation on [advanced topics page](https://redis.readthedocs.io/en/stable/advanced_features.html).
|
||||
|
||||
### Pipelines
|
||||
|
||||
The following is a basic example of a [Redis pipeline](https://redis.io/docs/manual/pipelining/), a method to optimize round-trip calls, by batching Redis commands, and receiving their results as a list.
|
||||
|
||||
|
||||
``` python
|
||||
>>> pipe = r.pipeline()
|
||||
>>> pipe.set('foo', 5)
|
||||
>>> pipe.set('bar', 18.5)
|
||||
>>> pipe.set('blee', "hello world!")
|
||||
>>> pipe.execute()
|
||||
[True, True, True]
|
||||
```
|
||||
|
||||
### PubSub
|
||||
|
||||
The following example shows how to utilize [Redis Pub/Sub](https://redis.io/docs/manual/pubsub/) to subscribe to specific channels.
|
||||
|
||||
``` python
|
||||
>>> r = redis.Redis(...)
|
||||
>>> p = r.pubsub()
|
||||
>>> p.subscribe('my-first-channel', 'my-second-channel', ...)
|
||||
>>> p.get_message()
|
||||
{'pattern': None, 'type': 'subscribe', 'channel': b'my-second-channel', 'data': 1}
|
||||
```
|
||||
|
||||
### Redis’ search and query capabilities default dialect
|
||||
|
||||
Release 6.0.0 introduces a client-side default dialect for Redis’ search and query capabilities.
|
||||
By default, the client now overrides the server-side dialect with version 2, automatically appending *DIALECT 2* to commands like *FT.AGGREGATE* and *FT.SEARCH*.
|
||||
|
||||
**Important**: Be aware that the query dialect may impact the results returned. If needed, you can revert to a different dialect version by configuring the client accordingly.
|
||||
|
||||
``` python
|
||||
>>> from redis.commands.search.field import TextField
|
||||
>>> from redis.commands.search.query import Query
|
||||
>>> from redis.commands.search.index_definition import IndexDefinition
|
||||
>>> import redis
|
||||
|
||||
>>> r = redis.Redis(host='localhost', port=6379, db=0)
|
||||
>>> r.ft().create_index(
|
||||
>>> (TextField("name"), TextField("lastname")),
|
||||
>>> definition=IndexDefinition(prefix=["test:"]),
|
||||
>>> )
|
||||
|
||||
>>> r.hset("test:1", "name", "James")
|
||||
>>> r.hset("test:1", "lastname", "Brown")
|
||||
|
||||
>>> # Query with default DIALECT 2
|
||||
>>> query = "@name: James Brown"
|
||||
>>> q = Query(query)
|
||||
>>> res = r.ft().search(q)
|
||||
|
||||
>>> # Query with explicit DIALECT 1
|
||||
>>> query = "@name: James Brown"
|
||||
>>> q = Query(query).dialect(1)
|
||||
>>> res = r.ft().search(q)
|
||||
```
|
||||
|
||||
You can find further details in the [query dialect documentation](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/dialects/).
|
||||
|
||||
### Multi-database client (Active-Active)
|
||||
|
||||
The multi-database client allows your application to connect to multiple Redis databases, which are typically replicas of each other. It is designed to work with Redis Software and Redis Cloud Active-Active setups. The client continuously monitors database health, detects failures, and automatically fails over to the next healthy database using a configurable strategy. When the original database becomes healthy again, the client can automatically switch back to it.<br>
|
||||
This is useful when:
|
||||
|
||||
1. You have more than one Redis deployment. This might include two independent Redis servers or two or more Redis databases replicated across multiple [active-active Redis Enterprise](https://redis.io/docs/latest/operate/rs/databases/active-active/) clusters.
|
||||
2. You want your application to connect to one deployment at a time and to fail over to the next available deployment if the first deployment becomes unavailable.
|
||||
|
||||
For the complete failover configuration options and examples, see the [Multi-database client docs](https://redis.readthedocs.io/en/latest/multi_database.html).
|
||||
|
||||
### Bulk hash ingestion (HIMPORT)
|
||||
|
||||
Redis 8.10 adds the `HIMPORT` command family for loading many hashes that share
|
||||
the same set of field names: register the field names once with `himport_prepare`,
|
||||
then create each hash by sending only its values. Keys written this way are regular
|
||||
hashes — every hash command works on them.
|
||||
|
||||
``` python
|
||||
r.himport_prepare("users", ["name", "email", "age"])
|
||||
r.himport_set("user:1", "users", ["alice", "alice@example.com", "25"])
|
||||
r.himport_set("user:2", "users", ["bob", "bob@example.com", "30"])
|
||||
r.himport_discard("users") # => 1
|
||||
```
|
||||
|
||||
Values pair positionally with the prepared fields. Hash enumeration order
|
||||
(`HGETALL`, `HKEYS`) is not guaranteed to match the prepare order.
|
||||
|
||||
**Fieldsets are connection state.** A prepared fieldset lives in the server-side
|
||||
session of the physical connection that prepared it: it is invisible to other
|
||||
connections and destroyed by a disconnect or `RESET`. redis-py handles this for you —
|
||||
`himport_prepare` records the fieldset in a client-level registry, and the `PREPARE`
|
||||
is applied lazily on whatever pooled connection serves each `himport_set` (and
|
||||
re-applied automatically after a reconnect, `RESET`, or Sentinel/cluster failover).
|
||||
You declare each fieldset once per client with `himport_prepare`; there is no
|
||||
constructor argument for it.
|
||||
|
||||
For the highest ingestion throughput, send the `PREPARE` and its `SET`s in one
|
||||
pipeline — a single batch always executes on one connection:
|
||||
|
||||
``` python
|
||||
with r.pipeline(transaction=False) as pipe:
|
||||
pipe.himport_prepare("users", ["name", "email", "age"])
|
||||
for uid, row in rows:
|
||||
pipe.himport_set(f"user:{uid}", "users", row)
|
||||
pipe.execute()
|
||||
```
|
||||
|
||||
The automatic re-prepare applies to direct calls only, not to commands inside
|
||||
`pipeline`/`transaction` blocks: a batched `himport_set` relies on the single
|
||||
pre-flight `PREPARE` in that batch.
|
||||
|
||||
With `RedisCluster`, `himport_prepare` / `himport_discard` / `himport_discard_all`
|
||||
update the client's shared, cluster-wide registry and return immediately — like the
|
||||
standalone API, they perform no server I/O of their own. The server-side `PREPARE`
|
||||
(and, after a discard, `DISCARD`) is applied lazily on each node's connection the
|
||||
next time it serves an `himport_set`, and re-applied after reconnects or failover;
|
||||
`himport_set` itself routes by the key's hash slot. A discard is therefore not
|
||||
removed from every server session at once: each connection drops the fieldset on its
|
||||
next `himport_set` (or on disconnect). With Sentinel, call
|
||||
`himport_prepare` on the long-lived client returned by `master_for(...)`; the fieldset
|
||||
survives failover automatically. HIMPORT is not supported on the multi-database
|
||||
(Active-Active) client.
|
||||
|
||||
The async client mirrors this exactly:
|
||||
|
||||
``` python
|
||||
await r.himport_prepare("users", ["name", "email", "age"])
|
||||
await r.himport_set("user:1", "users", ["alice", "alice@example.com", "25"])
|
||||
```
|
||||
|
||||
---------------------------------------------
|
||||
|
||||
### Author
|
||||
|
||||
redis-py is developed and maintained by [Redis Inc](https://redis.io). It can be found [here](
|
||||
https://github.com/redis/redis-py), or downloaded from [pypi](https://pypi.org/project/redis/).
|
||||
|
||||
Special thanks to:
|
||||
|
||||
- Andy McCurdy (<sedrik@gmail.com>) the original author of redis-py.
|
||||
- Ludovico Magnocavallo, author of the original Python Redis client,
|
||||
from which some of the socket code is still used.
|
||||
- Alexander Solovyov for ideas on the generic response callback
|
||||
system.
|
||||
- Paul Hubbard for initial packaging support.
|
||||
|
||||
[](https://redis.io)
|
||||
@@ -0,0 +1,246 @@
|
||||
redis-8.1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
redis-8.1.0.dist-info/METADATA,sha256=RmhnHMbx-dZoclVXGgaemPFG3_SLqYQPOIAbPoyrugY,16572
|
||||
redis-8.1.0.dist-info/RECORD,,
|
||||
redis-8.1.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
||||
redis-8.1.0.dist-info/licenses/LICENSE,sha256=pXslClvwPXr-VbdAYzE_Ktt7ANVGwKsUmok5gzP-PMg,1074
|
||||
redis/__init__.py,sha256=z9nbmXpteSjQp3q-NWJZt2OzTBf4F-pMd2ehtt19mkI,2929
|
||||
redis/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/__pycache__/_defaults.cpython-311.pyc,,
|
||||
redis/__pycache__/_himport_exec.cpython-311.pyc,,
|
||||
redis/__pycache__/background.cpython-311.pyc,,
|
||||
redis/__pycache__/backoff.cpython-311.pyc,,
|
||||
redis/__pycache__/cache.cpython-311.pyc,,
|
||||
redis/__pycache__/client.cpython-311.pyc,,
|
||||
redis/__pycache__/cluster.cpython-311.pyc,,
|
||||
redis/__pycache__/connection.cpython-311.pyc,,
|
||||
redis/__pycache__/crc.cpython-311.pyc,,
|
||||
redis/__pycache__/credentials.cpython-311.pyc,,
|
||||
redis/__pycache__/data_structure.cpython-311.pyc,,
|
||||
redis/__pycache__/driver_info.cpython-311.pyc,,
|
||||
redis/__pycache__/event.cpython-311.pyc,,
|
||||
redis/__pycache__/exceptions.cpython-311.pyc,,
|
||||
redis/__pycache__/himport.cpython-311.pyc,,
|
||||
redis/__pycache__/keyspace_notifications.cpython-311.pyc,,
|
||||
redis/__pycache__/lock.cpython-311.pyc,,
|
||||
redis/__pycache__/maint_notifications.cpython-311.pyc,,
|
||||
redis/__pycache__/ocsp.cpython-311.pyc,,
|
||||
redis/__pycache__/retry.cpython-311.pyc,,
|
||||
redis/__pycache__/sentinel.cpython-311.pyc,,
|
||||
redis/__pycache__/typing.cpython-311.pyc,,
|
||||
redis/__pycache__/utils.cpython-311.pyc,,
|
||||
redis/_defaults.py,sha256=td9SqDwuUy8UzSSri8KaNYwwOjTlBrphXClPJWvoFEw,1199
|
||||
redis/_himport_exec.py,sha256=HwhHoaa6hKUbidWU7qfUcl9rRsU5qxjeLtaNGGtuRGE,11279
|
||||
redis/_parsers/__init__.py,sha256=gyf5dp918NuJAkWFl8sX1Z-qAvbX_40-_7YCTM6Rvjc,693
|
||||
redis/_parsers/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/base.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/commands.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/encoders.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/helpers.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/hiredis.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/resp2.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/resp3.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/response_callbacks.cpython-311.pyc,,
|
||||
redis/_parsers/__pycache__/socket.cpython-311.pyc,,
|
||||
redis/_parsers/base.py,sha256=H38nBD0MzXiMLPyozY8yjU3qeRLAODSOMfGF7xdAZp0,21480
|
||||
redis/_parsers/commands.py,sha256=Li-qgBqDk14skiiYn2JT3KaxLckAlyPA_3v49xRHiJE,28481
|
||||
redis/_parsers/encoders.py,sha256=oHnHBhXWNY4PG98GZydCtkUmlhb_1svpybCMp0UmUCo,1745
|
||||
redis/_parsers/helpers.py,sha256=rvsDd85oG3ahBkYBPgeJpCvEXU2LtB1xia1M0DoFQUc,53817
|
||||
redis/_parsers/hiredis.py,sha256=eaUMFeingq8G0yQvB9DouwqmdqDBsjSgjfd1u9XaD6E,15787
|
||||
redis/_parsers/resp2.py,sha256=thfLO_b7CA3OOgPzax0v1p90rNpQpoXF1U3gGcwkOIk,5050
|
||||
redis/_parsers/resp3.py,sha256=yPTwGDAWpA0MuMYyNp27J9tqYQzli0CjIzN75gn8vbU,10918
|
||||
redis/_parsers/response_callbacks.py,sha256=uVm3-T2N8t4jAr17XyxUIqhR3dn0zpdx1-lnSkLuQs8,18724
|
||||
redis/_parsers/socket.py,sha256=SvlSNsPOvnzpi63PXQ9N3w7-Waxy0htHP895K1-bwyM,5637
|
||||
redis/asyncio/__init__.py,sha256=be_GRVtazGMUQ9NBTGfaXVO0EOlJyE454gFlk12ek-U,1830
|
||||
redis/asyncio/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/_himport_exec.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/client.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/cluster.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/connection.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/keyspace_notifications.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/lock.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/maint_notifications.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/retry.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/sentinel.cpython-311.pyc,,
|
||||
redis/asyncio/__pycache__/utils.cpython-311.pyc,,
|
||||
redis/asyncio/_himport_exec.py,sha256=WOn1v3qlJjxqocVmn9iZN5Z2f25Ze66FgklGsPvO1FQ,11487
|
||||
redis/asyncio/client.py,sha256=GlJeRNMBJ8xwSMcGUF2N6zDpwEqns92gXhCeuc6dlsk,92458
|
||||
redis/asyncio/cluster.py,sha256=pAMMCfM-L_C6Z9tE3XS1menk6bKiIt-j_gpcWND-lOo,176042
|
||||
redis/asyncio/connection.py,sha256=JF4zfRb6c9OiqUDBrtFaYQ1eaBeh7EkiKiB5i3oSyy0,123885
|
||||
redis/asyncio/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
redis/asyncio/http/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/asyncio/http/__pycache__/http_client.cpython-311.pyc,,
|
||||
redis/asyncio/http/http_client.py,sha256=wftF-Yl4LAcBNkxy62HM2x5OSmpfEz6qxBFM-zft9rU,7947
|
||||
redis/asyncio/keyspace_notifications.py,sha256=HZxlsDJDpaVtTsVpE-EmG-XgQR7v9HYWxsqO9xJAoCw,37634
|
||||
redis/asyncio/lock.py,sha256=WJIz_eK0n4uzVtS2tMekp9STG6vg5M2jNVz1Jdb_WjI,13294
|
||||
redis/asyncio/maint_notifications.py,sha256=i2z6rorvfdZrNEY-vLJFsbRjq0DGCHslpziqBeZUv3M,24030
|
||||
redis/asyncio/multidb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
redis/asyncio/multidb/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/client.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/command_executor.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/config.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/database.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/event.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/failover.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/failure_detector.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/__pycache__/healthcheck.cpython-311.pyc,,
|
||||
redis/asyncio/multidb/client.py,sha256=K0nbG_MpumDWROIbJXNXQbr1LCMbHGcuYao8BkDG8j4,23610
|
||||
redis/asyncio/multidb/command_executor.py,sha256=IGtRQKBQXrDDo_zDb1RVwXhANB9DH9ns9VsuzAZfY3s,12390
|
||||
redis/asyncio/multidb/config.py,sha256=ag_61veF-Pm2Dt9qF-TRgNH0ktlIfDgXoiVmmMdYtNk,9830
|
||||
redis/asyncio/multidb/database.py,sha256=HRsi6XFtY5nXpQcpze2Khn7k2dsnlZ0b3SeO-AcEHaA,1931
|
||||
redis/asyncio/multidb/event.py,sha256=76GS22NwkeMVwtjr13UMeYD0pAB9KoPDvKWUin4DwHs,2788
|
||||
redis/asyncio/multidb/failover.py,sha256=SEhlG2rA50Mz-Rk-W5l_wOREHmKQMDyxSRiSAt1NmMI,3635
|
||||
redis/asyncio/multidb/failure_detector.py,sha256=1nipBfcjtLH8XprTQvOBE9y0kRC_YsPszEPzLKbiSU8,1263
|
||||
redis/asyncio/multidb/healthcheck.py,sha256=QX60YcI-6bgAviLyUXosWdMI718KVfxp9XFaKXyDMbo,18321
|
||||
redis/asyncio/observability/__init__.py,sha256=zcDNVo9LkIDYOL8fJjX244Gxzsq1BbnnsadoZZW9HR0,439
|
||||
redis/asyncio/observability/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/asyncio/observability/__pycache__/recorder.cpython-311.pyc,,
|
||||
redis/asyncio/observability/recorder.py,sha256=TZQH6LJkdexaOXsaqxzHxBOO3F2FbIKhpeHIdkmSH8U,18234
|
||||
redis/asyncio/retry.py,sha256=VYQsSri88aMc3xFavcNRe4FGSq5gQf_70LR-ejLB_YU,2515
|
||||
redis/asyncio/sentinel.py,sha256=LUAhVEU1PqoUibetLxKf-_bjQL_F9mRwlHqO4Zjnx-k,18978
|
||||
redis/asyncio/utils.py,sha256=MkTImQ9SFALFhUhwVbvu26B1RAY8KcgSlpVswz1QlIs,744
|
||||
redis/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
redis/auth/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/auth/__pycache__/err.cpython-311.pyc,,
|
||||
redis/auth/__pycache__/idp.cpython-311.pyc,,
|
||||
redis/auth/__pycache__/token.cpython-311.pyc,,
|
||||
redis/auth/__pycache__/token_manager.cpython-311.pyc,,
|
||||
redis/auth/err.py,sha256=WYkbuDIzwp1S-eAvsya6QMlO6g9QIXbzMITOsTWX0xk,694
|
||||
redis/auth/idp.py,sha256=IMDIIb9q72vbIwtFN8vPdaAKZVTdh0HuC5uj5ufqmw4,631
|
||||
redis/auth/token.py,sha256=qYwAgxFW3S93QDUqp1BTsj7Pj9ZohnixGeOX0s7AsjY,3317
|
||||
redis/auth/token_manager.py,sha256=puLk9Y0E-UiCmrhx0Sj63c-BE-9hd5MvL0OzsbskAgw,12388
|
||||
redis/background.py,sha256=Bs2fOOZpsWwHgJ5W7XGDc1ePvMhPc6KM5Yj-Rn_N0YM,16982
|
||||
redis/backoff.py,sha256=tQM6Lh2g2FjMH8iXg94br2sU9eri4mEW9FbOrMt0azs,5285
|
||||
redis/cache.py,sha256=yfjWND74f_O4zOWcekd-r9byjNwRk9PAN7eepA9J_YE,12089
|
||||
redis/client.py,sha256=3U9ZJ3kQ8d-GPnP2uV1YSnxqhxfimMBknJFK2yyud6Y,90897
|
||||
redis/cluster.py,sha256=JXyity0cocA0sx6yx6u45sgXXsG_O2Nb9iOqrkhj4gY,201380
|
||||
redis/commands/__init__.py,sha256=cTUH-MGvaLYS0WuoytyqtN1wniw2A1KbkUXcpvOSY3I,576
|
||||
redis/commands/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/commands/__pycache__/cluster.cpython-311.pyc,,
|
||||
redis/commands/__pycache__/core.cpython-311.pyc,,
|
||||
redis/commands/__pycache__/helpers.cpython-311.pyc,,
|
||||
redis/commands/__pycache__/policies.cpython-311.pyc,,
|
||||
redis/commands/__pycache__/redismodules.cpython-311.pyc,,
|
||||
redis/commands/__pycache__/sentinel.cpython-311.pyc,,
|
||||
redis/commands/bf/__init__.py,sha256=20GQDT__C-VUiv84eI2NqPGMJ-VmTmVyl-1R39pP3Gw,12027
|
||||
redis/commands/bf/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/commands/bf/__pycache__/commands.cpython-311.pyc,,
|
||||
redis/commands/bf/__pycache__/info.cpython-311.pyc,,
|
||||
redis/commands/bf/commands.py,sha256=JTA7R12yeSquqVBdo-e7JcQcAdBgbq1RYxStDrIAqmw,34645
|
||||
redis/commands/bf/info.py,sha256=QwWQZ2CnRUJwbvyjfgLqUzXVaTI7e18PeBFEFIVm8K8,3538
|
||||
redis/commands/cluster.py,sha256=cvxqqIoWlIBHZeND8FtgDAVwxE3s01eP76HRZuOT92Y,49928
|
||||
redis/commands/core.py,sha256=ShQNffgoADcDVTiB7pE2DXawyZFSgwRh1Hede9k3MHY,420195
|
||||
redis/commands/helpers.py,sha256=lgBxRRRyUGSSm9mVrnpWOo9drM2EL-L8VbXF6tpkZjw,6401
|
||||
redis/commands/json/__init__.py,sha256=4pS1MMuGXrtpt7a6lJVDQcR4qByEvohj5mH0zY77SfU,13000
|
||||
redis/commands/json/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/commands/json/__pycache__/_util.cpython-311.pyc,,
|
||||
redis/commands/json/__pycache__/commands.cpython-311.pyc,,
|
||||
redis/commands/json/__pycache__/decoders.cpython-311.pyc,,
|
||||
redis/commands/json/__pycache__/path.cpython-311.pyc,,
|
||||
redis/commands/json/_util.py,sha256=hIBQ1TLCTgUifcLsg0x8kJlecxmXhA9I0zMnHlQk0Ho,137
|
||||
redis/commands/json/commands.py,sha256=z1XH6wVZjKu9WeqcdkNJhnefJT1A17MIGLuemnrAO8w,29582
|
||||
redis/commands/json/decoders.py,sha256=a_IoMV_wgeJyUifD4P6HTcM9s6FhricwmzQcZRmc-Gw,1411
|
||||
redis/commands/json/path.py,sha256=0zaO6_q_FVMk1Bkhkb7Wcr8AF2Tfr69VhkKy1IBVhpA,393
|
||||
redis/commands/policies.py,sha256=R5CfRvBnhHTnnCIvBsZsToQ1SGsWwMqju2dsqpqDL7Q,11434
|
||||
redis/commands/redismodules.py,sha256=5AiaibRkclg5ZWpBVLa7287kJFG-RmeEI9PoIv-Qu5E,4438
|
||||
redis/commands/search/__init__.py,sha256=X5XaRJ23hATzXGiwYbTCxg55sKEfaqvR-wvrdM07Z_8,8322
|
||||
redis/commands/search/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/_util.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/aggregation.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/commands.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/dialect.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/document.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/field.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/hybrid_query.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/hybrid_result.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/index_definition.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/profile_information.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/query.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/querystring.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/reducers.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/result.cpython-311.pyc,,
|
||||
redis/commands/search/__pycache__/suggestion.cpython-311.pyc,,
|
||||
redis/commands/search/_util.py,sha256=9Mp72OO5Ib5UbfN7uXb-iB7hQCm1jQLV90ms2P9XSGU,219
|
||||
redis/commands/search/aggregation.py,sha256=UfJPGLvAK6TQpEcLQ0xiUiFXqeEYV-7oLz1_Uz8Yg38,11716
|
||||
redis/commands/search/commands.py,sha256=ghvdiLO6CXJLul5HhfnBxpLAO6qSFGc62ijdxakIB4M,80360
|
||||
redis/commands/search/dialect.py,sha256=-7M6kkr33x0FkMtKmUsbeRAE6qxLUbqdJCqIo0UKIXo,105
|
||||
redis/commands/search/document.py,sha256=g2R-PRgq-jN33_GLXzavvse4cpIHBMfjPfPK7tnE9Gc,413
|
||||
redis/commands/search/field.py,sha256=KQFKCGVaABn9vDYnAcB0jaMwGxJqiZ8fEJHP_VieBR8,5935
|
||||
redis/commands/search/hybrid_query.py,sha256=ciCcFkOzZYmbVR8hGp7BC1_NTs3Cz29Fazi6BeWzmS0,14469
|
||||
redis/commands/search/hybrid_result.py,sha256=1VQIwVxi5LA99l8r-mfbEifR03ZswYlvOPPoMM_6UiY,815
|
||||
redis/commands/search/index_definition.py,sha256=fz30xK3PMgc2p7C_M7OBJTdiVfZPkyNQbnF4G74j8YM,2653
|
||||
redis/commands/search/profile_information.py,sha256=w9SbMiHbcZ1TpsZMe8cMIyO1hGkm5GhnZ_Gqg1feLtc,249
|
||||
redis/commands/search/query.py,sha256=9-CCxjakf53BowKLRgLdAhZIZXlWZRjT3bfVyudkGFw,12361
|
||||
redis/commands/search/querystring.py,sha256=sK13ZXPMVeCMIhLRsGoyVdDDzo-bE4xbgKJlNaiEbTQ,7597
|
||||
redis/commands/search/reducers.py,sha256=2LxXd2cM1FxgEbmEdvJB7BsDKcypLOU1u7FF2bkleVU,7315
|
||||
redis/commands/search/result.py,sha256=XQKsKnl9cY94u_IgM6bHI6op2jrDW-b9fIVb7-VnuSQ,5001
|
||||
redis/commands/search/suggestion.py,sha256=V_re6suDCoNc0ETn_P1t51FeK4pCamPwxZRxCY8jscE,1612
|
||||
redis/commands/sentinel.py,sha256=0lAXtgg0WO2yCaKci3-z79lNoynKRNmuL7GgBkQ1MZM,9143
|
||||
redis/commands/timeseries/__init__.py,sha256=sM1ZqqssmTL7rBiXCNzc9m8BAHFDgQPEd6SbBYCfTGo,5726
|
||||
redis/commands/timeseries/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/commands/timeseries/__pycache__/commands.cpython-311.pyc,,
|
||||
redis/commands/timeseries/__pycache__/info.cpython-311.pyc,,
|
||||
redis/commands/timeseries/__pycache__/utils.cpython-311.pyc,,
|
||||
redis/commands/timeseries/commands.py,sha256=x8QKlqcwqK2xamLnakYQx2pcv1HdatY6W_P26mCNFcw,87113
|
||||
redis/commands/timeseries/info.py,sha256=FDI5Sy08QribnDN62ujCmNonHGgg-ZV4aBakkLxQQLE,4241
|
||||
redis/commands/timeseries/utils.py,sha256=KXl8ocpUBVrTP7O9eDmqIhnpLRmK_nlqv0nf7A48Th0,7365
|
||||
redis/commands/vectorset/__init__.py,sha256=SFrQnNdngwf8ZEJgJs5WXxzydHIBuEq_MWKKgzqODR0,2549
|
||||
redis/commands/vectorset/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/commands/vectorset/__pycache__/commands.cpython-311.pyc,,
|
||||
redis/commands/vectorset/__pycache__/utils.cpython-311.pyc,,
|
||||
redis/commands/vectorset/commands.py,sha256=8Xc_8NUW93U4ysgf3XPCchF4pz_QwJ7gXciVwAiPj_o,19337
|
||||
redis/commands/vectorset/utils.py,sha256=kApyWTzG_HEgTj6wSzBuMVz-qWMhPSgr-Do_5cHSS6E,4472
|
||||
redis/connection.py,sha256=8Da4WMNptCPQXhYeRvEoIEVf4k2sn8RQ0IMdlt-RZRs,148339
|
||||
redis/crc.py,sha256=Z3kXFtkY2LdgefnQMud1xr4vG5UYvA9LCMqNMX1ywu4,729
|
||||
redis/credentials.py,sha256=Jl5f4xh9QQu33_14JkYWlRxxxZHaRyxSvZ5OWEm3Wlc,1828
|
||||
redis/data_structure.py,sha256=qTZq3s7gEmZVwyFBNfKnkKnm9q3-HHxnZfMH9sBIyD4,2527
|
||||
redis/driver_info.py,sha256=b9rv8DDhK6O4ZlKLsbDcIoZN6yzPIdoKaHf10NR4J3I,5911
|
||||
redis/event.py,sha256=bLag628yXHBYbyqrayzg_1vLb6l8XhQwckTWHa9490Y,17401
|
||||
redis/exceptions.py,sha256=StTWH0as4P3i4fhUAluIHmoS1wjnDCnLJvNQ6emwm5k,8940
|
||||
redis/himport.py,sha256=073OhyggGbvFqM7vdoUYqsrOw5lfyjIGTRPLKPf3BX4,16381
|
||||
redis/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
redis/http/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/http/__pycache__/http_client.cpython-311.pyc,,
|
||||
redis/http/http_client.py,sha256=RscIdyP2Meyc8i8WMO2fANX3VWT-ytYzwHMQzEdNEoQ,15359
|
||||
redis/keyspace_notifications.py,sha256=XPgroEAy3qFLWGMvzFr0yXQyIxy2NxKupXx4l-W-b0A,75094
|
||||
redis/lock.py,sha256=-N35rNPLOmezA_xOD71JiKWv9pLCXMNkJy-9Gk8DC9w,12819
|
||||
redis/maint_notifications.py,sha256=vAmKAspVZ_scH0V3xEa5MoX7wFozFTXkrrHwOiX3UtY,46868
|
||||
redis/multidb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
redis/multidb/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/circuit.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/client.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/command_executor.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/config.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/database.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/event.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/exception.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/failover.cpython-311.pyc,,
|
||||
redis/multidb/__pycache__/failure_detector.cpython-311.pyc,,
|
||||
redis/multidb/circuit.py,sha256=M3VHfRfIzIIDrrYURi-qy4d-IgK44mBq8E03aWhTXtM,3856
|
||||
redis/multidb/client.py,sha256=pnmQmvXjyvtGggS9kiaQXBp2q-qbvLOL31eVWkIfqh4,25196
|
||||
redis/multidb/command_executor.py,sha256=CSo8vG8EPRcJKwa8wlcvZJvKjX6fbgoqCMvzNP18wQY,12402
|
||||
redis/multidb/config.py,sha256=wkKp1GLIQwcEefFEuJboOUtjWz8wWdQWqnsShPxXQUo,10060
|
||||
redis/multidb/database.py,sha256=Z39gpgcwbxq7eDUIApJ6OZTGR7NJ6-0ASBW1on36QgA,3665
|
||||
redis/multidb/event.py,sha256=91-8eBGXM5vD_YpQg4lqVHQBf4ZnPnHj-xdZmxft5LI,2978
|
||||
redis/multidb/exception.py,sha256=UDl3hN6C9VbHStofBNneILm9AJFZSjYVE9PZGMaT6Nk,633
|
||||
redis/multidb/failover.py,sha256=gpbfojRrUiHEedyeJpfruU3qTS01PUSqrVx8ACCDduU,3575
|
||||
redis/multidb/failure_detector.py,sha256=hwuEHAMgKLTRjQHKIHtj6iNnt533uzt-6qRieuYB3jE,3788
|
||||
redis/observability/__init__.py,sha256=zfh3E8VXMDHk3p-487ThO2sNCCX7TpuGE1F_Cdv990c,694
|
||||
redis/observability/__pycache__/__init__.cpython-311.pyc,,
|
||||
redis/observability/__pycache__/attributes.cpython-311.pyc,,
|
||||
redis/observability/__pycache__/config.cpython-311.pyc,,
|
||||
redis/observability/__pycache__/metrics.cpython-311.pyc,,
|
||||
redis/observability/__pycache__/providers.cpython-311.pyc,,
|
||||
redis/observability/__pycache__/recorder.cpython-311.pyc,,
|
||||
redis/observability/__pycache__/registry.cpython-311.pyc,,
|
||||
redis/observability/attributes.py,sha256=kc7l9LyIwjGclvroiJlGxPx5_oeS1o-kykpG_SuiXqI,13669
|
||||
redis/observability/config.py,sha256=lh1kNcNiEkhL1smEoHjGyaF4dsj2sD1kYJO0fWL8VEM,6515
|
||||
redis/observability/metrics.py,sha256=faQsUZwz2a4OC-Nq6W_fHPI2a3IEqQpGpg7dOKcqSh8,24377
|
||||
redis/observability/providers.py,sha256=6ZN1-cRmqWZ7uXRAVcDIAjExga6pUtnJD77EbVXOnI8,12287
|
||||
redis/observability/recorder.py,sha256=g2dYyEz4KZ460h3bIKz3AKCwEdWC_3Cfu29zCgofHNM,25630
|
||||
redis/observability/registry.py,sha256=nBFF2ebDrhfhdoqYzaEwrKKbZ2toOkm_lpyirDF7ZoY,2088
|
||||
redis/ocsp.py,sha256=4X1JgGW1pwKujSEYWtxkBJtMWUZtamp4KkX-Z6nsBwI,11454
|
||||
redis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
redis/retry.py,sha256=ZVRvK6XzK3UQGd93DHS8zuKcQ1rKd7ZkzwuCHEyvdD0,3987
|
||||
redis/sentinel.py,sha256=CnS2a1NozmTm7IO9gINEYCK1GCNynnzg9Feq4wkMw78,19188
|
||||
redis/typing.py,sha256=JeZmpHCPMBKL-YeEdjXD66rYntZScnEcGTGhFUAoxlQ,6400
|
||||
redis/utils.py,sha256=WMtlIMr6q36vkUzmz1JM-gqLUWYQWlrYKy7OB5Jfyig,15418
|
||||
@@ -0,0 +1,4 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: hatchling 1.31.0
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022-2023, Redis, inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Reference in New Issue
Block a user