coredis 4.23.0__tar.gz → 4.24.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.
Files changed (111) hide show
  1. {coredis-4.23.0 → coredis-4.24.0}/HISTORY.rst +19 -0
  2. {coredis-4.23.0/coredis.egg-info → coredis-4.24.0}/PKG-INFO +1 -1
  3. {coredis-4.23.0 → coredis-4.24.0}/coredis/_version.py +3 -3
  4. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/function.py +10 -5
  5. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/pubsub.py +1 -3
  6. {coredis-4.23.0 → coredis-4.24.0/coredis.egg-info}/PKG-INFO +1 -1
  7. {coredis-4.23.0 → coredis-4.24.0}/LICENSE +0 -0
  8. {coredis-4.23.0 → coredis-4.24.0}/MANIFEST.in +0 -0
  9. {coredis-4.23.0 → coredis-4.24.0}/README.md +0 -0
  10. {coredis-4.23.0 → coredis-4.24.0}/coredis/__init__.py +0 -0
  11. {coredis-4.23.0 → coredis-4.24.0}/coredis/_json.py +0 -0
  12. {coredis-4.23.0 → coredis-4.24.0}/coredis/_packer.py +0 -0
  13. {coredis-4.23.0 → coredis-4.24.0}/coredis/_protocols.py +0 -0
  14. {coredis-4.23.0 → coredis-4.24.0}/coredis/_sidecar.py +0 -0
  15. {coredis-4.23.0 → coredis-4.24.0}/coredis/_utils.py +0 -0
  16. {coredis-4.23.0 → coredis-4.24.0}/coredis/cache.py +0 -0
  17. {coredis-4.23.0 → coredis-4.24.0}/coredis/client/__init__.py +0 -0
  18. {coredis-4.23.0 → coredis-4.24.0}/coredis/client/basic.py +0 -0
  19. {coredis-4.23.0 → coredis-4.24.0}/coredis/client/cluster.py +0 -0
  20. {coredis-4.23.0 → coredis-4.24.0}/coredis/client/keydb.py +0 -0
  21. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/__init__.py +0 -0
  22. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/_key_spec.py +0 -0
  23. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/_utils.py +0 -0
  24. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/_validators.py +0 -0
  25. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/_wrappers.py +0 -0
  26. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/bitfield.py +0 -0
  27. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/constants.py +0 -0
  28. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/core.py +0 -0
  29. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/monitor.py +0 -0
  30. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/script.py +0 -0
  31. {coredis-4.23.0 → coredis-4.24.0}/coredis/commands/sentinel.py +0 -0
  32. {coredis-4.23.0 → coredis-4.24.0}/coredis/config.py +0 -0
  33. {coredis-4.23.0 → coredis-4.24.0}/coredis/connection.py +0 -0
  34. {coredis-4.23.0 → coredis-4.24.0}/coredis/constants.py +0 -0
  35. {coredis-4.23.0 → coredis-4.24.0}/coredis/credentials.py +0 -0
  36. {coredis-4.23.0 → coredis-4.24.0}/coredis/exceptions.py +0 -0
  37. {coredis-4.23.0 → coredis-4.24.0}/coredis/experimental/__init__.py +0 -0
  38. {coredis-4.23.0 → coredis-4.24.0}/coredis/globals.py +0 -0
  39. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/__init__.py +0 -0
  40. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/autocomplete.py +0 -0
  41. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/base.py +0 -0
  42. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/filters.py +0 -0
  43. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/graph.py +0 -0
  44. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/json.py +0 -0
  45. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/__init__.py +0 -0
  46. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/_callbacks/__init__.py +0 -0
  47. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/_callbacks/autocomplete.py +0 -0
  48. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/_callbacks/graph.py +0 -0
  49. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/_callbacks/json.py +0 -0
  50. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/_callbacks/search.py +0 -0
  51. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/_callbacks/timeseries.py +0 -0
  52. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/response/types.py +0 -0
  53. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/search.py +0 -0
  54. {coredis-4.23.0 → coredis-4.24.0}/coredis/modules/timeseries.py +0 -0
  55. {coredis-4.23.0 → coredis-4.24.0}/coredis/parser.py +0 -0
  56. {coredis-4.23.0 → coredis-4.24.0}/coredis/pipeline.py +0 -0
  57. {coredis-4.23.0 → coredis-4.24.0}/coredis/pipeline.pyi +0 -0
  58. {coredis-4.23.0 → coredis-4.24.0}/coredis/pool/__init__.py +0 -0
  59. {coredis-4.23.0 → coredis-4.24.0}/coredis/pool/basic.py +0 -0
  60. {coredis-4.23.0 → coredis-4.24.0}/coredis/pool/cluster.py +0 -0
  61. {coredis-4.23.0 → coredis-4.24.0}/coredis/pool/nodemanager.py +0 -0
  62. {coredis-4.23.0 → coredis-4.24.0}/coredis/py.typed +0 -0
  63. {coredis-4.23.0 → coredis-4.24.0}/coredis/recipes/__init__.py +0 -0
  64. {coredis-4.23.0 → coredis-4.24.0}/coredis/recipes/credentials/__init__.py +0 -0
  65. {coredis-4.23.0 → coredis-4.24.0}/coredis/recipes/credentials/iam_provider.py +0 -0
  66. {coredis-4.23.0 → coredis-4.24.0}/coredis/recipes/locks/__init__.py +0 -0
  67. {coredis-4.23.0 → coredis-4.24.0}/coredis/recipes/locks/extend.lua +0 -0
  68. {coredis-4.23.0 → coredis-4.24.0}/coredis/recipes/locks/lua_lock.py +0 -0
  69. {coredis-4.23.0 → coredis-4.24.0}/coredis/recipes/locks/release.lua +0 -0
  70. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/__init__.py +0 -0
  71. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/__init__.py +0 -0
  72. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/acl.py +0 -0
  73. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/cluster.py +0 -0
  74. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/command.py +0 -0
  75. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/connection.py +0 -0
  76. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/geo.py +0 -0
  77. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/hash.py +0 -0
  78. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/keys.py +0 -0
  79. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/module.py +0 -0
  80. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/script.py +0 -0
  81. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/sentinel.py +0 -0
  82. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/server.py +0 -0
  83. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/sets.py +0 -0
  84. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/sorted_set.py +0 -0
  85. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/streams.py +0 -0
  86. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_callbacks/strings.py +0 -0
  87. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/_utils.py +0 -0
  88. {coredis-4.23.0 → coredis-4.24.0}/coredis/response/types.py +0 -0
  89. {coredis-4.23.0 → coredis-4.24.0}/coredis/retry.py +0 -0
  90. {coredis-4.23.0 → coredis-4.24.0}/coredis/sentinel.py +0 -0
  91. {coredis-4.23.0 → coredis-4.24.0}/coredis/speedups.c +0 -0
  92. {coredis-4.23.0 → coredis-4.24.0}/coredis/speedups.pyi +0 -0
  93. {coredis-4.23.0 → coredis-4.24.0}/coredis/stream.py +0 -0
  94. {coredis-4.23.0 → coredis-4.24.0}/coredis/tokens.py +0 -0
  95. {coredis-4.23.0 → coredis-4.24.0}/coredis/typing.py +0 -0
  96. {coredis-4.23.0 → coredis-4.24.0}/coredis.egg-info/SOURCES.txt +0 -0
  97. {coredis-4.23.0 → coredis-4.24.0}/coredis.egg-info/dependency_links.txt +0 -0
  98. {coredis-4.23.0 → coredis-4.24.0}/coredis.egg-info/requires.txt +0 -0
  99. {coredis-4.23.0 → coredis-4.24.0}/coredis.egg-info/top_level.txt +0 -0
  100. {coredis-4.23.0 → coredis-4.24.0}/pyproject.toml +0 -0
  101. {coredis-4.23.0 → coredis-4.24.0}/requirements/ci.txt +0 -0
  102. {coredis-4.23.0 → coredis-4.24.0}/requirements/dev.txt +0 -0
  103. {coredis-4.23.0 → coredis-4.24.0}/requirements/dev_extra.txt +0 -0
  104. {coredis-4.23.0 → coredis-4.24.0}/requirements/docs.txt +0 -0
  105. {coredis-4.23.0 → coredis-4.24.0}/requirements/main.txt +0 -0
  106. {coredis-4.23.0 → coredis-4.24.0}/requirements/publishing.txt +0 -0
  107. {coredis-4.23.0 → coredis-4.24.0}/requirements/recipes.txt +0 -0
  108. {coredis-4.23.0 → coredis-4.24.0}/requirements/test.txt +0 -0
  109. {coredis-4.23.0 → coredis-4.24.0}/setup.cfg +0 -0
  110. {coredis-4.23.0 → coredis-4.24.0}/setup.py +0 -0
  111. {coredis-4.23.0 → coredis-4.24.0}/versioneer.py +0 -0
@@ -3,6 +3,23 @@
3
3
  Changelog
4
4
  =========
5
5
 
6
+ v4.24.0
7
+ -------
8
+ Release Date: 2025-07-05
9
+
10
+ * Bug Fix
11
+
12
+ * Add support for using library functions with pipelines
13
+
14
+ v4.23.1
15
+ -------
16
+ Release Date: 2025-06-20
17
+
18
+ * Bug Fix
19
+
20
+ * Ensure pubsub consumer task cleanly exists when the pubsub instance
21
+ has been shutdown with `close` or `aclose`
22
+
6
23
  v4.23.0
7
24
  -------
8
25
  Release Date: 2025-06-19
@@ -1920,3 +1937,5 @@ v1.0.1
1920
1937
 
1921
1938
 
1922
1939
 
1940
+
1941
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coredis
3
- Version: 4.23.0
3
+ Version: 4.24.0
4
4
  Summary: Python async client for Redis key-value store
5
5
  Home-page: https://github.com/alisaifee/coredis
6
6
  Author: Ali-Akber Saifee
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-06-19T13:09:05-0700",
11
+ "date": "2025-07-05T19:34:23-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "2f1b0b89355868af2643bb31987f786f70e15752",
15
- "version": "4.23.0"
14
+ "full-revisionid": "cd4583e1ad0eb6d8ca23e80203ab230efe1e3b2e",
15
+ "version": "4.24.0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -107,11 +107,17 @@ class Library(Generic[AnyStr]):
107
107
  return False
108
108
 
109
109
  async def initialize(self: LibraryT, replace: bool = False) -> LibraryT:
110
+ from coredis.pipeline import ClusterPipelineImpl, PipelineImpl # type: ignore
111
+
110
112
  self._functions.clear()
111
- library = (await self.client.function_list(self.name)).get(self.name)
113
+ if isinstance(self.client, (PipelineImpl, ClusterPipelineImpl)):
114
+ redis_client = self.client.client
115
+ else:
116
+ redis_client = self.client
117
+ library = (await redis_client.function_list(self.name)).get(self.name)
112
118
  if (not library and self.code) or (replace or self.replace):
113
- await self.client.function_load(self.code, replace=replace or self.replace)
114
- library = (await self.client.function_list(self.name)).get(self.name)
119
+ await redis_client.function_load(self.code, replace=replace or self.replace)
120
+ library = (await redis_client.function_list(self.name)).get(self.name)
115
121
 
116
122
  if not library:
117
123
  raise FunctionError(f"No library found for {self.name}")
@@ -320,8 +326,7 @@ class Library(Generic[AnyStr]):
320
326
  @functools.wraps(func)
321
327
  async def _inner(*args: P.args, **kwargs: P.kwargs) -> R:
322
328
  instance, keys, arguments = split_args(*args, **kwargs)
323
- func = instance.functions[function_name]
324
- if not func:
329
+ if (func := instance.functions.get(function_name, None)) is None:
325
330
  raise AttributeError(
326
331
  f"Library {instance.name} has no registered function {function_name}"
327
332
  )
@@ -479,7 +479,7 @@ class BasePubSub(Generic[AnyStr, PoolT]):
479
479
  return thread
480
480
 
481
481
  async def _consumer(self) -> None:
482
- while True:
482
+ while self.initialized:
483
483
  try:
484
484
  if self.subscribed:
485
485
  if response := await self._retry_policy.call_with_retries(
@@ -489,8 +489,6 @@ class BasePubSub(Generic[AnyStr, PoolT]):
489
489
  self._message_queue.put_nowait(await self.handle_message(response))
490
490
  else:
491
491
  await self._subscribed.wait()
492
- except asyncio.CancelledError:
493
- break
494
492
  except ConnectionError:
495
493
  await asyncio.sleep(0)
496
494
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coredis
3
- Version: 4.23.0
3
+ Version: 4.24.0
4
4
  Summary: Python async client for Redis key-value store
5
5
  Home-page: https://github.com/alisaifee/coredis
6
6
  Author: Ali-Akber Saifee
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