summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-18 06:39:13 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-18 06:39:13 +0000
commit230b2fd62201faa22fb5a14deb3e74c715e652d2 (patch)
treece22843de2c78df52faf177864a7284b1d695210
parent6a9f0bae48300aaa27c26be27ef08870f39280c2 (diff)
automatic import of python-make-it-sync
-rw-r--r--.gitignore1
-rw-r--r--python-make-it-sync.spec295
-rw-r--r--sources1
3 files changed, 297 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..765f2b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/sources b/sources
new file mode 100644
index 0000000..2762487
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+13452836dc45830e89469756218c3d71 make-it-sync-1.0.0.tar.gz