ez-a-sync 0.24.4__tar.gz → 0.24.5__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 ez-a-sync might be problematic. Click here for more details.

Files changed (165) hide show
  1. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/PKG-INFO +1 -1
  2. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_debug.c +156 -86
  3. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_debug.pxd +1 -0
  4. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_debug.pyx +3 -0
  5. ez_a_sync-0.24.5/a_sync/primitives/locks/__init__.pxd +8 -0
  6. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/counter.c +27 -49
  7. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/counter.pyx +1 -1
  8. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/event.c +36 -58
  9. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/event.pyx +1 -1
  10. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/prio_semaphore.c +1225 -1239
  11. ez_a_sync-0.24.5/a_sync/primitives/locks/prio_semaphore.pxd +24 -0
  12. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/prio_semaphore.pyx +2 -33
  13. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/semaphore.c +238 -260
  14. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/semaphore.pxd +8 -1
  15. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/semaphore.pyx +5 -8
  16. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/task.c +337 -6
  17. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/ez_a_sync.egg-info/PKG-INFO +1 -1
  18. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/ez_a_sync.egg-info/SOURCES.txt +1 -0
  19. ez_a_sync-0.24.4/a_sync/primitives/locks/__init__.pxd +0 -2
  20. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.coverage +0 -0
  21. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.github/workflows/black.yaml +0 -0
  22. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.github/workflows/codeql.yaml +0 -0
  23. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.github/workflows/docs.yaml +0 -0
  24. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.github/workflows/mypy.yaml +0 -0
  25. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.github/workflows/pytest.yaml +0 -0
  26. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.github/workflows/release.yaml +0 -0
  27. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.gitignore +0 -0
  28. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/.sourcery.yaml +0 -0
  29. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/LICENSE.txt +0 -0
  30. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/Makefile +0 -0
  31. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/README.md +0 -0
  32. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/TODO +0 -0
  33. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/ENVIRONMENT_VARIABLES.py +0 -0
  34. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/__init__.pxd +0 -0
  35. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/__init__.py +0 -0
  36. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/_smart.py +0 -0
  37. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/_typing.py +0 -0
  38. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/__init__.py +0 -0
  39. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_descriptor.py +0 -0
  40. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_flags.c +0 -0
  41. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_flags.pxd +0 -0
  42. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_flags.pyx +0 -0
  43. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_helpers.c +0 -0
  44. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_helpers.pxd +0 -0
  45. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_helpers.pyi +0 -0
  46. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_helpers.pyx +0 -0
  47. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_kwargs.c +0 -0
  48. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_kwargs.pxd +0 -0
  49. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_kwargs.pyx +0 -0
  50. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/_meta.py +0 -0
  51. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/abstract.c +0 -0
  52. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/abstract.pyi +0 -0
  53. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/abstract.pyx +0 -0
  54. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/base.c +0 -0
  55. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/base.pyi +0 -0
  56. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/base.pyx +0 -0
  57. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/config.py +0 -0
  58. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/decorator.py +0 -0
  59. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/flags.py +0 -0
  60. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/function.c +0 -0
  61. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/function.pyi +0 -0
  62. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/function.pyx +0 -0
  63. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/method.c +0 -0
  64. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/method.pxd +0 -0
  65. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/method.pyi +0 -0
  66. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/method.pyx +0 -0
  67. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/__init__.py +0 -0
  68. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/cache/__init__.py +0 -0
  69. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/cache/memory.py +0 -0
  70. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/limiter.py +0 -0
  71. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/manager.c +0 -0
  72. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/manager.pyi +0 -0
  73. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/manager.pyx +0 -0
  74. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/modifiers/semaphores.py +0 -0
  75. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/property.c +0 -0
  76. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/property.pyi +0 -0
  77. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/property.pyx +0 -0
  78. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/a_sync/singleton.py +0 -0
  79. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/aliases.py +0 -0
  80. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/__init__.py +0 -0
  81. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/as_completed.c +0 -0
  82. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/as_completed.pxd +0 -0
  83. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/as_completed.pyi +0 -0
  84. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/as_completed.pyx +0 -0
  85. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/create_task.c +0 -0
  86. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/create_task.pxd +0 -0
  87. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/create_task.pyi +0 -0
  88. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/create_task.pyx +0 -0
  89. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/gather.c +0 -0
  90. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/gather.pyi +0 -0
  91. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/asyncio/gather.pyx +0 -0
  92. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/exceptions.py +0 -0
  93. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/executor.py +0 -0
  94. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/future.py +0 -0
  95. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/iter.c +0 -0
  96. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/iter.pyi +0 -0
  97. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/iter.pyx +0 -0
  98. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/__init__.pxd +0 -0
  99. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/__init__.py +0 -0
  100. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_debug.pyi +0 -0
  101. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_loggable.c +0 -0
  102. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_loggable.pxd +0 -0
  103. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_loggable.pyi +0 -0
  104. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/_loggable.pyx +0 -0
  105. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/__init__.py +1 -1
  106. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/counter.pxd +0 -0
  107. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/counter.pyi +0 -0
  108. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/event.pxd +0 -0
  109. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/event.pyi +0 -0
  110. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/prio_semaphore.pyi +0 -0
  111. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/locks/semaphore.pyi +0 -0
  112. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/primitives/queue.py +0 -0
  113. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/py.typed +0 -0
  114. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/sphinx/__init__.py +0 -0
  115. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/sphinx/ext.py +0 -0
  116. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/task.pyi +0 -0
  117. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/task.pyx +0 -0
  118. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/utils/__init__.py +0 -0
  119. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/a_sync/utils/iterators.py +0 -0
  120. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/Makefile +0 -0
  121. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/alabaster.css +0 -0
  122. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/basic.css +0 -0
  123. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/custom.css +0 -0
  124. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/doctools.js +0 -0
  125. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/documentation_options.js +0 -0
  126. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/file.png +0 -0
  127. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/language_data.js +0 -0
  128. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/minus.png +0 -0
  129. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/plus.png +0 -0
  130. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/pygments.css +0 -0
  131. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/searchtools.js +0 -0
  132. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/_build/html/_static/sphinx_highlight.js +0 -0
  133. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/conf.py +0 -0
  134. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/index.rst +0 -0
  135. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/docs/make.bat +0 -0
  136. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/ez_a_sync.egg-info/dependency_links.txt +0 -0
  137. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/ez_a_sync.egg-info/not-zip-safe +0 -0
  138. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/ez_a_sync.egg-info/requires.txt +0 -0
  139. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/ez_a_sync.egg-info/top_level.txt +0 -0
  140. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/pyproject.yaml +0 -0
  141. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/requirements-dev.txt +0 -0
  142. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/requirements.txt +0 -0
  143. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/setup.cfg +0 -0
  144. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/setup.py +0 -0
  145. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/__init__.py +0 -0
  146. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/conftest.py +0 -0
  147. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/executor.py +0 -0
  148. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/fixtures.py +0 -0
  149. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_abstract.py +0 -0
  150. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_as_completed.py +0 -0
  151. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_base.py +0 -0
  152. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_cache.py +0 -0
  153. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_decorator.py +0 -0
  154. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_executor.py +0 -0
  155. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_future.py +0 -0
  156. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_gather.py +0 -0
  157. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_helpers.py +0 -0
  158. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_iter.py +0 -0
  159. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_limiter.py +0 -0
  160. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_meta.py +0 -0
  161. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_modified.py +0 -0
  162. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_prio_semaphore.py +0 -0
  163. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_semaphore.py +0 -0
  164. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_singleton.py +0 -0
  165. {ez_a_sync-0.24.4 → ez_a_sync-0.24.5}/tests/test_task.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ez-a-sync
3
- Version: 0.24.4
3
+ Version: 0.24.5
4
4
  Summary: A library that makes it easy to define objects that can be used for both sync and async use cases.
5
5
  Home-page: https://github.com/BobTheBuidler/a-sync
6
6
  Author: BobTheBuidler
@@ -1535,6 +1535,7 @@ struct __pyx_obj_6a_sync_10primitives_6_debug__LoopBoundMixin {
1535
1535
  *
1536
1536
  * cdef class _DebugDaemonMixin(_LoopBoundMixin): # <<<<<<<<<<<<<<
1537
1537
  * cdef object _daemon
1538
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs)
1538
1539
  */
1539
1540
  struct __pyx_obj_6a_sync_10primitives_6_debug__DebugDaemonMixin {
1540
1541
  struct __pyx_obj_6a_sync_10primitives_6_debug__LoopBoundMixin __pyx_base;
@@ -1599,6 +1600,7 @@ static struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__LoopBoundMixin *__p
1599
1600
 
1600
1601
  struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__DebugDaemonMixin {
1601
1602
  struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__LoopBoundMixin __pyx_base;
1603
+ PyObject *(*_c_ensure_debug_daemon)(struct __pyx_obj_6a_sync_10primitives_6_debug__DebugDaemonMixin *, PyObject *, PyObject *);
1602
1604
  };
1603
1605
  static struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__DebugDaemonMixin *__pyx_vtabptr_6a_sync_10primitives_6_debug__DebugDaemonMixin;
1604
1606
  /* #### Code section: utility_code_proto ### */
@@ -2690,6 +2692,7 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
2690
2692
  /* #### Code section: module_declarations ### */
2691
2693
  static PyObject *__pyx_f_6a_sync_10primitives_6_debug_15_LoopBoundMixin__get_loop(struct __pyx_obj_6a_sync_10primitives_6_debug__LoopBoundMixin *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
2692
2694
  static PyObject *__pyx_f_6a_sync_10primitives_6_debug_15_LoopBoundMixin__c_get_loop(struct __pyx_obj_6a_sync_10primitives_6_debug__LoopBoundMixin *__pyx_v_self); /* proto*/
2695
+ static PyObject *__pyx_f_6a_sync_10primitives_6_debug_17_DebugDaemonMixin__c_ensure_debug_daemon(struct __pyx_obj_6a_sync_10primitives_6_debug__DebugDaemonMixin *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto*/
2693
2696
 
2694
2697
  /* Module declarations from "a_sync.primitives._loggable" */
2695
2698
 
@@ -2737,7 +2740,6 @@ static const char __pyx_k_close[] = "close";
2737
2740
  static const char __pyx_k_enter[] = "__enter__";
2738
2741
  static const char __pyx_k_throw[] = "throw";
2739
2742
  static const char __pyx_k_cancel[] = "cancel";
2740
- static const char __pyx_k_daemon[] = "daemon";
2741
2743
  static const char __pyx_k_enable[] = "enable";
2742
2744
  static const char __pyx_k_format[] = "format";
2743
2745
  static const char __pyx_k_getpid[] = "getpid";
@@ -2905,7 +2907,6 @@ typedef struct {
2905
2907
  PyObject *__pyx_n_s_cline_in_traceback;
2906
2908
  PyObject *__pyx_n_s_close;
2907
2909
  PyObject *__pyx_n_s_create_future;
2908
- PyObject *__pyx_n_s_daemon;
2909
2910
  PyObject *__pyx_n_s_debug_daemon;
2910
2911
  PyObject *__pyx_kp_u_disable;
2911
2912
  PyObject *__pyx_kp_u_enable;
@@ -3062,7 +3063,6 @@ static int __pyx_m_clear(PyObject *m) {
3062
3063
  Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
3063
3064
  Py_CLEAR(clear_module_state->__pyx_n_s_close);
3064
3065
  Py_CLEAR(clear_module_state->__pyx_n_s_create_future);
3065
- Py_CLEAR(clear_module_state->__pyx_n_s_daemon);
3066
3066
  Py_CLEAR(clear_module_state->__pyx_n_s_debug_daemon);
3067
3067
  Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
3068
3068
  Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
@@ -3197,7 +3197,6 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3197
3197
  Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
3198
3198
  Py_VISIT(traverse_module_state->__pyx_n_s_close);
3199
3199
  Py_VISIT(traverse_module_state->__pyx_n_s_create_future);
3200
- Py_VISIT(traverse_module_state->__pyx_n_s_daemon);
3201
3200
  Py_VISIT(traverse_module_state->__pyx_n_s_debug_daemon);
3202
3201
  Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
3203
3202
  Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
@@ -3348,7 +3347,6 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
3348
3347
  #define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
3349
3348
  #define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close
3350
3349
  #define __pyx_n_s_create_future __pyx_mstate_global->__pyx_n_s_create_future
3351
- #define __pyx_n_s_daemon __pyx_mstate_global->__pyx_n_s_daemon
3352
3350
  #define __pyx_n_s_debug_daemon __pyx_mstate_global->__pyx_n_s_debug_daemon
3353
3351
  #define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
3354
3352
  #define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
@@ -5363,16 +5361,10 @@ static PyObject *__pyx_pw_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_6_ens
5363
5361
  }
5364
5362
 
5365
5363
  static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ensure_debug_daemon(struct __pyx_obj_6a_sync_10primitives_6_debug__DebugDaemonMixin *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
5366
- PyObject *__pyx_v_daemon = 0;
5367
5364
  PyObject *__pyx_r = NULL;
5368
5365
  __Pyx_TraceDeclarations
5369
5366
  __Pyx_RefNannyDeclarations
5370
5367
  PyObject *__pyx_t_1 = NULL;
5371
- int __pyx_t_2;
5372
- PyObject *__pyx_t_3 = NULL;
5373
- PyObject *__pyx_t_4 = NULL;
5374
- PyObject *__pyx_t_5 = NULL;
5375
- unsigned int __pyx_t_6;
5376
5368
  int __pyx_lineno = 0;
5377
5369
  const char *__pyx_filename = NULL;
5378
5370
  int __pyx_clineno = 0;
@@ -5383,51 +5375,119 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5383
5375
  /* "a_sync/primitives/_debug.pyx":156
5384
5376
  * :meth:`_start_debug_daemon` for starting the daemon.
5385
5377
  * """
5378
+ * return self._c_ensure_debug_daemon(args, kwargs) # <<<<<<<<<<<<<<
5379
+ *
5380
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs):
5381
+ */
5382
+ __Pyx_TraceLine(156,0,__PYX_ERR(0, 156, __pyx_L1_error))
5383
+ __Pyx_XDECREF(__pyx_r);
5384
+ __pyx_t_1 = ((struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__DebugDaemonMixin *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_c_ensure_debug_daemon(__pyx_v_self, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error)
5385
+ __Pyx_GOTREF(__pyx_t_1);
5386
+ __pyx_r = __pyx_t_1;
5387
+ __pyx_t_1 = 0;
5388
+ goto __pyx_L0;
5389
+
5390
+ /* "a_sync/primitives/_debug.pyx":132
5391
+ * return loop.create_future()
5392
+ *
5393
+ * def _ensure_debug_daemon(self, *args, **kwargs) -> "asyncio.Future[None]": # <<<<<<<<<<<<<<
5394
+ * """
5395
+ * Ensures that the debug daemon task is running.
5396
+ */
5397
+
5398
+ /* function exit code */
5399
+ __pyx_L1_error:;
5400
+ __Pyx_XDECREF(__pyx_t_1);
5401
+ __Pyx_AddTraceback("a_sync.primitives._debug._DebugDaemonMixin._ensure_debug_daemon", __pyx_clineno, __pyx_lineno, __pyx_filename);
5402
+ __pyx_r = NULL;
5403
+ __pyx_L0:;
5404
+ __Pyx_XGIVEREF(__pyx_r);
5405
+ __Pyx_TraceReturn(__pyx_r, 0);
5406
+ __Pyx_RefNannyFinishContext();
5407
+ return __pyx_r;
5408
+ }
5409
+
5410
+ /* "a_sync/primitives/_debug.pyx":158
5411
+ * return self._c_ensure_debug_daemon(args, kwargs)
5412
+ *
5413
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs): # <<<<<<<<<<<<<<
5414
+ * cdef object daemon = self._daemon
5415
+ * if daemon is None:
5416
+ */
5417
+
5418
+ static PyObject *__pyx_f_6a_sync_10primitives_6_debug_17_DebugDaemonMixin__c_ensure_debug_daemon(struct __pyx_obj_6a_sync_10primitives_6_debug__DebugDaemonMixin *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
5419
+ PyObject *__pyx_v_daemon = 0;
5420
+ PyObject *__pyx_r = NULL;
5421
+ __Pyx_TraceDeclarations
5422
+ __Pyx_RefNannyDeclarations
5423
+ PyObject *__pyx_t_1 = NULL;
5424
+ int __pyx_t_2;
5425
+ PyObject *__pyx_t_3 = NULL;
5426
+ PyObject *__pyx_t_4 = NULL;
5427
+ PyObject *__pyx_t_5 = NULL;
5428
+ unsigned int __pyx_t_6;
5429
+ int __pyx_lineno = 0;
5430
+ const char *__pyx_filename = NULL;
5431
+ int __pyx_clineno = 0;
5432
+ __Pyx_RefNannySetupContext("_c_ensure_debug_daemon", 1);
5433
+ __Pyx_TraceCall("_c_ensure_debug_daemon", __pyx_f[0], 158, 0, __PYX_ERR(0, 158, __pyx_L1_error));
5434
+
5435
+ /* "a_sync/primitives/_debug.pyx":159
5436
+ *
5437
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs):
5386
5438
  * cdef object daemon = self._daemon # <<<<<<<<<<<<<<
5387
5439
  * if daemon is None:
5388
5440
  * if self.check_debug_logs_enabled():
5389
5441
  */
5390
- __Pyx_TraceLine(156,0,__PYX_ERR(0, 156, __pyx_L1_error))
5442
+ __Pyx_TraceLine(159,0,__PYX_ERR(0, 159, __pyx_L1_error))
5391
5443
  __pyx_t_1 = __pyx_v_self->_daemon;
5392
5444
  __Pyx_INCREF(__pyx_t_1);
5393
5445
  __pyx_v_daemon = __pyx_t_1;
5394
5446
  __pyx_t_1 = 0;
5395
5447
 
5396
- /* "a_sync/primitives/_debug.pyx":157
5397
- * """
5448
+ /* "a_sync/primitives/_debug.pyx":160
5449
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs):
5398
5450
  * cdef object daemon = self._daemon
5399
5451
  * if daemon is None: # <<<<<<<<<<<<<<
5400
5452
  * if self.check_debug_logs_enabled():
5401
5453
  * self._daemon = self._start_debug_daemon(*args, **kwargs)
5402
5454
  */
5403
- __Pyx_TraceLine(157,0,__PYX_ERR(0, 157, __pyx_L1_error))
5455
+ __Pyx_TraceLine(160,0,__PYX_ERR(0, 160, __pyx_L1_error))
5404
5456
  __pyx_t_2 = (__pyx_v_daemon == Py_None);
5405
5457
  if (__pyx_t_2) {
5406
5458
 
5407
- /* "a_sync/primitives/_debug.pyx":158
5459
+ /* "a_sync/primitives/_debug.pyx":161
5408
5460
  * cdef object daemon = self._daemon
5409
5461
  * if daemon is None:
5410
5462
  * if self.check_debug_logs_enabled(): # <<<<<<<<<<<<<<
5411
5463
  * self._daemon = self._start_debug_daemon(*args, **kwargs)
5412
5464
  * self._daemon.add_done_callback(self._stop_debug_daemon)
5413
5465
  */
5414
- __Pyx_TraceLine(158,0,__PYX_ERR(0, 158, __pyx_L1_error))
5415
- __pyx_t_2 = ((struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__DebugDaemonMixin *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.check_debug_logs_enabled(((struct __pyx_obj_6a_sync_10primitives_9_loggable__LoggerMixin *)__pyx_v_self)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L1_error)
5466
+ __Pyx_TraceLine(161,0,__PYX_ERR(0, 161, __pyx_L1_error))
5467
+ __pyx_t_2 = ((struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__DebugDaemonMixin *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.check_debug_logs_enabled(((struct __pyx_obj_6a_sync_10primitives_9_loggable__LoggerMixin *)__pyx_v_self)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L1_error)
5416
5468
  if (__pyx_t_2) {
5417
5469
 
5418
- /* "a_sync/primitives/_debug.pyx":159
5470
+ /* "a_sync/primitives/_debug.pyx":162
5419
5471
  * if daemon is None:
5420
5472
  * if self.check_debug_logs_enabled():
5421
5473
  * self._daemon = self._start_debug_daemon(*args, **kwargs) # <<<<<<<<<<<<<<
5422
5474
  * self._daemon.add_done_callback(self._stop_debug_daemon)
5423
5475
  * else:
5424
5476
  */
5425
- __Pyx_TraceLine(159,0,__PYX_ERR(0, 159, __pyx_L1_error))
5426
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_debug_daemon); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error)
5477
+ __Pyx_TraceLine(162,0,__PYX_ERR(0, 162, __pyx_L1_error))
5478
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_debug_daemon); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error)
5427
5479
  __Pyx_GOTREF(__pyx_t_1);
5428
- __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
5480
+ if (unlikely(__pyx_v_args == Py_None)) {
5481
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
5482
+ __PYX_ERR(0, 162, __pyx_L1_error)
5483
+ }
5484
+ if (unlikely(__pyx_v_kwargs == Py_None)) {
5485
+ PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
5486
+ __PYX_ERR(0, 162, __pyx_L1_error)
5487
+ }
5488
+ __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 162, __pyx_L1_error)
5429
5489
  __Pyx_GOTREF(__pyx_t_3);
5430
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error)
5490
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 162, __pyx_L1_error)
5431
5491
  __Pyx_GOTREF(__pyx_t_4);
5432
5492
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5433
5493
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -5437,17 +5497,17 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5437
5497
  __pyx_v_self->_daemon = __pyx_t_4;
5438
5498
  __pyx_t_4 = 0;
5439
5499
 
5440
- /* "a_sync/primitives/_debug.pyx":160
5500
+ /* "a_sync/primitives/_debug.pyx":163
5441
5501
  * if self.check_debug_logs_enabled():
5442
5502
  * self._daemon = self._start_debug_daemon(*args, **kwargs)
5443
5503
  * self._daemon.add_done_callback(self._stop_debug_daemon) # <<<<<<<<<<<<<<
5444
5504
  * else:
5445
5505
  * self._daemon = self._c_get_loop().create_future()
5446
5506
  */
5447
- __Pyx_TraceLine(160,0,__PYX_ERR(0, 160, __pyx_L1_error))
5448
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_daemon, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error)
5507
+ __Pyx_TraceLine(163,0,__PYX_ERR(0, 163, __pyx_L1_error))
5508
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_daemon, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
5449
5509
  __Pyx_GOTREF(__pyx_t_3);
5450
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stop_debug_daemon); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)
5510
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stop_debug_daemon); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
5451
5511
  __Pyx_GOTREF(__pyx_t_1);
5452
5512
  __pyx_t_5 = NULL;
5453
5513
  __pyx_t_6 = 0;
@@ -5468,13 +5528,13 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5468
5528
  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
5469
5529
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5470
5530
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5471
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
5531
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 163, __pyx_L1_error)
5472
5532
  __Pyx_GOTREF(__pyx_t_4);
5473
5533
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5474
5534
  }
5475
5535
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5476
5536
 
5477
- /* "a_sync/primitives/_debug.pyx":158
5537
+ /* "a_sync/primitives/_debug.pyx":161
5478
5538
  * cdef object daemon = self._daemon
5479
5539
  * if daemon is None:
5480
5540
  * if self.check_debug_logs_enabled(): # <<<<<<<<<<<<<<
@@ -5484,18 +5544,18 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5484
5544
  goto __pyx_L4;
5485
5545
  }
5486
5546
 
5487
- /* "a_sync/primitives/_debug.pyx":162
5547
+ /* "a_sync/primitives/_debug.pyx":165
5488
5548
  * self._daemon.add_done_callback(self._stop_debug_daemon)
5489
5549
  * else:
5490
5550
  * self._daemon = self._c_get_loop().create_future() # <<<<<<<<<<<<<<
5491
5551
  * return self._daemon
5492
5552
  *
5493
5553
  */
5494
- __Pyx_TraceLine(162,0,__PYX_ERR(0, 162, __pyx_L1_error))
5554
+ __Pyx_TraceLine(165,0,__PYX_ERR(0, 165, __pyx_L1_error))
5495
5555
  /*else*/ {
5496
- __pyx_t_3 = ((struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__DebugDaemonMixin *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._c_get_loop(((struct __pyx_obj_6a_sync_10primitives_6_debug__LoopBoundMixin *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 162, __pyx_L1_error)
5556
+ __pyx_t_3 = ((struct __pyx_vtabstruct_6a_sync_10primitives_6_debug__DebugDaemonMixin *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._c_get_loop(((struct __pyx_obj_6a_sync_10primitives_6_debug__LoopBoundMixin *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error)
5497
5557
  __Pyx_GOTREF(__pyx_t_3);
5498
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_create_future); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error)
5558
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_create_future); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error)
5499
5559
  __Pyx_GOTREF(__pyx_t_1);
5500
5560
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5501
5561
  __pyx_t_3 = NULL;
@@ -5516,7 +5576,7 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5516
5576
  PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
5517
5577
  __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
5518
5578
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5519
- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 162, __pyx_L1_error)
5579
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 165, __pyx_L1_error)
5520
5580
  __Pyx_GOTREF(__pyx_t_4);
5521
5581
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5522
5582
  }
@@ -5528,8 +5588,8 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5528
5588
  }
5529
5589
  __pyx_L4:;
5530
5590
 
5531
- /* "a_sync/primitives/_debug.pyx":157
5532
- * """
5591
+ /* "a_sync/primitives/_debug.pyx":160
5592
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs):
5533
5593
  * cdef object daemon = self._daemon
5534
5594
  * if daemon is None: # <<<<<<<<<<<<<<
5535
5595
  * if self.check_debug_logs_enabled():
@@ -5537,25 +5597,25 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5537
5597
  */
5538
5598
  }
5539
5599
 
5540
- /* "a_sync/primitives/_debug.pyx":163
5600
+ /* "a_sync/primitives/_debug.pyx":166
5541
5601
  * else:
5542
5602
  * self._daemon = self._c_get_loop().create_future()
5543
5603
  * return self._daemon # <<<<<<<<<<<<<<
5544
5604
  *
5545
5605
  * def _stop_debug_daemon(self, t: Optional[asyncio.Task] = None) -> None:
5546
5606
  */
5547
- __Pyx_TraceLine(163,0,__PYX_ERR(0, 163, __pyx_L1_error))
5607
+ __Pyx_TraceLine(166,0,__PYX_ERR(0, 166, __pyx_L1_error))
5548
5608
  __Pyx_XDECREF(__pyx_r);
5549
5609
  __Pyx_INCREF(__pyx_v_self->_daemon);
5550
5610
  __pyx_r = __pyx_v_self->_daemon;
5551
5611
  goto __pyx_L0;
5552
5612
 
5553
- /* "a_sync/primitives/_debug.pyx":132
5554
- * return loop.create_future()
5613
+ /* "a_sync/primitives/_debug.pyx":158
5614
+ * return self._c_ensure_debug_daemon(args, kwargs)
5555
5615
  *
5556
- * def _ensure_debug_daemon(self, *args, **kwargs) -> "asyncio.Future[None]": # <<<<<<<<<<<<<<
5557
- * """
5558
- * Ensures that the debug daemon task is running.
5616
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs): # <<<<<<<<<<<<<<
5617
+ * cdef object daemon = self._daemon
5618
+ * if daemon is None:
5559
5619
  */
5560
5620
 
5561
5621
  /* function exit code */
@@ -5564,8 +5624,8 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5564
5624
  __Pyx_XDECREF(__pyx_t_3);
5565
5625
  __Pyx_XDECREF(__pyx_t_4);
5566
5626
  __Pyx_XDECREF(__pyx_t_5);
5567
- __Pyx_AddTraceback("a_sync.primitives._debug._DebugDaemonMixin._ensure_debug_daemon", __pyx_clineno, __pyx_lineno, __pyx_filename);
5568
- __pyx_r = NULL;
5627
+ __Pyx_AddTraceback("a_sync.primitives._debug._DebugDaemonMixin._c_ensure_debug_daemon", __pyx_clineno, __pyx_lineno, __pyx_filename);
5628
+ __pyx_r = 0;
5569
5629
  __pyx_L0:;
5570
5630
  __Pyx_XDECREF(__pyx_v_daemon);
5571
5631
  __Pyx_XGIVEREF(__pyx_r);
@@ -5574,7 +5634,7 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_5_ens
5574
5634
  return __pyx_r;
5575
5635
  }
5576
5636
 
5577
- /* "a_sync/primitives/_debug.pyx":165
5637
+ /* "a_sync/primitives/_debug.pyx":168
5578
5638
  * return self._daemon
5579
5639
  *
5580
5640
  * def _stop_debug_daemon(self, t: Optional[asyncio.Task] = None) -> None: # <<<<<<<<<<<<<<
@@ -5636,12 +5696,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
5636
5696
  if (kw_args > 0) {
5637
5697
  PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_t);
5638
5698
  if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
5639
- else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 165, __pyx_L3_error)
5699
+ else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 168, __pyx_L3_error)
5640
5700
  }
5641
5701
  }
5642
5702
  if (unlikely(kw_args > 0)) {
5643
5703
  const Py_ssize_t kwd_pos_args = __pyx_nargs;
5644
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_stop_debug_daemon") < 0)) __PYX_ERR(0, 165, __pyx_L3_error)
5704
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_stop_debug_daemon") < 0)) __PYX_ERR(0, 168, __pyx_L3_error)
5645
5705
  }
5646
5706
  } else {
5647
5707
  switch (__pyx_nargs) {
@@ -5655,7 +5715,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
5655
5715
  }
5656
5716
  goto __pyx_L6_skip;
5657
5717
  __pyx_L5_argtuple_error:;
5658
- __Pyx_RaiseArgtupleInvalid("_stop_debug_daemon", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 165, __pyx_L3_error)
5718
+ __Pyx_RaiseArgtupleInvalid("_stop_debug_daemon", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 168, __pyx_L3_error)
5659
5719
  __pyx_L6_skip:;
5660
5720
  goto __pyx_L4_argument_unpacking_done;
5661
5721
  __pyx_L3_error:;
@@ -5699,42 +5759,42 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_7_sto
5699
5759
  int __pyx_clineno = 0;
5700
5760
  __Pyx_TraceFrameInit(__pyx_codeobj__8)
5701
5761
  __Pyx_RefNannySetupContext("_stop_debug_daemon", 1);
5702
- __Pyx_TraceCall("_stop_debug_daemon", __pyx_f[0], 165, 0, __PYX_ERR(0, 165, __pyx_L1_error));
5762
+ __Pyx_TraceCall("_stop_debug_daemon", __pyx_f[0], 168, 0, __PYX_ERR(0, 168, __pyx_L1_error));
5703
5763
 
5704
- /* "a_sync/primitives/_debug.pyx":188
5764
+ /* "a_sync/primitives/_debug.pyx":191
5705
5765
  * :meth:`_ensure_debug_daemon` for ensuring the daemon is running.
5706
5766
  * """
5707
5767
  * if t and t != self._daemon: # <<<<<<<<<<<<<<
5708
5768
  * raise ValueError(f"{t} is not {self._daemon}")
5709
5769
  * self._daemon.cancel()
5710
5770
  */
5711
- __Pyx_TraceLine(188,0,__PYX_ERR(0, 188, __pyx_L1_error))
5712
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_t); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 188, __pyx_L1_error)
5771
+ __Pyx_TraceLine(191,0,__PYX_ERR(0, 191, __pyx_L1_error))
5772
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_t); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 191, __pyx_L1_error)
5713
5773
  if (__pyx_t_2) {
5714
5774
  } else {
5715
5775
  __pyx_t_1 = __pyx_t_2;
5716
5776
  goto __pyx_L4_bool_binop_done;
5717
5777
  }
5718
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_v_self->_daemon, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error)
5719
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 188, __pyx_L1_error)
5778
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_v_self->_daemon, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
5779
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 191, __pyx_L1_error)
5720
5780
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5721
5781
  __pyx_t_1 = __pyx_t_2;
5722
5782
  __pyx_L4_bool_binop_done:;
5723
5783
  if (unlikely(__pyx_t_1)) {
5724
5784
 
5725
- /* "a_sync/primitives/_debug.pyx":189
5785
+ /* "a_sync/primitives/_debug.pyx":192
5726
5786
  * """
5727
5787
  * if t and t != self._daemon:
5728
5788
  * raise ValueError(f"{t} is not {self._daemon}") # <<<<<<<<<<<<<<
5729
5789
  * self._daemon.cancel()
5730
5790
  * self._daemon = None
5731
5791
  */
5732
- __Pyx_TraceLine(189,0,__PYX_ERR(0, 189, __pyx_L1_error))
5733
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error)
5792
+ __Pyx_TraceLine(192,0,__PYX_ERR(0, 192, __pyx_L1_error))
5793
+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
5734
5794
  __Pyx_GOTREF(__pyx_t_3);
5735
5795
  __pyx_t_4 = 0;
5736
5796
  __pyx_t_5 = 127;
5737
- __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_t, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L1_error)
5797
+ __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_t, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 192, __pyx_L1_error)
5738
5798
  __Pyx_GOTREF(__pyx_t_6);
5739
5799
  __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
5740
5800
  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
@@ -5745,24 +5805,24 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_7_sto
5745
5805
  __pyx_t_4 += 8;
5746
5806
  __Pyx_GIVEREF(__pyx_kp_u_is_not);
5747
5807
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_kp_u_is_not);
5748
- __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_self->_daemon, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L1_error)
5808
+ __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_self->_daemon, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 192, __pyx_L1_error)
5749
5809
  __Pyx_GOTREF(__pyx_t_6);
5750
5810
  __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
5751
5811
  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
5752
5812
  __Pyx_GIVEREF(__pyx_t_6);
5753
5813
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_6);
5754
5814
  __pyx_t_6 = 0;
5755
- __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L1_error)
5815
+ __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 192, __pyx_L1_error)
5756
5816
  __Pyx_GOTREF(__pyx_t_6);
5757
5817
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5758
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error)
5818
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
5759
5819
  __Pyx_GOTREF(__pyx_t_3);
5760
5820
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5761
5821
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
5762
5822
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5763
- __PYX_ERR(0, 189, __pyx_L1_error)
5823
+ __PYX_ERR(0, 192, __pyx_L1_error)
5764
5824
 
5765
- /* "a_sync/primitives/_debug.pyx":188
5825
+ /* "a_sync/primitives/_debug.pyx":191
5766
5826
  * :meth:`_ensure_debug_daemon` for ensuring the daemon is running.
5767
5827
  * """
5768
5828
  * if t and t != self._daemon: # <<<<<<<<<<<<<<
@@ -5771,14 +5831,14 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_7_sto
5771
5831
  */
5772
5832
  }
5773
5833
 
5774
- /* "a_sync/primitives/_debug.pyx":190
5834
+ /* "a_sync/primitives/_debug.pyx":193
5775
5835
  * if t and t != self._daemon:
5776
5836
  * raise ValueError(f"{t} is not {self._daemon}")
5777
5837
  * self._daemon.cancel() # <<<<<<<<<<<<<<
5778
5838
  * self._daemon = None
5779
5839
  */
5780
- __Pyx_TraceLine(190,0,__PYX_ERR(0, 190, __pyx_L1_error))
5781
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_daemon, __pyx_n_s_cancel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 190, __pyx_L1_error)
5840
+ __Pyx_TraceLine(193,0,__PYX_ERR(0, 193, __pyx_L1_error))
5841
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_daemon, __pyx_n_s_cancel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
5782
5842
  __Pyx_GOTREF(__pyx_t_6);
5783
5843
  __pyx_t_7 = NULL;
5784
5844
  __pyx_t_8 = 0;
@@ -5798,25 +5858,25 @@ static PyObject *__pyx_pf_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_7_sto
5798
5858
  PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
5799
5859
  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
5800
5860
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
5801
- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error)
5861
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error)
5802
5862
  __Pyx_GOTREF(__pyx_t_3);
5803
5863
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5804
5864
  }
5805
5865
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5806
5866
 
5807
- /* "a_sync/primitives/_debug.pyx":191
5867
+ /* "a_sync/primitives/_debug.pyx":194
5808
5868
  * raise ValueError(f"{t} is not {self._daemon}")
5809
5869
  * self._daemon.cancel()
5810
5870
  * self._daemon = None # <<<<<<<<<<<<<<
5811
5871
  */
5812
- __Pyx_TraceLine(191,0,__PYX_ERR(0, 191, __pyx_L1_error))
5872
+ __Pyx_TraceLine(194,0,__PYX_ERR(0, 194, __pyx_L1_error))
5813
5873
  __Pyx_INCREF(Py_None);
5814
5874
  __Pyx_GIVEREF(Py_None);
5815
5875
  __Pyx_GOTREF(__pyx_v_self->_daemon);
5816
5876
  __Pyx_DECREF(__pyx_v_self->_daemon);
5817
5877
  __pyx_v_self->_daemon = Py_None;
5818
5878
 
5819
- /* "a_sync/primitives/_debug.pyx":165
5879
+ /* "a_sync/primitives/_debug.pyx":168
5820
5880
  * return self._daemon
5821
5881
  *
5822
5882
  * def _stop_debug_daemon(self, t: Optional[asyncio.Task] = None) -> None: # <<<<<<<<<<<<<<
@@ -6649,7 +6709,6 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
6649
6709
  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
6650
6710
  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
6651
6711
  {&__pyx_n_s_create_future, __pyx_k_create_future, sizeof(__pyx_k_create_future), 0, 0, 1, 1},
6652
- {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1},
6653
6712
  {&__pyx_n_s_debug_daemon, __pyx_k_debug_daemon, sizeof(__pyx_k_debug_daemon), 0, 0, 1, 1},
6654
6713
  {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
6655
6714
  {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
@@ -6709,7 +6768,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
6709
6768
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 38, __pyx_L1_error)
6710
6769
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 60, __pyx_L1_error)
6711
6770
  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 101, __pyx_L1_error)
6712
- __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 189, __pyx_L1_error)
6771
+ __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 192, __pyx_L1_error)
6713
6772
  return 0;
6714
6773
  __pyx_L1_error:;
6715
6774
  return -1;
@@ -6792,23 +6851,23 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
6792
6851
  * """
6793
6852
  * Ensures that the debug daemon task is running.
6794
6853
  */
6795
- __pyx_tuple__17 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_kwargs, __pyx_n_s_daemon); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 132, __pyx_L1_error)
6854
+ __pyx_tuple__17 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 132, __pyx_L1_error)
6796
6855
  __Pyx_GOTREF(__pyx_tuple__17);
6797
6856
  __Pyx_GIVEREF(__pyx_tuple__17);
6798
- __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_a_sync_primitives__debug_pyx, __pyx_n_s_ensure_debug_daemon, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 132, __pyx_L1_error)
6857
+ __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_a_sync_primitives__debug_pyx, __pyx_n_s_ensure_debug_daemon, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 132, __pyx_L1_error)
6799
6858
 
6800
- /* "a_sync/primitives/_debug.pyx":165
6859
+ /* "a_sync/primitives/_debug.pyx":168
6801
6860
  * return self._daemon
6802
6861
  *
6803
6862
  * def _stop_debug_daemon(self, t: Optional[asyncio.Task] = None) -> None: # <<<<<<<<<<<<<<
6804
6863
  * """
6805
6864
  * Stops the debug daemon task.
6806
6865
  */
6807
- __pyx_tuple__18 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_t); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 165, __pyx_L1_error)
6866
+ __pyx_tuple__18 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_t); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 168, __pyx_L1_error)
6808
6867
  __Pyx_GOTREF(__pyx_tuple__18);
6809
6868
  __Pyx_GIVEREF(__pyx_tuple__18);
6810
- __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_a_sync_primitives__debug_pyx, __pyx_n_s_stop_debug_daemon, 165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 165, __pyx_L1_error)
6811
- __pyx_tuple__19 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 165, __pyx_L1_error)
6869
+ __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_a_sync_primitives__debug_pyx, __pyx_n_s_stop_debug_daemon, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 168, __pyx_L1_error)
6870
+ __pyx_tuple__19 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 168, __pyx_L1_error)
6812
6871
  __Pyx_GOTREF(__pyx_tuple__19);
6813
6872
  __Pyx_GIVEREF(__pyx_tuple__19);
6814
6873
 
@@ -6930,6 +6989,7 @@ static int __Pyx_modinit_type_init_code(void) {
6930
6989
  #endif
6931
6990
  __pyx_vtabptr_6a_sync_10primitives_6_debug__DebugDaemonMixin = &__pyx_vtable_6a_sync_10primitives_6_debug__DebugDaemonMixin;
6932
6991
  __pyx_vtable_6a_sync_10primitives_6_debug__DebugDaemonMixin.__pyx_base = *__pyx_vtabptr_6a_sync_10primitives_6_debug__LoopBoundMixin;
6992
+ __pyx_vtable_6a_sync_10primitives_6_debug__DebugDaemonMixin._c_ensure_debug_daemon = (PyObject *(*)(struct __pyx_obj_6a_sync_10primitives_6_debug__DebugDaemonMixin *, PyObject *, PyObject *))__pyx_f_6a_sync_10primitives_6_debug_17_DebugDaemonMixin__c_ensure_debug_daemon;
6933
6993
  #if CYTHON_USE_TYPE_SPECS
6934
6994
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6a_sync_10primitives_6_debug__LoopBoundMixin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error)
6935
6995
  __Pyx_GOTREF(__pyx_t_2);
@@ -7554,24 +7614,34 @@ if (!__Pyx_RefNanny) {
7554
7614
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7555
7615
  PyType_Modified(__pyx_ptype_6a_sync_10primitives_6_debug__DebugDaemonMixin);
7556
7616
 
7557
- /* "a_sync/primitives/_debug.pyx":165
7617
+ /* "a_sync/primitives/_debug.pyx":158
7618
+ * return self._c_ensure_debug_daemon(args, kwargs)
7619
+ *
7620
+ * cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs): # <<<<<<<<<<<<<<
7621
+ * cdef object daemon = self._daemon
7622
+ * if daemon is None:
7623
+ */
7624
+ __Pyx_TraceLine(158,0,__PYX_ERR(0, 158, __pyx_L1_error))
7625
+
7626
+
7627
+ /* "a_sync/primitives/_debug.pyx":168
7558
7628
  * return self._daemon
7559
7629
  *
7560
7630
  * def _stop_debug_daemon(self, t: Optional[asyncio.Task] = None) -> None: # <<<<<<<<<<<<<<
7561
7631
  * """
7562
7632
  * Stops the debug daemon task.
7563
7633
  */
7564
- __Pyx_TraceLine(165,0,__PYX_ERR(0, 165, __pyx_L1_error))
7565
- __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error)
7634
+ __Pyx_TraceLine(168,0,__PYX_ERR(0, 168, __pyx_L1_error))
7635
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error)
7566
7636
  __Pyx_GOTREF(__pyx_t_2);
7567
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_t, __pyx_kp_s_Optional_asyncio_Task) < 0) __PYX_ERR(0, 165, __pyx_L1_error)
7568
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(0, 165, __pyx_L1_error)
7569
- __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_8_stop_debug_daemon, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DebugDaemonMixin__stop_debug_da, NULL, __pyx_n_s_a_sync_primitives__debug, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error)
7637
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_t, __pyx_kp_s_Optional_asyncio_Task) < 0) __PYX_ERR(0, 168, __pyx_L1_error)
7638
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(0, 168, __pyx_L1_error)
7639
+ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6a_sync_10primitives_6_debug_17_DebugDaemonMixin_8_stop_debug_daemon, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DebugDaemonMixin__stop_debug_da, NULL, __pyx_n_s_a_sync_primitives__debug, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error)
7570
7640
  __Pyx_GOTREF(__pyx_t_3);
7571
7641
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__19);
7572
7642
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
7573
7643
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7574
- if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6a_sync_10primitives_6_debug__DebugDaemonMixin, __pyx_n_s_stop_debug_daemon, __pyx_t_3) < 0) __PYX_ERR(0, 165, __pyx_L1_error)
7644
+ if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6a_sync_10primitives_6_debug__DebugDaemonMixin, __pyx_n_s_stop_debug_daemon, __pyx_t_3) < 0) __PYX_ERR(0, 168, __pyx_L1_error)
7575
7645
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7576
7646
  PyType_Modified(__pyx_ptype_6a_sync_10primitives_6_debug__DebugDaemonMixin);
7577
7647
 
@@ -7,3 +7,4 @@ cdef class _LoopBoundMixin(_LoggerMixin):
7
7
 
8
8
  cdef class _DebugDaemonMixin(_LoopBoundMixin):
9
9
  cdef object _daemon
10
+ cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs)
@@ -153,6 +153,9 @@ cdef class _DebugDaemonMixin(_LoopBoundMixin):
153
153
  See Also:
154
154
  :meth:`_start_debug_daemon` for starting the daemon.
155
155
  """
156
+ return self._c_ensure_debug_daemon(args, kwargs)
157
+
158
+ cdef object _c_ensure_debug_daemon(self, tuple[object] args, dict[str, object] kwargs):
156
159
  cdef object daemon = self._daemon
157
160
  if daemon is None:
158
161
  if self.check_debug_logs_enabled():
@@ -0,0 +1,8 @@
1
+ from a_sync.primitives.locks.counter cimport CounterLock
2
+ from a_sync.primitives.locks.event cimport CythonEvent as Event
3
+ from a_sync.primitives.locks.prio_semaphore cimport PrioritySemaphore
4
+ from a_sync.primitives.locks.semaphore cimport (
5
+ DummySemaphore,
6
+ Semaphore,
7
+ ThreadsafeSemaphore,
8
+ )