diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-18 06:39:13 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-18 06:39:13 +0000 |
commit | 230b2fd62201faa22fb5a14deb3e74c715e652d2 (patch) | |
tree | ce22843de2c78df52faf177864a7284b1d695210 | |
parent | 6a9f0bae48300aaa27c26be27ef08870f39280c2 (diff) |
automatic import of python-make-it-sync
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-make-it-sync.spec | 295 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 297 insertions, 0 deletions
@@ -0,0 +1 @@ +/make-it-sync-1.0.0.tar.gz diff --git a/python-make-it-sync.spec b/python-make-it-sync.spec new file mode 100644 index 0000000..1ec9c1a --- /dev/null +++ b/python-make-it-sync.spec @@ -0,0 +1,295 @@ +%global _empty_manifest_terminate_build 0 +Name: python-make-it-sync +Version: 1.0.0 +Release: 1 +Summary: Create a sync version of an async function +License: MIT +URL: https://github.com/gordonwatts/make-it-sync +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/13/9b/330ffbde03591de072744ebaedf839cd5674078fc89df32304a51a1618e0/make-it-sync-1.0.0.tar.gz +BuildArch: noarch + +Requires: python3-pytest +Requires: python3-pytest-asyncio +Requires: python3-pytest-mock +Requires: python3-pytest-cov +Requires: python3-coverage +Requires: python3-flake8 +Requires: python3-codecov +Requires: python3-autopep8 +Requires: python3-twine +Requires: python3-wheel + +%description +# make-it-sync + +This very simple library helps provide a synchronous interface for your python `async` functions and class methods. + +## Introduction + +```python +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 +1. All arguments (keyword and positional) are passed +1. Instance methods on classes may be wrapped +1. 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: + +```python +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: + +```python +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. + + + + +%package -n python3-make-it-sync +Summary: Create a sync version of an async function +Provides: python-make-it-sync +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-make-it-sync +# make-it-sync + +This very simple library helps provide a synchronous interface for your python `async` functions and class methods. + +## Introduction + +```python +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 +1. All arguments (keyword and positional) are passed +1. Instance methods on classes may be wrapped +1. 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: + +```python +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: + +```python +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. + + + + +%package help +Summary: Development documents and examples for make-it-sync +Provides: python3-make-it-sync-doc +%description help +# make-it-sync + +This very simple library helps provide a synchronous interface for your python `async` functions and class methods. + +## Introduction + +```python +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 +1. All arguments (keyword and positional) are passed +1. Instance methods on classes may be wrapped +1. 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: + +```python +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: + +```python +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. + + + + +%prep +%autosetup -n make-it-sync-1.0.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-make-it-sync -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.0-1 +- Package Spec generated @@ -0,0 +1 @@ +13452836dc45830e89469756218c3d71 make-it-sync-1.0.0.tar.gz |