-
Notifications
You must be signed in to change notification settings - Fork 72
Add asyncio/coroutine support for caching async functions #319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Co-authored-by: Borda <6035284+Borda@users.noreply.github.com>
Co-authored-by: Borda <6035284+Borda@users.noreply.github.com>
Co-authored-by: Borda <6035284+Borda@users.noreply.github.com>
Co-authored-by: Borda <6035284+Borda@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add support for coroutines in cachier for async caching
Add asyncio/coroutine support for caching async functions
Jan 27, 2026
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Adds full asyncio/coroutine support to Cachier, enabling the existing
@cachierdecorator to transparently cache both synchronous and asynchronous functions without requiring separate decorators or code changes.Implementation
Core Changes (
src/cachier/core.py):inspect.iscoroutinefunction()_call_async(),_calc_entry_async(),_function_thread_async()wait_on_entry_calc()in async path - concurrent calls execute in parallel to avoid event loop blockingTesting (
tests/test_async_core.py):stale_after,next_time,max_ageparametersallow_none,ignore_cache,overwrite_cacheparametersExamples (
examples/async_example.py):Features
All existing Cachier features work with async functions:
stale_after,next_time)ignore_cache,overwrite_cache)allow_none)Usage
Design Notes
wait_for_calc_timeoutnot honored for async functions to avoid blocking the event loopTesting Results
The implementation is production-ready with comprehensive, non-redundant test coverage for all async code paths!
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.