%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 - 0.7.0-1 - Package Spec generated