coredis 5.2.0__tar.gz → 5.3.0__tar.gz
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 coredis might be problematic. Click here for more details.
- {coredis-5.2.0 → coredis-5.3.0}/.github/workflows/compatibility.yml +2 -2
- {coredis-5.2.0 → coredis-5.3.0}/.github/workflows/main.yml +2 -2
- {coredis-5.2.0 → coredis-5.3.0}/HISTORY.rst +11 -0
- {coredis-5.2.0 → coredis-5.3.0}/PKG-INFO +2 -2
- {coredis-5.2.0 → coredis-5.3.0}/README.md +0 -1
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_version.py +2 -2
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/__init__.py +5 -1
- {coredis-5.2.0 → coredis-5.3.0}/coredis/typing.py +14 -1
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/modules.rst +0 -5
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/index.rst +0 -1
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/modules.rst +0 -129
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/index.rst +0 -1
- {coredis-5.2.0 → coredis-5.3.0}/pyproject.toml +1 -0
- {coredis-5.2.0 → coredis-5.3.0}/uv.lock +3 -3
- {coredis-5.2.0 → coredis-5.3.0}/.gitattributes +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/.github/FUNDING.yml +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/.github/dependabot.yml +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/.gitignore +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/.gitmodules +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/.readthedocs.yml +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/CODE_OF_CONDUCT.md +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/LICENSE +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/MANIFEST.in +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/Makefile +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_enum.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_json.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_packer.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_protocols.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_py_311_typing.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_py_312_typing.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_sidecar.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_utils.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/_version.pyi +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/cache.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/client/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/client/basic.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/client/cluster.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/_key_spec.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/_utils.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/_validators.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/_wrappers.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/bitfield.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/constants.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/core.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/function.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/monitor.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/pubsub.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/request.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/script.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/commands/sentinel.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/config.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/connection.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/constants.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/credentials.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/exceptions.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/experimental/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/globals.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/autocomplete.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/base.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/filters.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/graph.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/json.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/_callbacks/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/_callbacks/autocomplete.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/_callbacks/graph.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/_callbacks/json.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/_callbacks/search.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/_callbacks/timeseries.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/response/types.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/search.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/modules/timeseries.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/parser.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/pipeline.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/pool/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/pool/basic.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/pool/cluster.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/pool/nodemanager.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/py.typed +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/recipes/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/recipes/credentials/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/recipes/credentials/iam_provider.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/recipes/locks/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/recipes/locks/extend.lua +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/recipes/locks/lua_lock.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/recipes/locks/release.lua +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/acl.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/cluster.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/command.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/connection.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/geo.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/hash.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/keys.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/module.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/script.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/sentinel.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/server.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/sets.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/sorted_set.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/streams.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/strings.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_callbacks/vector_sets.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/_utils.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/response/types.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/retry.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/sentinel.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/stream.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/coredis/tokens.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docker-compose.yml +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/Makefile +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/make.bat +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/_static/custom.css +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/bitfield.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/caching.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/clients.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/connections.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/credentials.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/errors.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/index.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/pipeline.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/pubsub.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/scripting.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/streams.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/typing.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/api/utilities.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/compatibility.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/conf.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/glossary.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/.cluster.rst.swp +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/caching.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/cluster.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/connections.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/credentials.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/development.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/encoding.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/noreply.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/optimization.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/pipelines.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/pubsub.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/response.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/scripting.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/sentinel.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/streams.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/handbook/typing.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/history.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/recipes/credentials.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/recipes/index.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/recipes/locks.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/release_notes.rst +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/docs/source/theme_config.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/push-release.sh +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/pytest.ini +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/RedisJSON.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/benchmark.sh +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/bloom.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/code_gen.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/commands.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/countmin.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/cuckoo.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/github_release_notes.sh +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/graph.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/search.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/suggestion.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/tdigest.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/test_data_gen.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/timeseries.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/scripts/topk.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tag.sh +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/conftest.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/test_cluster_connection_pool.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/test_node_manager.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/test_non_atomic_commands.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/test_pipeline.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/test_pubsub.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/cluster/test_scripting.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_acl.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_bitmap.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_cluster.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_connection.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_functions.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_generic.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_geo.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_hash.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_hyperloglog.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_list.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_modules.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_server.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_set.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_sorted_set.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_streams.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_string.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/commands/test_vector_sets.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/conftest.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/experimental/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/data/city_index.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/data/vss_queries.json +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/data/worldcities.csv +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_autocomplete.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_bloom_filter.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_compatibilty.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_count_min_sketch.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_cuckoo_filter.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_graph.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_json.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_search.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_tdigest.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_timeseries.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/modules/test_topk.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/recipes/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/recipes/credentials/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/recipes/credentials/test_elasticache_iam_provider.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/recipes/locks/__init__.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/recipes/locks/test_lua_lock.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_authentication.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_cache.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_client.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_connection.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_connection_pool.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_credentials.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_encoding.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_lru_cache.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_monitor.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_parsers.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_pipeline.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_pubsub.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_retry.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_scripting.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_sentinel.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_sidecar.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_stream_consumers.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_tracking_cache.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_type_adapters.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/test_utils.py +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/ca.crt +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/ca.key +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/ca.txt +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/client.crt +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/client.key +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/invalid-ca.crt +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/invalid-client.crt +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/invalid-client.key +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/openssl.cnf +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/redis.crt +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/redis.dh +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/redis.key +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/server.crt +0 -0
- {coredis-5.2.0 → coredis-5.3.0}/tests/tls/server.key +0 -0
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
strategy:
|
|
15
15
|
matrix:
|
|
16
|
-
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
16
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
17
17
|
steps:
|
|
18
18
|
- uses: actions/checkout@v3
|
|
19
19
|
- name: Install uv and Python
|
|
@@ -47,7 +47,7 @@ jobs:
|
|
|
47
47
|
strategy:
|
|
48
48
|
fail-fast: false
|
|
49
49
|
matrix:
|
|
50
|
-
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
50
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
51
51
|
redis-version: ["7.0", "7.2", "7.4", "8.0", "8.2", "latest"]
|
|
52
52
|
test_params: ["-m '(not (dragonfly or valkey or redict))'"]
|
|
53
53
|
orjson: ["False"]
|
|
@@ -8,7 +8,7 @@ jobs:
|
|
|
8
8
|
runs-on: ubuntu-latest
|
|
9
9
|
strategy:
|
|
10
10
|
matrix:
|
|
11
|
-
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
11
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
12
12
|
steps:
|
|
13
13
|
- uses: actions/checkout@v3
|
|
14
14
|
- name: Install uv and Python
|
|
@@ -42,7 +42,7 @@ jobs:
|
|
|
42
42
|
strategy:
|
|
43
43
|
fail-fast: false
|
|
44
44
|
matrix:
|
|
45
|
-
python-version: ["3.11", "3.12", "3.13"]
|
|
45
|
+
python-version: ["3.11", "3.12", "3.13", "3.14"]
|
|
46
46
|
redis-version: ["7.0", "7.2", "7.4", "8.0", "8.2", "latest"]
|
|
47
47
|
test_params: ["-m '(not (dragonfly or valkey or redict))'"]
|
|
48
48
|
uvloop: ["False"]
|
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
Changelog
|
|
4
4
|
=========
|
|
5
5
|
|
|
6
|
+
v5.3.0
|
|
7
|
+
------
|
|
8
|
+
Release Date: 2025-10-10
|
|
9
|
+
|
|
10
|
+
* Compatibility
|
|
11
|
+
|
|
12
|
+
* Mark redis graph module support as deprecated
|
|
13
|
+
* Fix compatibility with beartype >= 0.22
|
|
14
|
+
* Add support for python 3.14
|
|
15
|
+
|
|
6
16
|
v5.2.0
|
|
7
17
|
------
|
|
8
18
|
Release Date: 2025-10-01
|
|
@@ -2033,3 +2043,4 @@ v1.0.1
|
|
|
2033
2043
|
* change `Script.register` to `Script.execute`
|
|
2034
2044
|
|
|
2035
2045
|
|
|
2046
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: coredis
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.3.0
|
|
4
4
|
Summary: Python async client for Redis key-value store
|
|
5
5
|
Project-URL: Homepage, https://github.com/alisaifee/coredis
|
|
6
6
|
Project-URL: Source, https://github.com/alisaifee/coredis
|
|
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
23
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
23
24
|
Requires-Python: >=3.10
|
|
24
25
|
Requires-Dist: async-timeout<6,>4
|
|
@@ -115,7 +116,6 @@ $ pip install coredis
|
|
|
115
116
|
|
|
116
117
|
- [RedisJSON](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisjson)
|
|
117
118
|
- [RediSearch](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisearch)
|
|
118
|
-
- [RedisGraph](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisgraph)
|
|
119
119
|
- [RedisBloom](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisbloom)
|
|
120
120
|
- [RedisTimeSeries](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redistimeseries)
|
|
121
121
|
|
|
@@ -81,7 +81,6 @@ $ pip install coredis
|
|
|
81
81
|
|
|
82
82
|
- [RedisJSON](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisjson)
|
|
83
83
|
- [RediSearch](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisearch)
|
|
84
|
-
- [RedisGraph](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisgraph)
|
|
85
84
|
- [RedisBloom](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redisbloom)
|
|
86
85
|
- [RedisTimeSeries](https://coredis.readthedocs.org/en/latest/handbook/modules.html#redistimeseries)
|
|
87
86
|
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '5.
|
|
32
|
-
__version_tuple__ = version_tuple = (5,
|
|
31
|
+
__version__ = version = '5.3.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (5, 3, 0)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from deprecated.sphinx import versionadded
|
|
3
|
+
from deprecated.sphinx import deprecated, versionadded
|
|
4
4
|
|
|
5
5
|
from coredis.commands import CommandMixin
|
|
6
6
|
from coredis.typing import AnyStr
|
|
@@ -95,6 +95,10 @@ class ModuleMixin(CommandMixin[AnyStr]):
|
|
|
95
95
|
|
|
96
96
|
@property
|
|
97
97
|
@versionadded(version="4.12.0")
|
|
98
|
+
@deprecated(
|
|
99
|
+
"RedisGraph has been discontinued and support for it's commands will be removed in 6.0",
|
|
100
|
+
version="5.2.1",
|
|
101
|
+
)
|
|
98
102
|
def graph(self) -> Graph[AnyStr]:
|
|
99
103
|
"""
|
|
100
104
|
Property to access :class:`~coredis.modules.Graph` commands.
|
|
@@ -43,8 +43,21 @@ from typing import (
|
|
|
43
43
|
runtime_checkable,
|
|
44
44
|
)
|
|
45
45
|
|
|
46
|
+
from beartype import __version__ as beartype_version
|
|
46
47
|
from beartype import beartype
|
|
47
|
-
from
|
|
48
|
+
from packaging import version
|
|
49
|
+
|
|
50
|
+
if TYPE_CHECKING:
|
|
51
|
+
infer_hint: Callable[..., Any]
|
|
52
|
+
is_bearable: Callable[[Any, Any], bool]
|
|
53
|
+
is_subhint: Callable[[Any, Any], bool]
|
|
54
|
+
else:
|
|
55
|
+
if version.parse(beartype_version) < version.parse("0.22"):
|
|
56
|
+
from beartype.door import infer_hint
|
|
57
|
+
else:
|
|
58
|
+
from beartype.bite import infer_hint
|
|
59
|
+
|
|
60
|
+
from beartype.door import is_bearable, is_subhint
|
|
48
61
|
from typing_extensions import (
|
|
49
62
|
NotRequired,
|
|
50
63
|
Self,
|
|
@@ -22,8 +22,6 @@ For example::
|
|
|
22
22
|
await client.cf.reserve("cf", 1000)
|
|
23
23
|
# RedisTimeSeries
|
|
24
24
|
await client.timeseries.add("ts", 1, 1)
|
|
25
|
-
# RedisGraph
|
|
26
|
-
await client.graph.query("graph", "CREATE (:Node {name: 'Node'})")
|
|
27
25
|
|
|
28
26
|
|
|
29
27
|
Module commands can also be used in :ref:`handbook/pipelines:pipelines` (and transactions)
|
|
@@ -401,133 +399,6 @@ Boost the score of a term::
|
|
|
401
399
|
|
|
402
400
|
For more details refer to the API documentation for :class:`~coredis.modules.autocomplete.Autocomplete`
|
|
403
401
|
|
|
404
|
-
RedisGraph
|
|
405
|
-
^^^^^^^^^^
|
|
406
|
-
``RedisGraph`` is a queryable Property Graph database that uses sparse matrices
|
|
407
|
-
to represent the adjacency matrix in graphs and linear algebra to query the graph.
|
|
408
|
-
|
|
409
|
-
To access the commands exposed by the module use the :attr:`~Redis.graph` property
|
|
410
|
-
or manually instantiate the :class:`~modules.Graph` class with an instance of
|
|
411
|
-
:class:`~Redis` or :class:`~RedisCluster`
|
|
412
|
-
|
|
413
|
-
The main interface to the module is the :meth:`~coredis.modules.Graph.query` method
|
|
414
|
-
or :meth:`~coredis.modules.Graph.ro_query` for readonly queries. The response from the method
|
|
415
|
-
is an instance of :class:`~coredis.modules.response.types.GraphQueryResult` which
|
|
416
|
-
follows the described `Result Structure <https://redis.io/docs/stack/graph/design/result_structure/>`__.
|
|
417
|
-
|
|
418
|
-
Specifically:
|
|
419
|
-
|
|
420
|
-
- Scalars are converted to native python types
|
|
421
|
-
- Nodes are converted to instances of :class:`~coredis.modules.response.types.GraphNode`
|
|
422
|
-
- Relations are converted to instances of :class:`~coredis.modules.response.types.GraphRelation`
|
|
423
|
-
- Paths are converted to instances of :class:`~coredis.modules.response.types.GraphPath`
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
Adding nodes & relations
|
|
428
|
-
========================
|
|
429
|
-
|
|
430
|
-
Using the example from the `RedisGraph design documentation <https://redis.io/docs/stack/graph/design/>`__
|
|
431
|
-
we can create a graph with multiple nodes and relationships in one query::
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
import coredis
|
|
435
|
-
client = coredis.Redis(decode_responses=True)
|
|
436
|
-
|
|
437
|
-
results = await client.graph.query(
|
|
438
|
-
"imdb",
|
|
439
|
-
"""
|
|
440
|
-
CREATE (aldis:actor {
|
|
441
|
-
name: "Aldis Hodge", birth_year: 1986
|
|
442
|
-
}),
|
|
443
|
-
(oshea:actor {
|
|
444
|
-
name: "OShea Jackson", birth_year: 1991
|
|
445
|
-
}),
|
|
446
|
-
(corey:actor {
|
|
447
|
-
name: "Corey Hawkins", birth_year: 1988
|
|
448
|
-
}),
|
|
449
|
-
(neil:actor {
|
|
450
|
-
name: "Neil Brown", birth_year: 1980
|
|
451
|
-
}),
|
|
452
|
-
(compton:movie {
|
|
453
|
-
title: "Straight Outta Compton", genre: "Biography", votes: 127258, rating: 7.9, year: 2015
|
|
454
|
-
}),
|
|
455
|
-
(neveregoback:movie {
|
|
456
|
-
title: "Never Go Back", genre: "Action", votes: 15821, rating: 6.4, year: 2016
|
|
457
|
-
}),
|
|
458
|
-
(aldis)-[:act]->(neveregoback),
|
|
459
|
-
(aldis)-[:act]->(compton),
|
|
460
|
-
(oshea)-[:act]->(compton),
|
|
461
|
-
(corey)-[:act]->(compton),
|
|
462
|
-
(neil)-[:act]->(compton)
|
|
463
|
-
"""
|
|
464
|
-
)
|
|
465
|
-
|
|
466
|
-
assert results.stats["Nodes created"] == 6
|
|
467
|
-
assert results.stats["Relationships created"] == 5
|
|
468
|
-
|
|
469
|
-
Querying the graph
|
|
470
|
-
==================
|
|
471
|
-
Using the previous example, let's query for a few scalar properties of the nodes::
|
|
472
|
-
|
|
473
|
-
results = await client.graph.query("imdb", """
|
|
474
|
-
MATCH (a:actor)-[:act]->(m:movie {
|
|
475
|
-
title:"Straight Outta Compton"
|
|
476
|
-
})
|
|
477
|
-
RETURN a.name, m.title
|
|
478
|
-
""")
|
|
479
|
-
assert len(results.result_set) == 4
|
|
480
|
-
assert ['Aldis Hodge', 'Straight Outta Compton'] == results.result_set[0]
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
Perform the same query but this time return the nodes::
|
|
484
|
-
|
|
485
|
-
results = await client.graph.query("imdb", """
|
|
486
|
-
MATCH (a:actor)-[:act]->(m:movie {
|
|
487
|
-
title:"Straight Outta Compton"
|
|
488
|
-
})
|
|
489
|
-
RETURN a, m
|
|
490
|
-
""")
|
|
491
|
-
|
|
492
|
-
assert len(results.result_set) == 4
|
|
493
|
-
actor = results.result_set[0][0]
|
|
494
|
-
movie = results.result_set[0][1]
|
|
495
|
-
|
|
496
|
-
assert actor.properties == {"name": "Aldis Hodge", "birth_year": 1986}
|
|
497
|
-
assert movie.properties == {
|
|
498
|
-
"title": "Straight Outta Compton", "genre": "Biography",
|
|
499
|
-
"votes": 127258, "rating": 7.9, "year": 2015
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
Fetch the entire matching path::
|
|
503
|
-
|
|
504
|
-
results = await client.graph.query("imdb", """
|
|
505
|
-
MATCH p=(a:actor)-[:act]->(m:movie {
|
|
506
|
-
title:"Straight Outta Compton"
|
|
507
|
-
})
|
|
508
|
-
RETURN p
|
|
509
|
-
""")
|
|
510
|
-
path = results.result_set[0][0].path
|
|
511
|
-
assert ["Aldis Hodge", "act", "Straight Outta Compton"] == [
|
|
512
|
-
path[0].properties["name"], # GraphNode: actor
|
|
513
|
-
path[1].type, # GraphRelation: act
|
|
514
|
-
path[2].properties["title"] # GraphNode: movie
|
|
515
|
-
]
|
|
516
|
-
|
|
517
|
-
Perform an aggregation using aggregate functions::
|
|
518
|
-
|
|
519
|
-
results = await client.graph.query("imdb", """
|
|
520
|
-
MATCH (a:actor)-[:act]->(m:movie {
|
|
521
|
-
title:"Straight Outta Compton"
|
|
522
|
-
})
|
|
523
|
-
RETURN m.title, SUM(2020-a.birth_year), MAX(2020-a.birth_year), MIN(2020-a.birth_year), AVG(2020-a.birth_year)
|
|
524
|
-
""")
|
|
525
|
-
assert ['Straight Outta Compton', 135.0, 40, 29, 33.75] == results.result_set[0]
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
For more details about supported commands in the module refer to the API documentation
|
|
529
|
-
for :class:`~coredis.modules.Graph`
|
|
530
|
-
|
|
531
402
|
RedisBloom
|
|
532
403
|
^^^^^^^^^^
|
|
533
404
|
The probabilistic datastructures exposed by ``RedisBloom`` can be accessed
|
|
@@ -34,6 +34,7 @@ classifiers = [
|
|
|
34
34
|
"Programming Language :: Python :: 3.11",
|
|
35
35
|
"Programming Language :: Python :: 3.12",
|
|
36
36
|
"Programming Language :: Python :: 3.13",
|
|
37
|
+
"Programming Language :: Python :: 3.14",
|
|
37
38
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
38
39
|
]
|
|
39
40
|
requires-python = ">=3.10"
|
|
@@ -236,11 +236,11 @@ wheels = [
|
|
|
236
236
|
|
|
237
237
|
[[package]]
|
|
238
238
|
name = "beartype"
|
|
239
|
-
version = "0.
|
|
239
|
+
version = "0.22.2"
|
|
240
240
|
source = { registry = "https://pypi.org/simple" }
|
|
241
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
241
|
+
sdist = { url = "https://files.pythonhosted.org/packages/04/96/43ed27f27127155f24f5cf85df0c27fd2ac2ab67d94cecc8f76933f91679/beartype-0.22.2.tar.gz", hash = "sha256:ff3a7df26af8d15fa87f97934f0f6d41bbdadca971c410819104998dd26013d2", size = 1574491, upload-time = "2025-10-04T06:37:56.451Z" }
|
|
242
242
|
wheels = [
|
|
243
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
243
|
+
{ url = "https://files.pythonhosted.org/packages/96/2a/a4773109619010192e72f48e95165b14790413a51f513c879c8d63f67e17/beartype-0.22.2-py3-none-any.whl", hash = "sha256:12077afe3528eba5c5b801f816712f7ff06f6da5509994c79561e29b48bcedb8", size = 1317280, upload-time = "2025-10-04T06:37:53.99Z" },
|
|
244
244
|
]
|
|
245
245
|
|
|
246
246
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|