Skip to main content

Hey, make async functions and classes sync

Project description

Hey, Sync!

This package will allow you to convert an async function or a class (that has async methods) to a sync version.
The new class name will be set as <OLD CLASS NAME>Sync

Installation

pip install heysync

Usage

Async Functions

You can convert async functions to sync function by:

  1. Normal usage:
from heysync import async_to_sync_func

async def async_func() -> str:
    return "Hey there"

sync_func = async_to_sync_func(async_func)

# now you can call sync_func in the usual way
sync_func()  # Hey there
  1. As a decorator:
from heysync import async_to_sync_func

@async_to_sync_func
async def some_func() -> str:
    return "boo"

some_func()  # boo

Classes

You can also convert async classes:

from heysync import make_sync_class

# a class with async methods
class Foo:
    def __init__(self, x: int) -> None:
        self.x = x

    async def __aenter__(self):
        self.x += 2
        await async_func()
        return self

    async def __aexit__(self, exc_type, exc_value, exc_tb) -> None:
        self.x -= 1
        await async_func()

    async def my_func(self) -> str:
        return f"Output is {self.x}"

FooSync = make_sync_class(Foo)
with Foo(7) as foo:
    foo.my_func()  # Output is 9
foo.my_func()  # Output is 8

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

heysync-1.0.1.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

heysync-1.0.1-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file heysync-1.0.1.tar.gz.

File metadata

  • Download URL: heysync-1.0.1.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.9 Linux/5.15.0-1024-azure

File hashes

Hashes for heysync-1.0.1.tar.gz
Algorithm Hash digest
SHA256 bdb695f8ccc16241f598f78bf5e4aef84e9457b64cea6da736cb54ef32354754
MD5 d1f162b40d667b6617cf0d75e7d5fdfa
BLAKE2b-256 dc4ccd24a2d6553cff6c22f18c250fa8514a8526550cbb9a5f856c0f3b76df36

See more details on using hashes here.

File details

Details for the file heysync-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: heysync-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.9 Linux/5.15.0-1024-azure

File hashes

Hashes for heysync-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e8517f03334dcc9ef0302126edad70ed75630646ed57f534cec45e8464ce4423
MD5 286fa117810916d4d2fd8f1aaa03b05d
BLAKE2b-256 1a6101b61560e1fb89089e500f1cd8023eb4f97e354cd2ae8ec51ec0ea327323

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page