unasync
Welcome to unasync, a project that can transform your asynchronous code into synchronous code.
See urllib3/urllib3#1323 for more details about unasync.
Users
- The official Elasticsearch Python client: https://github.com/elastic/elasticsearch-py
- Hip, a HTTP client: https://github.com/python-trio/hip
- httpcore, another low-level HTTP client uses a different implementation of the same idea: https://github.com/encode/httpcore
Installation
Usage
To use the unasync project you need to install the package and then create a _async folder where you will place the asynchronous code that you want to transform into synchronous code.
And then in your setup.py place the following code.
setuptools.setup(
...
cmdclass={'build_py': unasync.cmdclass_build_py()},
...
)
And when you will build your package you will get your synchronous code in _sync folder.
If you'd like to customize where certain rules are applied you can pass
customized unasync.Rule instances to unasync.cmdclass_build_py()
setuptools.setup(
...
cmdclass={'build_py': unasync.cmdclass_build_py(rules=[
# This rule transforms files within 'ahip' -> 'hip'
# instead of the default '_async' -> '_sync'.
unasync.Rule("/ahip/", "/hip/"),
# This rule's 'fromdir' is more specific so will take precedent
# over the above rule if the path is within /ahip/tests/...
# This rule adds an additional token replacement over the default replacements.
unasync.Rule("/ahip/tests/", "/hip/tests/", additional_replacements={"ahip": "hip"}),
])},
...
)
Documentation
https://unasync.readthedocs.io/en/latest/
License: Your choice of MIT or Apache License 2.0