redis-lua-py 0.2.1__tar.gz → 0.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.
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/workflows/ci.yml +16 -1
- redis_lua_py-0.3.0/.release-please-manifest.json +3 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/CHANGELOG.md +7 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/PKG-INFO +5 -4
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/README.md +1 -1
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/installation.md +2 -2
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/pyproject.toml +8 -5
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/__init__.py +1 -1
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/_script.py +4 -3
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/conftest.py +2 -2
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_commands.py +6 -2
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_typing.py +6 -1
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/uv.lock +75 -3
- redis_lua_py-0.2.1/.release-please-manifest.json +0 -3
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/README.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/banner-dark.svg +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/banner-light.svg +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/generate.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/logo.svg +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/logomark.svg +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/social-preview.png +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/assets/social-preview.svg +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/workflows/docs.yml +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/workflows/pr-title.yml +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.github/workflows/release.yml +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.gitignore +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/.python-version +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/CONTRIBUTING.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/LICENSE +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/assets/logo.svg +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/contributing.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/development.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/examples.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/async.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/binary-values.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/binding-a-client.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/calling-redis-commands.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/constants.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/generated-lua.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/keys-and-arguments.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/return-values.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/guide/testing.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/index.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/quickstart.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/reference/api.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/reference/errors.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/reference/lua-vs-python.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/reference/supported-subset.md +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/docs/stylesheets/extra.css +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/release-please-config.json +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/scripts/generate_commands.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/_commands.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/_compile.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/_lua.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/_runtime.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/errors.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/src/redis_lua_py/py.typed +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/module_with_client.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/module_without_import.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_binary.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_binding.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_compile.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_constants.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_errors.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_execute.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_namespace.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/tests/test_semantics.py +0 -0
- {redis_lua_py-0.2.1 → redis_lua_py-0.3.0}/zensical.toml +0 -0
|
@@ -25,7 +25,7 @@ jobs:
|
|
|
25
25
|
strategy:
|
|
26
26
|
fail-fast: false
|
|
27
27
|
matrix:
|
|
28
|
-
python-version: ["3.11", "3.12", "3.13"]
|
|
28
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
29
29
|
steps:
|
|
30
30
|
- uses: actions/checkout@v4
|
|
31
31
|
- uses: astral-sh/setup-uv@v5
|
|
@@ -34,6 +34,21 @@ jobs:
|
|
|
34
34
|
- run: uv sync --dev --python ${{ matrix.python-version }}
|
|
35
35
|
- run: uv run pytest
|
|
36
36
|
|
|
37
|
+
oldest:
|
|
38
|
+
name: Tests (oldest supported Python and redis-py)
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v4
|
|
42
|
+
- uses: astral-sh/setup-uv@v5
|
|
43
|
+
with:
|
|
44
|
+
enable-cache: true
|
|
45
|
+
- run: uv sync --dev --python 3.10
|
|
46
|
+
# The floor in pyproject.toml is only a claim until something runs on it.
|
|
47
|
+
# fakeredis declares redis>=4.3 but works on 4.2, the first release with
|
|
48
|
+
# redis.asyncio, so the pin goes in after the resolver is done.
|
|
49
|
+
- run: uv pip install --no-deps "redis==4.2.0" async-timeout deprecated
|
|
50
|
+
- run: uv run --no-sync pytest
|
|
51
|
+
|
|
37
52
|
live:
|
|
38
53
|
name: Tests against a real Redis
|
|
39
54
|
runs-on: ubuntu-latest
|
|
@@ -7,6 +7,13 @@ 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.3.0](https://github.com/IgnaceMaes/redis-lua-py/compare/v0.2.1...v0.3.0) (2026-09-12)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
* support python 3.10 and redis-py 4.2 ([#6](https://github.com/IgnaceMaes/redis-lua-py/issues/6)) ([6ce6249](https://github.com/IgnaceMaes/redis-lua-py/commit/6ce6249d219756a598e83f18f3bf44e8a58722eb))
|
|
16
|
+
|
|
10
17
|
## [0.2.1](https://github.com/IgnaceMaes/redis-lua-py/compare/v0.2.0...v0.2.1) (2026-09-12)
|
|
11
18
|
|
|
12
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: redis-lua-py
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.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/
|
|
@@ -14,13 +14,14 @@ Keywords: eval,evalsha,lua,redis,scripting,transpiler
|
|
|
14
14
|
Classifier: Development Status :: 3 - Alpha
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
16
16
|
Classifier: Programming Language :: Lua
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
21
|
Classifier: Topic :: Database
|
|
21
22
|
Classifier: Typing :: Typed
|
|
22
|
-
Requires-Python: >=3.
|
|
23
|
-
Requires-Dist: redis>=
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Requires-Dist: redis>=4.2
|
|
24
25
|
Description-Content-Type: text/markdown
|
|
25
26
|
|
|
26
27
|
<p align="center">
|
|
@@ -88,7 +89,7 @@ for the script namespace, so the two never collide.
|
|
|
88
89
|
uv add redis-lua-py
|
|
89
90
|
```
|
|
90
91
|
|
|
91
|
-
Python 3.
|
|
92
|
+
Python 3.10+, and redis-py 4.2+ as the only dependency.
|
|
92
93
|
|
|
93
94
|
## What it compiles to
|
|
94
95
|
|
|
@@ -12,8 +12,8 @@ pip install redis-lua-py
|
|
|
12
12
|
|
|
13
13
|
## Requirements
|
|
14
14
|
|
|
15
|
-
- Python 3.
|
|
16
|
-
- [redis-py](https://github.com/redis/redis-py)
|
|
15
|
+
- Python 3.10 or newer
|
|
16
|
+
- [redis-py](https://github.com/redis/redis-py) 4.2 or newer — the only
|
|
17
17
|
dependency, and installed with the package
|
|
18
18
|
|
|
19
19
|
Script caching, `EVALSHA` and the `NOSCRIPT` reload are handled by redis-py's
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "redis-lua-py"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = "Write Redis Lua scripts as real Python functions, not strings."
|
|
5
5
|
readme = "README.md"
|
|
6
|
-
requires-python = ">=3.
|
|
6
|
+
requires-python = ">=3.10"
|
|
7
7
|
license = "MIT"
|
|
8
8
|
license-files = ["LICENSE"]
|
|
9
9
|
authors = [{ name = "Ignace Maes" }]
|
|
@@ -11,6 +11,7 @@ keywords = ["redis", "lua", "eval", "evalsha", "transpiler", "scripting"]
|
|
|
11
11
|
classifiers = [
|
|
12
12
|
"Development Status :: 3 - Alpha",
|
|
13
13
|
"Intended Audience :: Developers",
|
|
14
|
+
"Programming Language :: Python :: 3.10",
|
|
14
15
|
"Programming Language :: Python :: 3.11",
|
|
15
16
|
"Programming Language :: Python :: 3.12",
|
|
16
17
|
"Programming Language :: Python :: 3.13",
|
|
@@ -18,7 +19,7 @@ classifiers = [
|
|
|
18
19
|
"Topic :: Database",
|
|
19
20
|
"Typing :: Typed",
|
|
20
21
|
]
|
|
21
|
-
dependencies = ["redis>=
|
|
22
|
+
dependencies = ["redis>=4.2"]
|
|
22
23
|
|
|
23
24
|
[project.urls]
|
|
24
25
|
Homepage = "https://ignacemaes.com/redis-lua-py/"
|
|
@@ -35,6 +36,8 @@ dev = [
|
|
|
35
36
|
"ruff>=0.16",
|
|
36
37
|
"mypy>=1.15",
|
|
37
38
|
"zensical>=0.0.61",
|
|
39
|
+
# typing.assert_type, for tests/test_typing.py, arrived in Python 3.11.
|
|
40
|
+
"typing_extensions>=4.2; python_version < '3.11'",
|
|
38
41
|
]
|
|
39
42
|
|
|
40
43
|
[build-system]
|
|
@@ -52,7 +55,7 @@ addopts = "-q"
|
|
|
52
55
|
[tool.ruff]
|
|
53
56
|
src = ["src", "tests"]
|
|
54
57
|
line-length = 100
|
|
55
|
-
target-version = "
|
|
58
|
+
target-version = "py310"
|
|
56
59
|
|
|
57
60
|
[tool.ruff.lint]
|
|
58
61
|
select = ["E", "F", "I", "UP", "B", "SIM", "RUF", "N", "C4", "PT"]
|
|
@@ -68,7 +71,7 @@ select = ["E", "F", "I", "UP", "B", "SIM", "RUF", "N", "C4", "PT"]
|
|
|
68
71
|
"tests/*.py" = ["B007", "F841", "SIM108"]
|
|
69
72
|
|
|
70
73
|
[tool.mypy]
|
|
71
|
-
python_version = "3.
|
|
74
|
+
python_version = "3.10"
|
|
72
75
|
strict = true
|
|
73
76
|
# test_typing.py carries assert_type() claims about what a call returns, which
|
|
74
77
|
# are only worth anything if mypy actually reads them.
|
|
@@ -21,11 +21,12 @@ T = TypeVar("T")
|
|
|
21
21
|
class AsyncClient(Protocol):
|
|
22
22
|
"""Enough of an async redis-py client to tell it from a sync one.
|
|
23
23
|
|
|
24
|
-
Only used to type the two shapes of call. ``
|
|
25
|
-
because every async client has one and no sync client does
|
|
24
|
+
Only used to type the two shapes of call. ``__aenter__`` is the
|
|
25
|
+
discriminator because every async client has one and no sync client does,
|
|
26
|
+
on every supported redis-py -- ``aclose`` only arrived in redis-py 5.
|
|
26
27
|
"""
|
|
27
28
|
|
|
28
|
-
async def
|
|
29
|
+
async def __aenter__(self) -> Any: ... # pragma: no cover - a typing shape
|
|
29
30
|
|
|
30
31
|
def register_script(self, script: str) -> Any: ... # pragma: no cover
|
|
31
32
|
|
|
@@ -46,11 +46,11 @@ async def async_client() -> AsyncIterator[Any]:
|
|
|
46
46
|
conn = redis.asyncio.Redis.from_url(REDIS_URL)
|
|
47
47
|
await conn.flushdb()
|
|
48
48
|
yield conn
|
|
49
|
-
await conn.aclose()
|
|
50
49
|
else:
|
|
51
50
|
conn = fakeredis.aioredis.FakeRedis()
|
|
52
51
|
yield conn
|
|
53
|
-
|
|
52
|
+
# aclose arrived in redis-py 5, and close is deprecated from then on.
|
|
53
|
+
await (conn.aclose() if hasattr(conn, "aclose") else conn.close())
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
@pytest.fixture
|
|
@@ -170,13 +170,14 @@ def test_the_table_matches_the_commands_redis_py_exposes() -> None:
|
|
|
170
170
|
} # fmt: skip
|
|
171
171
|
# Namespaces for module commands, which are spelled with a dot (JSON.GET)
|
|
172
172
|
# and so can only be reached through redis.call anyway.
|
|
173
|
-
modules = {"bf", "cf", "cms", "ft", "json", "tdigest", "topk", "ts", "vset"}
|
|
173
|
+
modules = {"bf", "cf", "cms", "ft", "graph", "json", "tdigest", "topk", "ts", "vset"}
|
|
174
174
|
# Container commands: valid as attributes only with a subcommand.
|
|
175
175
|
containers = {"client", "cluster", "command", "object", "pubsub", "sentinel"}
|
|
176
176
|
# redis-py helpers that are not commands, and STRALGO, gone since Redis 7.
|
|
177
177
|
not_commands = {"keyspace_notifications", "stralgo"}
|
|
178
178
|
expected_failures = modules | containers | not_commands
|
|
179
179
|
|
|
180
|
+
checked = set()
|
|
180
181
|
refused = set()
|
|
181
182
|
for name, member in inspect.getmembers(redis_py.Redis):
|
|
182
183
|
if name.startswith("_") or not callable(member):
|
|
@@ -185,9 +186,12 @@ def test_the_table_matches_the_commands_redis_py_exposes() -> None:
|
|
|
185
186
|
continue
|
|
186
187
|
if name.startswith(("get_", "set_")):
|
|
187
188
|
continue # get_encoder, set_response_callback and friends
|
|
189
|
+
checked.add(name)
|
|
188
190
|
try:
|
|
189
191
|
compiler.command_tokens(node, name) # type: ignore[arg-type]
|
|
190
192
|
except UnsupportedSyntax:
|
|
191
193
|
refused.add(name)
|
|
192
194
|
|
|
193
|
-
|
|
195
|
+
# Each redis-py release exposes a different set of these (graph left, vset
|
|
196
|
+
# arrived), so only the exceptions this one actually has are expected.
|
|
197
|
+
assert refused == expected_failures & checked
|
|
@@ -8,7 +8,7 @@ pyproject.toml, which lists this file alongside ``src``.
|
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
import sys
|
|
12
12
|
|
|
13
13
|
import redis
|
|
14
14
|
import redis.asyncio
|
|
@@ -16,6 +16,11 @@ import redis.asyncio
|
|
|
16
16
|
from redis_lua_py import BoundScript, CompiledScript, Key, script
|
|
17
17
|
from redis_lua_py import redis as r
|
|
18
18
|
|
|
19
|
+
if sys.version_info >= (3, 11):
|
|
20
|
+
from typing import assert_type
|
|
21
|
+
else:
|
|
22
|
+
from typing_extensions import assert_type
|
|
23
|
+
|
|
19
24
|
|
|
20
25
|
@script
|
|
21
26
|
def counter(k: Key) -> int:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
version = 1
|
|
2
2
|
revision = 3
|
|
3
|
-
requires-python = ">=3.
|
|
3
|
+
requires-python = ">=3.10"
|
|
4
4
|
resolution-markers = [
|
|
5
5
|
"python_full_version >= '3.15'",
|
|
6
6
|
"python_full_version < '3.15'",
|
|
@@ -79,6 +79,15 @@ wheels = [
|
|
|
79
79
|
{ url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" },
|
|
80
80
|
]
|
|
81
81
|
|
|
82
|
+
[[package]]
|
|
83
|
+
name = "backports-asyncio-runner"
|
|
84
|
+
version = "1.2.0"
|
|
85
|
+
source = { registry = "https://pypi.org/simple" }
|
|
86
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8e/ff/70dca7d7cb1cbc0edb2c6cc0c38b65cba36cccc491eca64cabd5fe7f8670/backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162", size = 69893, upload-time = "2025-07-02T02:27:15.685Z" }
|
|
87
|
+
wheels = [
|
|
88
|
+
{ url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" },
|
|
89
|
+
]
|
|
90
|
+
|
|
82
91
|
[[package]]
|
|
83
92
|
name = "click"
|
|
84
93
|
version = "8.5.0"
|
|
@@ -106,6 +115,18 @@ wheels = [
|
|
|
106
115
|
{ url = "https://files.pythonhosted.org/packages/20/91/600003aaad107e27553fbc9cbfc57e96fa37e0223d2ef9d7d3a0e8d8d070/deepmerge-3.0.1-py3-none-any.whl", hash = "sha256:35c96f6a68fcf90719a5b31d9f8042ecef6c00fb56836660d33455d0f5cfda65", size = 14909, upload-time = "2026-09-01T14:09:43.364Z" },
|
|
107
116
|
]
|
|
108
117
|
|
|
118
|
+
[[package]]
|
|
119
|
+
name = "exceptiongroup"
|
|
120
|
+
version = "1.3.1"
|
|
121
|
+
source = { registry = "https://pypi.org/simple" }
|
|
122
|
+
dependencies = [
|
|
123
|
+
{ name = "typing-extensions" },
|
|
124
|
+
]
|
|
125
|
+
sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
|
|
126
|
+
wheels = [
|
|
127
|
+
{ url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" },
|
|
128
|
+
]
|
|
129
|
+
|
|
109
130
|
[[package]]
|
|
110
131
|
name = "fakeredis"
|
|
111
132
|
version = "2.38.0"
|
|
@@ -113,6 +134,7 @@ source = { registry = "https://pypi.org/simple" }
|
|
|
113
134
|
dependencies = [
|
|
114
135
|
{ name = "redis" },
|
|
115
136
|
{ name = "sortedcontainers" },
|
|
137
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
|
116
138
|
]
|
|
117
139
|
sdist = { url = "https://files.pythonhosted.org/packages/bf/6b/ad7db311fea3a62f7e359720cc8c064f06f8f0006e65272f50d3a23d37f6/fakeredis-2.38.0.tar.gz", hash = "sha256:d2abfd24652f86501044499bf08c9d639db050f695eefc06b8b8b6f0bb24dbd6", size = 271116, upload-time = "2026-09-08T21:15:04.806Z" }
|
|
118
140
|
wheels = [
|
|
@@ -151,6 +173,20 @@ version = "0.15.0"
|
|
|
151
173
|
source = { registry = "https://pypi.org/simple" }
|
|
152
174
|
sdist = { url = "https://files.pythonhosted.org/packages/36/9b/356320fbae2ac8467e21c5e73e1389c80468e4998c62cc7d3536cc51b614/librt-0.15.0.tar.gz", hash = "sha256:4e66cbe84437497d951b799d3e1551291b6fb3d643820a7014b3655d57a59162", size = 214338, upload-time = "2026-08-07T10:49:42.663Z" }
|
|
153
175
|
wheels = [
|
|
176
|
+
{ url = "https://files.pythonhosted.org/packages/48/12/e2e9ca532cf5a0e08c9489826c4a35c6958c92ba0313fda70e8c6c3912be/librt-0.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e1a49adf16a7c9d9646816c2946135527197b6fcf4347c7b8b761cf1bfbf4489", size = 148673, upload-time = "2026-08-07T10:46:22.569Z" },
|
|
177
|
+
{ url = "https://files.pythonhosted.org/packages/6d/7c/02005e23478bd5950618d9712e0fd2b4c511657857f3efd8ba6a5feabcdd/librt-0.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81a398f45b45a59200e13cd5ad1ae1d3f44334de98b148331afe2cdfee701c52", size = 153547, upload-time = "2026-08-07T10:46:23.931Z" },
|
|
178
|
+
{ url = "https://files.pythonhosted.org/packages/a0/90/d8848a735f5642077fc4b3b4bebcdb08edf10178e3add45597f5201a368f/librt-0.15.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4eafbaff06b9563f8b1c850621ce51605de05208e09d4d71ce490bc972b7b9e8", size = 494355, upload-time = "2026-08-07T10:46:25.122Z" },
|
|
179
|
+
{ url = "https://files.pythonhosted.org/packages/e1/0b/8604f41ea02feace490e9e405a338a15f9905369f55b239a9ce31c946f24/librt-0.15.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:b0411b4066db926b80258c60dcb0e6db4c9cee312eab45b7e8866b17ddf9ada1", size = 485459, upload-time = "2026-08-07T10:46:26.447Z" },
|
|
180
|
+
{ url = "https://files.pythonhosted.org/packages/a0/ac/84153bda1ce0da609182527ab92b40d961809e544eefdc5a1c2422971416/librt-0.15.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:febb1ce6cac545a54e6b769982824e955a700fdd9fbf3a08a3d82c990968b57d", size = 498398, upload-time = "2026-08-07T10:46:27.701Z" },
|
|
181
|
+
{ url = "https://files.pythonhosted.org/packages/2c/3a/5ca6cd282b2c244bec8ec84102e09773264e9c02891d56ab3a8f0e4d7083/librt-0.15.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b230acc1c3bfe2d6f2627ba2b95dc92e58aa494600e9722d0e6ccbc931e59702", size = 515474, upload-time = "2026-08-07T10:46:28.9Z" },
|
|
182
|
+
{ url = "https://files.pythonhosted.org/packages/73/d3/bd34110234779eb843c6ed66aba7c9b2091d3dd85989f1fb9922f564cb7a/librt-0.15.0-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6da110e5f314c19ab8478464d02ae18808ae73d522c15260fa4918acdcd64da9", size = 509484, upload-time = "2026-08-07T10:46:30.124Z" },
|
|
183
|
+
{ url = "https://files.pythonhosted.org/packages/1b/6c/43c3f7f071d71631a7daa3b835ef2168ea39f20692d81464d4e47fbaa6d6/librt-0.15.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:eab9208b00ca55bf75983ec99f7bf13acc746a36102e98953addaad7f7ea1e1b", size = 532534, upload-time = "2026-08-07T10:46:31.511Z" },
|
|
184
|
+
{ url = "https://files.pythonhosted.org/packages/c5/1c/b854adf036ea817c40408873a5b794d65a91d9f0f39826f2ad2a2d5d7f48/librt-0.15.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6c013cd3a1721e69e14380ada97eaa4b7b0cdf1c6b96fa765d4ea47c875088db", size = 537087, upload-time = "2026-08-07T10:46:32.734Z" },
|
|
185
|
+
{ url = "https://files.pythonhosted.org/packages/25/5c/c9a890e244e7dd725d3bd8b560e41f0aec787eaf343b46956a290ab7b841/librt-0.15.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:567b1c430f8bd560e689421468278ac5941bab4a05303b5d95b6ae10db03f451", size = 536575, upload-time = "2026-08-07T10:46:33.965Z" },
|
|
186
|
+
{ url = "https://files.pythonhosted.org/packages/5f/c5/c8e70b60b704299555f55db468eb46b1c81bfc60201ffbfe20407d89870c/librt-0.15.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:29c4cab9df457b19672c39be7f384ebb2bc925c4e2684b8780c222b43eb36389", size = 517142, upload-time = "2026-08-07T10:46:35.577Z" },
|
|
187
|
+
{ url = "https://files.pythonhosted.org/packages/56/d1/767a90c41f5d381b3195bc88ac0ec4afda35777c9c781e1f9848fedd965e/librt-0.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bccbd8e5b0bffb7106cf18eb1baa3d7194b1cebb3b4b1cdbd4bdb19382a6ee6c", size = 558714, upload-time = "2026-08-07T10:46:36.829Z" },
|
|
188
|
+
{ url = "https://files.pythonhosted.org/packages/f9/b4/3c0624b8dc8301ab808f2b3a910995bcabe28df070fb9a0e5505ae997dae/librt-0.15.0-cp310-cp310-win32.whl", hash = "sha256:8ae493ed5f659a7761c43d42f183db514536073ded9bcf671d2d1df47e29a07e", size = 104426, upload-time = "2026-08-07T10:46:38.594Z" },
|
|
189
|
+
{ url = "https://files.pythonhosted.org/packages/31/98/e91c0382304bedb2db9c6801897319a9dcb68daac5e975819b562362f20d/librt-0.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc25fb356d0c7810bb49ff3df908ad1fda6995d660ab099ded69244ed7ab6053", size = 125057, upload-time = "2026-08-07T10:46:40.052Z" },
|
|
154
190
|
{ url = "https://files.pythonhosted.org/packages/59/52/06790ced2ac7117f890c21bda43c39c958ec82aa665c0718e821d33ff939/librt-0.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:823b92cf3c18ecd08afc70c42473888b41b6e8ef5046f3b82c05c154a2fa3d22", size = 148039, upload-time = "2026-08-07T10:46:41.165Z" },
|
|
155
191
|
{ url = "https://files.pythonhosted.org/packages/e7/1d/8e150b7fc449a1f33c8a760965cc1f43b14fc1577d9d0b50ab2701420e74/librt-0.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70bc1b602cf59917e8f0c7a2cbc8bcc6fbc14d5486136b00707a79619121d63", size = 153067, upload-time = "2026-08-07T10:46:42.418Z" },
|
|
156
192
|
{ url = "https://files.pythonhosted.org/packages/51/87/a162bc5a66a35599dc619ecb215145f4de7d68e886b479b6d12593139f7c/librt-0.15.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:814ff83a25b5fce8b9c80c4dd803153fb5c5599fc74db9e022466938368957ef", size = 493087, upload-time = "2026-08-07T10:46:43.657Z" },
|
|
@@ -269,6 +305,10 @@ sdist = { url = "https://files.pythonhosted.org/packages/c3/a6/0f869fbb07c393f15
|
|
|
269
305
|
wheels = [
|
|
270
306
|
{ url = "https://files.pythonhosted.org/packages/09/21/9be4516ddd22f8eadba336d9ba065d17d79108465ae1b7f71424ab99b9d0/lupa-2.8-cp310-abi3-win32.whl", hash = "sha256:c2a5fd15dc62374e1661a55f01744c9ec1c56f291ba4a0749d3af2174556e78f", size = 1594887, upload-time = "2026-04-15T20:05:23.377Z" },
|
|
271
307
|
{ url = "https://files.pythonhosted.org/packages/2d/99/1557c9685d7034d9ce8dd2b54c40a26d6deb7c67c1fdb5c801abd1a02c3f/lupa-2.8-cp310-abi3-win_arm64.whl", hash = "sha256:9e304fb1c50cf23fd8882afbe1aa87525ef8a72667bcab3b37b2bbb2bc542269", size = 1371742, upload-time = "2026-04-15T20:05:27.417Z" },
|
|
308
|
+
{ url = "https://files.pythonhosted.org/packages/1c/34/05ce4745b191633f90ff1ab50f1a19a37da282bb0a41fb500d9157fc9b8f/lupa-2.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:97bd01e90b8031e56a5fd5bb70605aea09f1dba675c1140308a52780f93d06f1", size = 1202714, upload-time = "2026-04-15T20:05:31.088Z" },
|
|
309
|
+
{ url = "https://files.pythonhosted.org/packages/7d/d2/f70fdbeec2d4c69ee6a469e6cddde9635fff4af4e13fb652e6a1229eef51/lupa-2.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b5ebe1a13c45767919c86750b84fe2da9f6288b6f3cea4ce7660bb2abc9d921", size = 1857453, upload-time = "2026-04-15T20:05:34.611Z" },
|
|
310
|
+
{ url = "https://files.pythonhosted.org/packages/97/dc/6fcda0e36e75eb6cb98dc9190fa4737d727eeae29e58f892980b2c96b656/lupa-2.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:097e7d0f1719a88020b67c82e05d53d7973c166952393afcecfd8434c7e19a15", size = 2408890, upload-time = "2026-04-15T20:05:37.994Z" },
|
|
311
|
+
{ url = "https://files.pythonhosted.org/packages/58/29/7ea176eac3c1dac83d059762daa875ad1390decc0bf2c3b4c7bbfc1f1665/lupa-2.8-cp310-cp310-win_amd64.whl", hash = "sha256:7bb223ee8f72d0dc076b0d65296ee72f1c69450f9d2fed5315f7707d98c4a03d", size = 1910396, upload-time = "2026-04-15T20:05:41.163Z" },
|
|
272
312
|
{ url = "https://files.pythonhosted.org/packages/b7/0a/5a740717f27aa77481e6a61b97cf79d1e0c1ede729b1268caacded915326/lupa-2.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b12e43c1fb787189dfc28cd604aef0baa2cb95e27da19498d520361d0ace070a", size = 1202376, upload-time = "2026-04-15T20:05:44.049Z" },
|
|
273
313
|
{ url = "https://files.pythonhosted.org/packages/1b/75/6b64d0098c64275a801896cb7a6a30e7e653d25fa102c64e747292afcdbb/lupa-2.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f6f603391dffb256e36a79fd2044084d5f4b8a0a4c0e5ad291cd3ab3aaf1fd0a", size = 1839271, upload-time = "2026-04-15T20:05:47.399Z" },
|
|
274
314
|
{ url = "https://files.pythonhosted.org/packages/7b/2f/0d4f00563046ff616ef6a421f8b776a5ffb327f7b32ed69e856d52b917a8/lupa-2.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9f6f41c91366e7d0d474f87d81c1274af861f40812bf729c9f97ab4c8f3c7ac8", size = 2376251, upload-time = "2026-04-15T20:05:49.891Z" },
|
|
@@ -335,6 +375,17 @@ version = "3.0.3"
|
|
|
335
375
|
source = { registry = "https://pypi.org/simple" }
|
|
336
376
|
sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" }
|
|
337
377
|
wheels = [
|
|
378
|
+
{ url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" },
|
|
379
|
+
{ url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" },
|
|
380
|
+
{ url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" },
|
|
381
|
+
{ url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" },
|
|
382
|
+
{ url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" },
|
|
383
|
+
{ url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" },
|
|
384
|
+
{ url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" },
|
|
385
|
+
{ url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" },
|
|
386
|
+
{ url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" },
|
|
387
|
+
{ url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" },
|
|
388
|
+
{ url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" },
|
|
338
389
|
{ url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" },
|
|
339
390
|
{ url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" },
|
|
340
391
|
{ url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" },
|
|
@@ -412,10 +463,17 @@ dependencies = [
|
|
|
412
463
|
{ name = "librt", marker = "platform_python_implementation != 'PyPy'" },
|
|
413
464
|
{ name = "mypy-extensions" },
|
|
414
465
|
{ name = "pathspec" },
|
|
466
|
+
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
415
467
|
{ name = "typing-extensions" },
|
|
416
468
|
]
|
|
417
469
|
sdist = { url = "https://files.pythonhosted.org/packages/82/6a/878cc1097d4035f82bd516658d0c528d2a9955bc7b363afcbd0b07fea11b/mypy-2.3.1.tar.gz", hash = "sha256:47c1b1207258513a9d93495f69c8be9de73916186f0e52703e8c461b7a623419", size = 3992554, upload-time = "2026-08-15T03:03:38.549Z" }
|
|
418
470
|
wheels = [
|
|
471
|
+
{ url = "https://files.pythonhosted.org/packages/eb/b9/de8f67e12d721cdcc8ba6cfc440b989a4ba4dfabe4402ae94dfdd8bb30a4/mypy-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:57a936373fc690c43a8cd7e7e12a35148e4ec5aa7698ad7fc0a9f918bdc5be41", size = 14015541, upload-time = "2026-08-15T03:01:53.104Z" },
|
|
472
|
+
{ url = "https://files.pythonhosted.org/packages/f1/8a/9e746ab012c67ed8ea3232a613716c306ee8c0b5682c80d8103b4f04568e/mypy-2.3.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d00d769056bde2f4e69c175071eba45cfb44fa1ed92bdfbfe64a93e0543b0cf0", size = 14248142, upload-time = "2026-08-15T03:02:43.201Z" },
|
|
473
|
+
{ url = "https://files.pythonhosted.org/packages/f7/5c/c99ff2d8d0e2c53393e32dfe22d9aa43a5d959d30db46c786dafd24527d3/mypy-2.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2166b29228835e1f88ff411e96639e6ca3c7fdde84b62ec211f70f86b4051167", size = 15193309, upload-time = "2026-08-15T03:01:28.714Z" },
|
|
474
|
+
{ url = "https://files.pythonhosted.org/packages/64/39/124638f745243faae1ff4b37d5426fe41c0f0454535edc82fe8102b56a3c/mypy-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:83d36c2924df7426333abe7faf4724a7e1aab0d9fd41625e81b4683034b80c13", size = 15498246, upload-time = "2026-08-15T03:02:46.29Z" },
|
|
475
|
+
{ url = "https://files.pythonhosted.org/packages/b2/83/31c0781e243836505c0fb5f4e865487d6df1023e4ad959f4ebd4b84a0226/mypy-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:f12fdb70459d0060dea40b29e52163a961b156106d68d57882a6a9f648983a53", size = 11155028, upload-time = "2026-08-15T03:01:39.08Z" },
|
|
476
|
+
{ url = "https://files.pythonhosted.org/packages/a0/ab/bc2eb0129e72d7d7d93d5e981a78084a9abefda7efa732a7e02f97d6e27d/mypy-2.3.1-cp310-cp310-win_arm64.whl", hash = "sha256:e099200a1b1b1223a4951f0a90cbff1b8c91b250ba599dab1f7217a628144d90", size = 10151438, upload-time = "2026-08-15T03:02:19.04Z" },
|
|
419
477
|
{ url = "https://files.pythonhosted.org/packages/a4/be/c624d4241484f37dc62839e177ab607a9b8b3e96f0866544ca99e8e41d51/mypy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94f04929f1c44c35fb0061e912087edaf504acede963a4a7d00680bd089d8531", size = 13936739, upload-time = "2026-08-15T03:03:26.475Z" },
|
|
420
478
|
{ url = "https://files.pythonhosted.org/packages/53/84/e3cf72f90dce5960871c82551c8fba6da05fc1018f79be41c047bd126bdd/mypy-2.3.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5d716048611e85ca9eefb2e1baa5d73ede389b5820ded260ea27c757d667af8", size = 14166460, upload-time = "2026-08-15T03:01:50.565Z" },
|
|
421
479
|
{ url = "https://files.pythonhosted.org/packages/4a/ff/6b97d58aa0f79a5ab9b472db1f6d6df1b11a51d74d0c08ab3760d3a613ba/mypy-2.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b091a455111214cb5c9d54a57b9618e9a49f9fe2a42e4e1ac86e9d104ed96ce8", size = 15100476, upload-time = "2026-08-15T03:03:12.079Z" },
|
|
@@ -527,10 +585,12 @@ version = "9.1.1"
|
|
|
527
585
|
source = { registry = "https://pypi.org/simple" }
|
|
528
586
|
dependencies = [
|
|
529
587
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
588
|
+
{ name = "exceptiongroup", marker = "python_full_version < '3.11'" },
|
|
530
589
|
{ name = "iniconfig" },
|
|
531
590
|
{ name = "packaging" },
|
|
532
591
|
{ name = "pluggy" },
|
|
533
592
|
{ name = "pygments" },
|
|
593
|
+
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
534
594
|
]
|
|
535
595
|
sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
|
|
536
596
|
wheels = [
|
|
@@ -542,6 +602,7 @@ name = "pytest-asyncio"
|
|
|
542
602
|
version = "1.4.0"
|
|
543
603
|
source = { registry = "https://pypi.org/simple" }
|
|
544
604
|
dependencies = [
|
|
605
|
+
{ name = "backports-asyncio-runner", marker = "python_full_version < '3.11'" },
|
|
545
606
|
{ name = "pytest" },
|
|
546
607
|
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
547
608
|
]
|
|
@@ -556,6 +617,15 @@ version = "6.0.3"
|
|
|
556
617
|
source = { registry = "https://pypi.org/simple" }
|
|
557
618
|
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
|
|
558
619
|
wheels = [
|
|
620
|
+
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
|
|
621
|
+
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
|
|
622
|
+
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
|
|
623
|
+
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
|
|
624
|
+
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
|
|
625
|
+
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
|
|
626
|
+
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
|
|
627
|
+
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
|
|
628
|
+
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
|
|
559
629
|
{ url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" },
|
|
560
630
|
{ url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" },
|
|
561
631
|
{ url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" },
|
|
@@ -619,7 +689,7 @@ wheels = [
|
|
|
619
689
|
|
|
620
690
|
[[package]]
|
|
621
691
|
name = "redis-lua-py"
|
|
622
|
-
version = "0.2.
|
|
692
|
+
version = "0.2.1"
|
|
623
693
|
source = { editable = "." }
|
|
624
694
|
dependencies = [
|
|
625
695
|
{ name = "redis" },
|
|
@@ -632,11 +702,12 @@ dev = [
|
|
|
632
702
|
{ name = "pytest" },
|
|
633
703
|
{ name = "pytest-asyncio" },
|
|
634
704
|
{ name = "ruff" },
|
|
705
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
|
|
635
706
|
{ name = "zensical" },
|
|
636
707
|
]
|
|
637
708
|
|
|
638
709
|
[package.metadata]
|
|
639
|
-
requires-dist = [{ name = "redis", specifier = ">=
|
|
710
|
+
requires-dist = [{ name = "redis", specifier = ">=4.2" }]
|
|
640
711
|
|
|
641
712
|
[package.metadata.requires-dev]
|
|
642
713
|
dev = [
|
|
@@ -645,6 +716,7 @@ dev = [
|
|
|
645
716
|
{ name = "pytest", specifier = ">=8.3" },
|
|
646
717
|
{ name = "pytest-asyncio", specifier = ">=1.0" },
|
|
647
718
|
{ name = "ruff", specifier = ">=0.16" },
|
|
719
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.11'", specifier = ">=4.2" },
|
|
648
720
|
{ name = "zensical", specifier = ">=0.0.61" },
|
|
649
721
|
]
|
|
650
722
|
|
|
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
|