summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-pulsar-odm.spec171
-rw-r--r--sources1
3 files changed, 173 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..7ca689d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pulsar-odm-0.7.0.tar.gz
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
diff --git a/sources b/sources
new file mode 100644
index 0000000..47c3ea0
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+aac368e9602720280ba5e636495952ea pulsar-odm-0.7.0.tar.gz