redis-lua-py 0.8.0__tar.gz → 0.9.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.
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/workflows/ci.yml +1 -1
- redis_lua_py-0.9.0/.release-please-manifest.json +3 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/CHANGELOG.md +11 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/PKG-INFO +2 -3
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/README.md +1 -1
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/installation.md +7 -4
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/pyproject.toml +5 -2
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/__init__.py +1 -1
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/uv.lock +3 -5
- redis_lua_py-0.8.0/.release-please-manifest.json +0 -3
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/README.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/banner-dark.svg +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/banner-light.svg +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/generate.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/logo.svg +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/logomark.svg +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/social-preview.png +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/assets/social-preview.svg +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/workflows/docs.yml +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/workflows/pr-title.yml +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.github/workflows/release.yml +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.gitignore +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/.python-version +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/CONTRIBUTING.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/LICENSE +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/assets/logo.svg +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/contributing.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/development.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/examples.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/async.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/binary-values.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/binding-a-client.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/build-time.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/calling-redis-commands.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/constants.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/generated-lua.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/keys-and-arguments.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/redis-functions.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/return-values.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/guide/testing.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/index.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/quickstart.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/reference/api.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/reference/errors.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/reference/lua-vs-python.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/reference/supported-subset.md +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/docs/stylesheets/extra.css +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/release-please-config.json +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/scripts/generate_commands.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/__main__.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_commands.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/__init__.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/analysis.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/base.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/calls.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/control.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/expressions.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/helpers.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/scope.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/source.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/statements.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_compile/tables.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_library.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_lua.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_portable.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_runtime.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/_script.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/codegen.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/errors.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/src/redis_lua_py/py.typed +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/codegen_scripts.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/conftest.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/generated_scripts.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/module_with_client.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/module_without_import.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_binary.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_binding.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_booleans_and_conversions.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_codegen.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_commands.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_compile.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_constants.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_control_flow.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_coredis.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_errors.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_execute.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_expressions.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_functions.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_mistranslations.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_namespace.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_semantics.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_strings_and_indexing.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_table_stakes.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/tests/test_typing.py +0 -0
- {redis_lua_py-0.8.0 → redis_lua_py-0.9.0}/zensical.toml +0 -0
|
@@ -54,7 +54,7 @@ jobs:
|
|
|
54
54
|
with:
|
|
55
55
|
enable-cache: true
|
|
56
56
|
- run: uv sync --dev --python 3.10
|
|
57
|
-
# The floor
|
|
57
|
+
# The redis-py floor the docs name is only a claim until something runs on it.
|
|
58
58
|
# fakeredis declares redis>=4.3 but works on 4.2, the first release with
|
|
59
59
|
# redis.asyncio, so the pin goes in after the resolver is done.
|
|
60
60
|
- run: uv pip install --no-deps "redis==4.2.0" async-timeout deprecated packaging
|
|
@@ -7,6 +7,17 @@ are written by [release-please](https://github.com/googleapis/release-please)
|
|
|
7
7
|
from the conventional commit subjects on `main`; see
|
|
8
8
|
[CONTRIBUTING.md](CONTRIBUTING.md) for how a release is cut.
|
|
9
9
|
|
|
10
|
+
## [0.9.0](https://github.com/IgnaceMaes/redis-lua-py/compare/v0.8.0...v0.9.0) (2026-09-13)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* installing redis-lua-py no longer installs redis-py. Add redis-py or coredis to your own dependencies.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
* drop the redis-py dependency ([#26](https://github.com/IgnaceMaes/redis-lua-py/issues/26)) ([e6e40e9](https://github.com/IgnaceMaes/redis-lua-py/commit/e6e40e914afb4043468d9b5b15f970940effcd63))
|
|
20
|
+
|
|
10
21
|
## [0.8.0](https://github.com/IgnaceMaes/redis-lua-py/compare/v0.7.0...v0.8.0) (2026-09-13)
|
|
11
22
|
|
|
12
23
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: redis-lua-py
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
4
4
|
Summary: Write Redis Lua scripts as real Python functions, not strings.
|
|
5
5
|
Project-URL: Homepage, https://ignacemaes.com/redis-lua-py/
|
|
6
6
|
Project-URL: Documentation, https://ignacemaes.com/redis-lua-py/
|
|
@@ -21,7 +21,6 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
21
21
|
Classifier: Topic :: Database
|
|
22
22
|
Classifier: Typing :: Typed
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
|
-
Requires-Dist: redis>=4.2
|
|
25
24
|
Description-Content-Type: text/markdown
|
|
26
25
|
|
|
27
26
|
<p align="center">
|
|
@@ -89,7 +88,7 @@ for the script namespace, so the two never collide.
|
|
|
89
88
|
uv add redis-lua-py
|
|
90
89
|
```
|
|
91
90
|
|
|
92
|
-
Python 3.10+, and redis-py 4.2+
|
|
91
|
+
Python 3.10+, and no dependencies: bring your own client, redis-py 4.2+ or coredis.
|
|
93
92
|
|
|
94
93
|
## What it compiles to
|
|
95
94
|
|
|
@@ -63,7 +63,7 @@ for the script namespace, so the two never collide.
|
|
|
63
63
|
uv add redis-lua-py
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
Python 3.10+, and redis-py 4.2+
|
|
66
|
+
Python 3.10+, and no dependencies: bring your own client, redis-py 4.2+ or coredis.
|
|
67
67
|
|
|
68
68
|
## What it compiles to
|
|
69
69
|
|
|
@@ -13,8 +13,12 @@ pip install redis-lua-py
|
|
|
13
13
|
## Requirements
|
|
14
14
|
|
|
15
15
|
- Python 3.10 or newer
|
|
16
|
-
- [redis-py](https://github.com/redis/redis-py) 4.2 or newer
|
|
17
|
-
|
|
16
|
+
- A Redis client: [redis-py](https://github.com/redis/redis-py) 4.2 or newer,
|
|
17
|
+
or [coredis](https://github.com/alisaifee/coredis)
|
|
18
|
+
|
|
19
|
+
The package has no dependencies of its own. It only calls the client you pass
|
|
20
|
+
it, so it never installs one: add redis-py or coredis yourself, as you would
|
|
21
|
+
to talk to Redis at all.
|
|
18
22
|
|
|
19
23
|
Script caching, `EVALSHA` and the `NOSCRIPT` reload are handled by redis-py's
|
|
20
24
|
own script machinery, which this library defers to rather than reimplementing.
|
|
@@ -22,8 +26,7 @@ Anything redis-py can talk to, this can run against: a standalone server, a
|
|
|
22
26
|
cluster, Sentinel, or an in-process [fakeredis](guide/testing.md).
|
|
23
27
|
|
|
24
28
|
[coredis](https://github.com/alisaifee/coredis) clients work as well, and are
|
|
25
|
-
tested against
|
|
26
|
-
[Async](guide/async.md#coredis).
|
|
29
|
+
tested against. See [Async](guide/async.md#coredis).
|
|
27
30
|
|
|
28
31
|
## For testing
|
|
29
32
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "redis-lua-py"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.9.0"
|
|
4
4
|
description = "Write Redis Lua scripts as real Python functions, not strings."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -19,7 +19,7 @@ classifiers = [
|
|
|
19
19
|
"Topic :: Database",
|
|
20
20
|
"Typing :: Typed",
|
|
21
21
|
]
|
|
22
|
-
dependencies = [
|
|
22
|
+
dependencies = []
|
|
23
23
|
|
|
24
24
|
[project.urls]
|
|
25
25
|
Homepage = "https://ignacemaes.com/redis-lua-py/"
|
|
@@ -33,6 +33,9 @@ redis-lua-py = "redis_lua_py.__main__:main"
|
|
|
33
33
|
|
|
34
34
|
[dependency-groups]
|
|
35
35
|
dev = [
|
|
36
|
+
# The client every test runs through. Not a dependency of the package, which
|
|
37
|
+
# only calls the client it is handed: that client's library is already installed.
|
|
38
|
+
"redis>=4.2",
|
|
36
39
|
"pytest>=8.3",
|
|
37
40
|
"pytest-asyncio>=1.0",
|
|
38
41
|
"fakeredis[lua]>=2.30",
|
|
@@ -774,11 +774,8 @@ wheels = [
|
|
|
774
774
|
|
|
775
775
|
[[package]]
|
|
776
776
|
name = "redis-lua-py"
|
|
777
|
-
version = "0.
|
|
777
|
+
version = "0.8.0"
|
|
778
778
|
source = { editable = "." }
|
|
779
|
-
dependencies = [
|
|
780
|
-
{ name = "redis" },
|
|
781
|
-
]
|
|
782
779
|
|
|
783
780
|
[package.dev-dependencies]
|
|
784
781
|
dev = [
|
|
@@ -787,13 +784,13 @@ dev = [
|
|
|
787
784
|
{ name = "mypy" },
|
|
788
785
|
{ name = "pytest" },
|
|
789
786
|
{ name = "pytest-asyncio" },
|
|
787
|
+
{ name = "redis" },
|
|
790
788
|
{ name = "ruff" },
|
|
791
789
|
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
|
792
790
|
{ name = "zensical" },
|
|
793
791
|
]
|
|
794
792
|
|
|
795
793
|
[package.metadata]
|
|
796
|
-
requires-dist = [{ name = "redis", specifier = ">=4.2" }]
|
|
797
794
|
|
|
798
795
|
[package.metadata.requires-dev]
|
|
799
796
|
dev = [
|
|
@@ -802,6 +799,7 @@ dev = [
|
|
|
802
799
|
{ name = "mypy", specifier = ">=1.15" },
|
|
803
800
|
{ name = "pytest", specifier = ">=8.3" },
|
|
804
801
|
{ name = "pytest-asyncio", specifier = ">=1.0" },
|
|
802
|
+
{ name = "redis", specifier = ">=4.2" },
|
|
805
803
|
{ name = "ruff", specifier = ">=0.16" },
|
|
806
804
|
{ name = "typing-extensions", marker = "python_full_version < '3.11'", specifier = ">=4.2" },
|
|
807
805
|
{ name = "zensical", specifier = ">=0.0.61" },
|
|
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
|