SkillAgentSearch skills...

Syncer

Async to sync converter

Install / Use

/learn @miyakogi/Syncer
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

View on GitHub
GitHub Stars77
CategoryDevelopment
Updated1mo ago
Forks8

Languages

Python

Security Score

100/100

Audited on Mar 2, 2026

No findings