Metadata-Version: 2.4 Name: syncer Version: 2.0.3 Summary: Async to sync converter Home-page: https://github.com/miyakogi/syncer Author: Hiroyuki Takagi Author-email: miyako.dev@gmail.com License: MIT Keywords: syncer Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Natural Language :: English Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 License-File: LICENSE Dynamic: author Dynamic: author-email Dynamic: classifier Dynamic: description Dynamic: home-page Dynamic: keywords Dynamic: license Dynamic: license-file Dynamic: summary 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 `_. License ======= `MIT 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