asyncio-extensions 0.3.1__tar.gz → 0.3.2__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 (25) hide show
  1. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/CHANGELOG.md +8 -1
  2. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/PKG-INFO +1 -1
  3. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/src/asyncio_extensions/_iterators.py +2 -1
  4. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/tests/test_iterators.py +7 -0
  5. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/.github/dependabot.yml +0 -0
  6. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/.github/workflows/release.yml +0 -0
  7. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/.github/workflows/tests.yml +0 -0
  8. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/.gitignore +0 -0
  9. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/.pre-commit-config.yaml +0 -0
  10. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/AGENTS.md +0 -0
  11. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/CLAUDE.md +0 -0
  12. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/LICENSE.txt +0 -0
  13. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/README.md +0 -0
  14. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/codecov.yml +0 -0
  15. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/pyproject.toml +0 -0
  16. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/src/asyncio_extensions/__init__.py +0 -0
  17. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/src/asyncio_extensions/_compat.py +0 -0
  18. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/src/asyncio_extensions/_scheduling.py +0 -0
  19. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/src/asyncio_extensions/_sync.py +0 -0
  20. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/src/asyncio_extensions/_task_groups.py +0 -0
  21. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/src/asyncio_extensions/py.typed +0 -0
  22. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/tests/__init__.py +0 -0
  23. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/tests/test_scheduling.py +0 -0
  24. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/tests/test_sync.py +0 -0
  25. {asyncio_extensions-0.3.1 → asyncio_extensions-0.3.2}/tests/test_task_groups.py +0 -0
@@ -8,6 +8,12 @@ This project adheres to both [Semantic Versioning](https://semver.org/spec/v2.0.
8
8
 
9
9
  ## [UNRELEASED]
10
10
 
11
+ ## [0.3.2] - 2026-09-24
12
+
13
+ ### Fixed
14
+
15
+ - `merge_iterables` no longer raises `ValueError` when called with no arguments.
16
+
11
17
  ## [0.3.1] - 2026-09-23
12
18
 
13
19
  ### Changed
@@ -98,7 +104,8 @@ This project adheres to both [Semantic Versioning](https://semver.org/spec/v2.0.
98
104
  - `checkpoint` function to yield control to the event loop.
99
105
  - `sleep_forever` function.
100
106
 
101
- [unreleased]: https://github.com/hartungstenio/asyncio-extensions/compare/0.3.1...HEAD
107
+ [unreleased]: https://github.com/hartungstenio/asyncio-extensions/compare/0.3.2...HEAD
108
+ [0.3.2]: https://github.com/hartungstenio/asyncio-extensions/compare/0.3.1...0.3.2
102
109
  [0.3.1]: https://github.com/hartungstenio/asyncio-extensions/compare/0.3.0...0.3.1
103
110
  [0.3.0]: https://github.com/hartungstenio/asyncio-extensions/compare/0.2.0...0.3.0
104
111
  [0.2.0]: https://github.com/hartungstenio/asyncio-extensions/compare/0.1.0...0.2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: asyncio-extensions
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Some (maybe) useful extensions for asyncio
5
5
  Project-URL: Changelog, https://github.com/hartungstenio/asyncio-extensions/blob/main/CHANGELOG.md
6
6
  Project-URL: Documentation, https://github.com/hartungstenio/asyncio-extensions#readme
@@ -150,7 +150,8 @@ async def merge_iterables(
150
150
  tasks = [tg.create_task(fill_queue(itr, queue)) for itr in itrs]
151
151
 
152
152
  async def join() -> None:
153
- await asyncio.wait(tasks)
153
+ if tasks:
154
+ await asyncio.wait(tasks)
154
155
  await queue.put(STOP) # type: ignore[arg-type]
155
156
 
156
157
  tg.create_task(join())
@@ -206,6 +206,13 @@ async def test_merge_iterables_empty_sources_yields_nothing() -> None:
206
206
  assert results == []
207
207
 
208
208
 
209
+ async def test_merge_iterables_no_sources_yields_nothing() -> None:
210
+ async with merge_iterables() as stream:
211
+ results = [item async for item in stream]
212
+
213
+ assert results == []
214
+
215
+
209
216
  async def test_merge_iterables_early_exit_cancels_background_tasks() -> None:
210
217
  initial_tasks = len(asyncio.all_tasks())
211
218
  itrs = [count(), count(1)]