Skip to main content

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:

  1. Will wrap a stand-alone function
  2. All arguments (keyword and positional) are passed
  3. Instance methods on classes may be wrapped
  4. 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.

Metadata

Release files for make-it-sync 2.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for make-it-sync 2.1.1
File Size Uploaded
make_it_sync-2.1.1.tar.gz 5.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for make-it-sync 2.1.1
File Interpreter ABI Platform
make_it_sync-2.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 9.8 kB

Release files / make_it_sync-2.1.1.tar.gz

Download URL make_it_sync-2.1.1.tar.gz
Size 5.4 kB
Tags Source
SHA-256 checksum
How to use checksums
47fe27b34537f9e3b09a869b6e0e7c723026cfc3e12087d8e248bf55506ced28
BLAKE2b-256 checksum
How to use checksums
9705617b390168a7793930f6a6d93e60e0f54e2561d41026a3692dee6160efbd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2025.

Transparency log

Release files / make_it_sync-2.1.1-py3-none-any.whl

Download URL make_it_sync-2.1.1-py3-none-any.whl
Size 4.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6df05eb8b2b86828bc322c4212ae9ffc0b26fa13ed0faeb1fc3df4955ebf1649
BLAKE2b-256 checksum
How to use checksums
731efa8b7aa26dc3ec89b065ec51c8510c7d27365d8f40ce0d28725c7879f981
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2025.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page