Syncer
Async to sync converter
Install / Use
/learn @miyakogi/SyncerREADME
Syncer
.. image:: https://img.shields.io/pypi/v/syncer.svg :target: https://pypi.python.org/pypi/syncer
.. image:: https://img.shields.io/pypi/pyversions/syncer.svg :target: https://pypi.python.org/pypi/syncer
Syncer is an async-to-sync converter for python.
- PyPI: https://pypi.python.org/pypi/syncer/
- Documentation: https://miyakogi.github.io/syncer/
- Source code: https://github.com/miyakogi/syncer/
Features
Sometimes (mainly in test) we need to convert asynchronous functions to normal,
synchronous functions and run them synchronously. It can be done by
ayncio.get_event_loop().run_until_complete(), but it's quite long...
Syncer makes this conversion easy.
- Convert async-function (defined by
aync def) to normal (synchronous) function - Evaluate coroutines synchronously
Install
At the command line::
$ pip install syncer
Usage
This module has only one function: syncer.sync.
.. code-block:: py
from syncer import sync
async def async_fun():
...
return 1
b = sync(async_fun) # now b is synchronous
assert 1 == b()
To test the above async_fun in asynchronous test functions:
.. code-block:: py
import unittest
class TestA(unittest.TestCase):
# ``sync`` can be used as decorator.
# The decorated function becomes synchronous.
@sync
async def test_async_fun(self):
self.assertEqual(await async_fun(), 1)
Or, keep test functions synchronous and get results synchronously:
.. code-block:: py
class TestA(unittest.TestCase):
def test_async_fun(self):
# run coroutine and return the result
self.assertEqual(sync(async_fun()), 1)
# This is equivalent to below, just a shortcut
self.assertEqual(
asyncio.get_event_loop().run_until_complete(async_fun()), 1)
More examples/use-cases will be found in test <https://github.com/miyakogi/syncer/blob/master/test_syncer.py>_.
License
MIT license <https://github.com/miyakogi/syncer/blob/master/LICENSE>_
Credits
This package was created with Cookiecutter_ and the audreyr/cookiecutter-pypackage_ project template.
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _audreyr/cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage
Related Skills
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
111.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
352.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
