diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-11 12:30:59 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 12:30:59 +0000 |
| commit | f506b57835b2990fde4797d95c6f2836c5051c94 (patch) | |
| tree | c16cd21001135716eaaef6422e9bc4e797fcf10c /python-pulsar-odm.spec | |
| parent | d7ad162900c25518bda703f8304f8c716b3e4dbd (diff) | |
automatic import of python-pulsar-odm
Diffstat (limited to 'python-pulsar-odm.spec')
| -rw-r--r-- | python-pulsar-odm.spec | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/python-pulsar-odm.spec b/python-pulsar-odm.spec new file mode 100644 index 0000000..355fff5 --- /dev/null +++ b/python-pulsar-odm.spec @@ -0,0 +1,171 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pulsar-odm +Version: 0.7.0 +Release: 1 +Summary: please add a summary manually as the author left a blank one +License: BSD +URL: https://github.com/quantmind/pulsar-odm +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c9/a2/77781f094fa4fac04526e7d6f673b4b8d5e3b7b5f0ce544f15deb0c7ca06/pulsar-odm-0.7.0.tar.gz +BuildArch: noarch + + +%description +To be able to use the object data mapper within standard blocking code, +one needs to use pulsar GreenPool_ as the following snippet highlights: + from datetime import datetime + from sqlalchemy import Integer, Column, String, DateTime, Boolean + from pulsar.apps.greenio import GreenPool + import odm + class Task(odm.Model): + id = Column(Integer, primary_key=True) + subject = Column(String(250)) + done = Column(Boolean, default=False) + created = Column(DateTime, default=datetime.utcnow) + def __str__(self): + return '%d: %s' % (self.id, self.subject) + def example(mp): + # Make sure table is available + mp.table_create() + # Insert a new Task in the table + with mp.begin() as session: + task = mp.task(subject='my task') + session.add(task) + return task + if __name__ == '__main__': + pool = GreenPool() + mp = odm.Mapper('postgresql+green://odm:odmtest@127.0.0.1:5432/odmtests') + mp.register(Task) + task = pool._loop.run_until_complete(pool.submit(example, mp)) + print(task) +The ``example`` function is executed in a greenlet other than the main one. This is important otherwise the call fails: + >> example(mp) + >> Traceback (most recent call last): + RuntimeError: acquire in main greenlet +Running the function on the greenlet pool guarantees the correct asynchronous execution. When psycopg2_ +executes a command against the database on a child greenlet, it switches control to the parent (main) greenlet, which is controlled by the asyncio eventloop so that other asynchronous operations can be carried out. +Once the result of the execution is ready, the execution switches back to the original child greenlet so that the ``example`` function can continue. + +%package -n python3-pulsar-odm +Summary: please add a summary manually as the author left a blank one +Provides: python-pulsar-odm +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pulsar-odm +To be able to use the object data mapper within standard blocking code, +one needs to use pulsar GreenPool_ as the following snippet highlights: + from datetime import datetime + from sqlalchemy import Integer, Column, String, DateTime, Boolean + from pulsar.apps.greenio import GreenPool + import odm + class Task(odm.Model): + id = Column(Integer, primary_key=True) + subject = Column(String(250)) + done = Column(Boolean, default=False) + created = Column(DateTime, default=datetime.utcnow) + def __str__(self): + return '%d: %s' % (self.id, self.subject) + def example(mp): + # Make sure table is available + mp.table_create() + # Insert a new Task in the table + with mp.begin() as session: + task = mp.task(subject='my task') + session.add(task) + return task + if __name__ == '__main__': + pool = GreenPool() + mp = odm.Mapper('postgresql+green://odm:odmtest@127.0.0.1:5432/odmtests') + mp.register(Task) + task = pool._loop.run_until_complete(pool.submit(example, mp)) + print(task) +The ``example`` function is executed in a greenlet other than the main one. This is important otherwise the call fails: + >> example(mp) + >> Traceback (most recent call last): + RuntimeError: acquire in main greenlet +Running the function on the greenlet pool guarantees the correct asynchronous execution. When psycopg2_ +executes a command against the database on a child greenlet, it switches control to the parent (main) greenlet, which is controlled by the asyncio eventloop so that other asynchronous operations can be carried out. +Once the result of the execution is ready, the execution switches back to the original child greenlet so that the ``example`` function can continue. + +%package help +Summary: Development documents and examples for pulsar-odm +Provides: python3-pulsar-odm-doc +%description help +To be able to use the object data mapper within standard blocking code, +one needs to use pulsar GreenPool_ as the following snippet highlights: + from datetime import datetime + from sqlalchemy import Integer, Column, String, DateTime, Boolean + from pulsar.apps.greenio import GreenPool + import odm + class Task(odm.Model): + id = Column(Integer, primary_key=True) + subject = Column(String(250)) + done = Column(Boolean, default=False) + created = Column(DateTime, default=datetime.utcnow) + def __str__(self): + return '%d: %s' % (self.id, self.subject) + def example(mp): + # Make sure table is available + mp.table_create() + # Insert a new Task in the table + with mp.begin() as session: + task = mp.task(subject='my task') + session.add(task) + return task + if __name__ == '__main__': + pool = GreenPool() + mp = odm.Mapper('postgresql+green://odm:odmtest@127.0.0.1:5432/odmtests') + mp.register(Task) + task = pool._loop.run_until_complete(pool.submit(example, mp)) + print(task) +The ``example`` function is executed in a greenlet other than the main one. This is important otherwise the call fails: + >> example(mp) + >> Traceback (most recent call last): + RuntimeError: acquire in main greenlet +Running the function on the greenlet pool guarantees the correct asynchronous execution. When psycopg2_ +executes a command against the database on a child greenlet, it switches control to the parent (main) greenlet, which is controlled by the asyncio eventloop so that other asynchronous operations can be carried out. +Once the result of the execution is ready, the execution switches back to the original child greenlet so that the ``example`` function can continue. + +%prep +%autosetup -n pulsar-odm-0.7.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-pulsar-odm -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.0-1 +- Package Spec generated |
