ai-station/.venv/lib/python3.12/site-packages/syncer-2.0.3.dist-info/METADATA

119 lines
3.2 KiB
Plaintext

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 <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