Create a sync version of an async function
Project description
make-it-sync
This very simple library helps provide a synchronous interface for your python async functions and class methods.
Introduction
from asyncio import sleep
from make_it_sync import make_sync
async def simple_func(a: int) -> int:
'Simple sleeper function to test calling mechanics'
await sleep(0.01)
return a + 1
t_wrap = make_sync(simple_func)
print (t_wrap(4))
# Prints out 5
It works by running an async event loop and executing the function. It will use the current thread if no loop is running, otherwise it will create a new thread and run the function there.
Features:
- Will wrap a stand-alone function
- All arguments (keyword and positional) are passed
- Instance methods on classes may be wrapped
- Abstract methods are correctly handled.
Usage
To install pip install make-it-async.
The make_sync function creates a new function that will call the function you pass to it:
async def simple_func(a: int) -> int:
'Simple sleeper function to test calling mechanics'
await sleep(0.01)
return a + 1
t_wrap = make_sync(simple_func)
You may treat t_wrap as a python function. You could use make_sync as a function decorator, though that isn't the normal usage as that would hid the async version of the function. Normally, make_sync is used to provide a non-async, alternate, version of the function.
It is also possible to use make_sync with abstract functions:
class abc_base(ABC):
@abstractmethod
async def doit_async(self):
raise NotImplementedError()
doit = make_sync(doit_async)
class abc_derived(abc_base):
async def doit_async(self):
return 42
a = abs_derived()
print(a.doit())
# Will print out 42
The abstract dispatch will occur at runtime and the call to doit_async will be pulled from the the sub-class. This allows you to define the asynchronous API in an ABC, and build a common set of synchronous methods.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file make_it_sync-2.1.1.tar.gz.
File metadata
- Download URL: make_it_sync-2.1.1.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47fe27b34537f9e3b09a869b6e0e7c723026cfc3e12087d8e248bf55506ced28
|
|
| MD5 |
b152893bd8143a6fb8c196ed9f95b291
|
|
| BLAKE2b-256 |
9705617b390168a7793930f6a6d93e60e0f54e2561d41026a3692dee6160efbd
|
Provenance
The following attestation bundles were made for make_it_sync-2.1.1.tar.gz:
Publisher:
pypi.yaml on gordonwatts/make-it-sync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
make_it_sync-2.1.1.tar.gz -
Subject digest:
47fe27b34537f9e3b09a869b6e0e7c723026cfc3e12087d8e248bf55506ced28 - Sigstore transparency entry: 621854380
- Sigstore integration time:
-
Permalink:
gordonwatts/make-it-sync@ad490ecb1198983ee18797b7abe0829110b4df20 -
Branch / Tag:
refs/tags/2.1.1 - Owner: https://github.com/gordonwatts
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@ad490ecb1198983ee18797b7abe0829110b4df20 -
Trigger Event:
release
-
Statement type:
File details
Details for the file make_it_sync-2.1.1-py3-none-any.whl.
File metadata
- Download URL: make_it_sync-2.1.1-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6df05eb8b2b86828bc322c4212ae9ffc0b26fa13ed0faeb1fc3df4955ebf1649
|
|
| MD5 |
924a0388a85ea1d9d60140b56e90f02b
|
|
| BLAKE2b-256 |
731efa8b7aa26dc3ec89b065ec51c8510c7d27365d8f40ce0d28725c7879f981
|
Provenance
The following attestation bundles were made for make_it_sync-2.1.1-py3-none-any.whl:
Publisher:
pypi.yaml on gordonwatts/make-it-sync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
make_it_sync-2.1.1-py3-none-any.whl -
Subject digest:
6df05eb8b2b86828bc322c4212ae9ffc0b26fa13ed0faeb1fc3df4955ebf1649 - Sigstore transparency entry: 621854383
- Sigstore integration time:
-
Permalink:
gordonwatts/make-it-sync@ad490ecb1198983ee18797b7abe0829110b4df20 -
Branch / Tag:
refs/tags/2.1.1 - Owner: https://github.com/gordonwatts
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@ad490ecb1198983ee18797b7abe0829110b4df20 -
Trigger Event:
release
-
Statement type: