diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-29 09:37:58 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-29 09:37:58 +0000 |
commit | 3e1ef7cbc667b649f560041cfa83de70234594c0 (patch) | |
tree | 13ab1df4b8a2ca4d96c1c7cd9a173387c9dc5cd0 | |
parent | afeb760b731382c66cddc7ace8d67fde824158fe (diff) |
automatic import of python-dasbus
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-dasbus.spec | 690 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 692 insertions, 0 deletions
@@ -0,0 +1 @@ +/dasbus-1.7.tar.gz diff --git a/python-dasbus.spec b/python-dasbus.spec new file mode 100644 index 0000000..f65f48b --- /dev/null +++ b/python-dasbus.spec @@ -0,0 +1,690 @@ +%global _empty_manifest_terminate_build 0 +Name: python-dasbus +Version: 1.7 +Release: 1 +Summary: DBus library in Python 3 +License: GNU Lesser General Public License v2 or later (LGPLv2+) +URL: https://github.com/rhinstaller/dasbus +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/37/79/9c5984d723ffbe2e839ee649690f3e1fa6544ab6a17a5150e5ac14a47072/dasbus-1.7.tar.gz +BuildArch: noarch + + +%description +# dasbus +This DBus library is written in Python 3, based on GLib and inspired by pydbus. Find out more in +the [documentation](https://dasbus.readthedocs.io/en/latest/). + +The code used to be part of the [Anaconda Installer](https://github.com/rhinstaller/anaconda) +project. It was based on the [pydbus](https://github.com/LEW21/pydbus) library, but we replaced +it with our own solution because its upstream development stalled. The dasbus library is +a result of this effort. + +[](https://travis-ci.com/rhinstaller/dasbus) +[](https://dasbus.readthedocs.io/en/latest/?badge=latest) +[](https://codecov.io/gh/rhinstaller/dasbus) + +## Requirements + +* Python 3.6+ +* PyGObject 3 + +You can install [PyGObject](https://pygobject.readthedocs.io) provided by your operating system +or use PyPI. The system package is usually called `python3-gi`, `python3-gobject` or `pygobject3`. +See the [instructions](https://pygobject.readthedocs.io/en/latest/getting_started.html) for +your platform (only for PyGObject, you don't need cairo or GTK). + +The library is known to work with Python 3.8, PyGObject 3.34 and GLib 2.63, but these are not the +required minimal versions. + +## Installation + +Install the package from [PyPI](https://pypi.org/project/dasbus/) or install the package +provided by your operating system if available. + +### Install from PyPI + +Follow the instructions above to install the requirements before you install `dasbus` with `pip`. +The required dependencies has to be installed manually in this case. + +``` +pip3 install dasbus +``` + +### Install the system package + +Follow the instructions for your operating system to install the `python-dasbus` package. +The required dependencies should be installed automatically by the system package manager. + +* [Arch Linux](https://dasbus.readthedocs.io/en/latest/#install-on-arch-linux) +* [Debian / Ubuntu](https://dasbus.readthedocs.io/en/latest/#install-on-debian-ubuntu) +* [Fedora / CentOS / RHEL](https://dasbus.readthedocs.io/en/latest/#install-on-fedora-centos-rhel) +* [openSUSE](https://dasbus.readthedocs.io/en/latest/#install-on-opensuse) + +## Examples + +Show the current hostname. + +```python +from dasbus.connection import SystemMessageBus +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.hostname1", + "/org/freedesktop/hostname1" +) + +print(proxy.Hostname) +``` + +Send a notification to the notification server. + +```python +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications" +) + +id = proxy.Notify( + "", 0, "face-smile", "Hello World!", + "This notification can be ignored.", + [], {}, 0 +) + +print("The notification {} was sent.".format(id)) +``` + +Handle a closed notification. + +```python +from dasbus.loop import EventLoop +loop = EventLoop() + +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications" +) + +def callback(id, reason): + print("The notification {} was closed.".format(id)) + +proxy.NotificationClosed.connect(callback) +loop.run() +``` + +Asynchronously fetch a list of network devices. + +```python +from dasbus.loop import EventLoop +loop = EventLoop() + +from dasbus.connection import SystemMessageBus +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.NetworkManager", + "/org/freedesktop/NetworkManager" +) + +def callback(call): + print(call()) + +proxy.GetDevices(callback=callback) +loop.run() +``` + +Inhibit the system suspend and hibernation. + +```python +import os +from dasbus.connection import SystemMessageBus +from dasbus.unix import GLibClientUnix +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.login1", + "/org/freedesktop/login1", + client=GLibClientUnix +) + +fd = proxy.Inhibit( + "sleep", "my-example", "Running an example", "block" +) + +proxy.ListInhibitors() +os.close(fd) +``` + +Define the org.example.HelloWorld service. + +```python +class HelloWorld(object): + __dbus_xml__ = """ + <node> + <interface name="org.example.HelloWorld"> + <method name="Hello"> + <arg direction="in" name="name" type="s" /> + <arg direction="out" name="return" type="s" /> + </method> + </interface> + </node> + """ + + def Hello(self, name): + return "Hello {}!".format(name) +``` + +Define the org.example.HelloWorld service with an automatically generated XML specification. + +```python +from dasbus.server.interface import dbus_interface +from dasbus.typing import Str + +@dbus_interface("org.example.HelloWorld") +class HelloWorld(object): + + def Hello(self, name: Str) -> Str: + return "Hello {}!".format(name) + +print(HelloWorld.__dbus_xml__) +``` + +Publish the org.example.HelloWorld service on the session message bus. + +```python +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() +bus.publish_object("/org/example/HelloWorld", HelloWorld()) +bus.register_service("org.example.HelloWorld") + +from dasbus.loop import EventLoop +loop = EventLoop() +loop.run() +``` + +See more examples in the [documentation](https://dasbus.readthedocs.io/en/latest/examples.html). + +## Inspiration + +Look at the [complete examples](https://github.com/rhinstaller/dasbus/tree/master/examples) or +[DBus services](https://github.com/rhinstaller/anaconda/tree/master/pyanaconda/modules) of +the Anaconda Installer for more inspiration. + + + + +%package -n python3-dasbus +Summary: DBus library in Python 3 +Provides: python-dasbus +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-dasbus +# dasbus +This DBus library is written in Python 3, based on GLib and inspired by pydbus. Find out more in +the [documentation](https://dasbus.readthedocs.io/en/latest/). + +The code used to be part of the [Anaconda Installer](https://github.com/rhinstaller/anaconda) +project. It was based on the [pydbus](https://github.com/LEW21/pydbus) library, but we replaced +it with our own solution because its upstream development stalled. The dasbus library is +a result of this effort. + +[](https://travis-ci.com/rhinstaller/dasbus) +[](https://dasbus.readthedocs.io/en/latest/?badge=latest) +[](https://codecov.io/gh/rhinstaller/dasbus) + +## Requirements + +* Python 3.6+ +* PyGObject 3 + +You can install [PyGObject](https://pygobject.readthedocs.io) provided by your operating system +or use PyPI. The system package is usually called `python3-gi`, `python3-gobject` or `pygobject3`. +See the [instructions](https://pygobject.readthedocs.io/en/latest/getting_started.html) for +your platform (only for PyGObject, you don't need cairo or GTK). + +The library is known to work with Python 3.8, PyGObject 3.34 and GLib 2.63, but these are not the +required minimal versions. + +## Installation + +Install the package from [PyPI](https://pypi.org/project/dasbus/) or install the package +provided by your operating system if available. + +### Install from PyPI + +Follow the instructions above to install the requirements before you install `dasbus` with `pip`. +The required dependencies has to be installed manually in this case. + +``` +pip3 install dasbus +``` + +### Install the system package + +Follow the instructions for your operating system to install the `python-dasbus` package. +The required dependencies should be installed automatically by the system package manager. + +* [Arch Linux](https://dasbus.readthedocs.io/en/latest/#install-on-arch-linux) +* [Debian / Ubuntu](https://dasbus.readthedocs.io/en/latest/#install-on-debian-ubuntu) +* [Fedora / CentOS / RHEL](https://dasbus.readthedocs.io/en/latest/#install-on-fedora-centos-rhel) +* [openSUSE](https://dasbus.readthedocs.io/en/latest/#install-on-opensuse) + +## Examples + +Show the current hostname. + +```python +from dasbus.connection import SystemMessageBus +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.hostname1", + "/org/freedesktop/hostname1" +) + +print(proxy.Hostname) +``` + +Send a notification to the notification server. + +```python +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications" +) + +id = proxy.Notify( + "", 0, "face-smile", "Hello World!", + "This notification can be ignored.", + [], {}, 0 +) + +print("The notification {} was sent.".format(id)) +``` + +Handle a closed notification. + +```python +from dasbus.loop import EventLoop +loop = EventLoop() + +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications" +) + +def callback(id, reason): + print("The notification {} was closed.".format(id)) + +proxy.NotificationClosed.connect(callback) +loop.run() +``` + +Asynchronously fetch a list of network devices. + +```python +from dasbus.loop import EventLoop +loop = EventLoop() + +from dasbus.connection import SystemMessageBus +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.NetworkManager", + "/org/freedesktop/NetworkManager" +) + +def callback(call): + print(call()) + +proxy.GetDevices(callback=callback) +loop.run() +``` + +Inhibit the system suspend and hibernation. + +```python +import os +from dasbus.connection import SystemMessageBus +from dasbus.unix import GLibClientUnix +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.login1", + "/org/freedesktop/login1", + client=GLibClientUnix +) + +fd = proxy.Inhibit( + "sleep", "my-example", "Running an example", "block" +) + +proxy.ListInhibitors() +os.close(fd) +``` + +Define the org.example.HelloWorld service. + +```python +class HelloWorld(object): + __dbus_xml__ = """ + <node> + <interface name="org.example.HelloWorld"> + <method name="Hello"> + <arg direction="in" name="name" type="s" /> + <arg direction="out" name="return" type="s" /> + </method> + </interface> + </node> + """ + + def Hello(self, name): + return "Hello {}!".format(name) +``` + +Define the org.example.HelloWorld service with an automatically generated XML specification. + +```python +from dasbus.server.interface import dbus_interface +from dasbus.typing import Str + +@dbus_interface("org.example.HelloWorld") +class HelloWorld(object): + + def Hello(self, name: Str) -> Str: + return "Hello {}!".format(name) + +print(HelloWorld.__dbus_xml__) +``` + +Publish the org.example.HelloWorld service on the session message bus. + +```python +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() +bus.publish_object("/org/example/HelloWorld", HelloWorld()) +bus.register_service("org.example.HelloWorld") + +from dasbus.loop import EventLoop +loop = EventLoop() +loop.run() +``` + +See more examples in the [documentation](https://dasbus.readthedocs.io/en/latest/examples.html). + +## Inspiration + +Look at the [complete examples](https://github.com/rhinstaller/dasbus/tree/master/examples) or +[DBus services](https://github.com/rhinstaller/anaconda/tree/master/pyanaconda/modules) of +the Anaconda Installer for more inspiration. + + + + +%package help +Summary: Development documents and examples for dasbus +Provides: python3-dasbus-doc +%description help +# dasbus +This DBus library is written in Python 3, based on GLib and inspired by pydbus. Find out more in +the [documentation](https://dasbus.readthedocs.io/en/latest/). + +The code used to be part of the [Anaconda Installer](https://github.com/rhinstaller/anaconda) +project. It was based on the [pydbus](https://github.com/LEW21/pydbus) library, but we replaced +it with our own solution because its upstream development stalled. The dasbus library is +a result of this effort. + +[](https://travis-ci.com/rhinstaller/dasbus) +[](https://dasbus.readthedocs.io/en/latest/?badge=latest) +[](https://codecov.io/gh/rhinstaller/dasbus) + +## Requirements + +* Python 3.6+ +* PyGObject 3 + +You can install [PyGObject](https://pygobject.readthedocs.io) provided by your operating system +or use PyPI. The system package is usually called `python3-gi`, `python3-gobject` or `pygobject3`. +See the [instructions](https://pygobject.readthedocs.io/en/latest/getting_started.html) for +your platform (only for PyGObject, you don't need cairo or GTK). + +The library is known to work with Python 3.8, PyGObject 3.34 and GLib 2.63, but these are not the +required minimal versions. + +## Installation + +Install the package from [PyPI](https://pypi.org/project/dasbus/) or install the package +provided by your operating system if available. + +### Install from PyPI + +Follow the instructions above to install the requirements before you install `dasbus` with `pip`. +The required dependencies has to be installed manually in this case. + +``` +pip3 install dasbus +``` + +### Install the system package + +Follow the instructions for your operating system to install the `python-dasbus` package. +The required dependencies should be installed automatically by the system package manager. + +* [Arch Linux](https://dasbus.readthedocs.io/en/latest/#install-on-arch-linux) +* [Debian / Ubuntu](https://dasbus.readthedocs.io/en/latest/#install-on-debian-ubuntu) +* [Fedora / CentOS / RHEL](https://dasbus.readthedocs.io/en/latest/#install-on-fedora-centos-rhel) +* [openSUSE](https://dasbus.readthedocs.io/en/latest/#install-on-opensuse) + +## Examples + +Show the current hostname. + +```python +from dasbus.connection import SystemMessageBus +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.hostname1", + "/org/freedesktop/hostname1" +) + +print(proxy.Hostname) +``` + +Send a notification to the notification server. + +```python +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications" +) + +id = proxy.Notify( + "", 0, "face-smile", "Hello World!", + "This notification can be ignored.", + [], {}, 0 +) + +print("The notification {} was sent.".format(id)) +``` + +Handle a closed notification. + +```python +from dasbus.loop import EventLoop +loop = EventLoop() + +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications" +) + +def callback(id, reason): + print("The notification {} was closed.".format(id)) + +proxy.NotificationClosed.connect(callback) +loop.run() +``` + +Asynchronously fetch a list of network devices. + +```python +from dasbus.loop import EventLoop +loop = EventLoop() + +from dasbus.connection import SystemMessageBus +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.NetworkManager", + "/org/freedesktop/NetworkManager" +) + +def callback(call): + print(call()) + +proxy.GetDevices(callback=callback) +loop.run() +``` + +Inhibit the system suspend and hibernation. + +```python +import os +from dasbus.connection import SystemMessageBus +from dasbus.unix import GLibClientUnix +bus = SystemMessageBus() + +proxy = bus.get_proxy( + "org.freedesktop.login1", + "/org/freedesktop/login1", + client=GLibClientUnix +) + +fd = proxy.Inhibit( + "sleep", "my-example", "Running an example", "block" +) + +proxy.ListInhibitors() +os.close(fd) +``` + +Define the org.example.HelloWorld service. + +```python +class HelloWorld(object): + __dbus_xml__ = """ + <node> + <interface name="org.example.HelloWorld"> + <method name="Hello"> + <arg direction="in" name="name" type="s" /> + <arg direction="out" name="return" type="s" /> + </method> + </interface> + </node> + """ + + def Hello(self, name): + return "Hello {}!".format(name) +``` + +Define the org.example.HelloWorld service with an automatically generated XML specification. + +```python +from dasbus.server.interface import dbus_interface +from dasbus.typing import Str + +@dbus_interface("org.example.HelloWorld") +class HelloWorld(object): + + def Hello(self, name: Str) -> Str: + return "Hello {}!".format(name) + +print(HelloWorld.__dbus_xml__) +``` + +Publish the org.example.HelloWorld service on the session message bus. + +```python +from dasbus.connection import SessionMessageBus +bus = SessionMessageBus() +bus.publish_object("/org/example/HelloWorld", HelloWorld()) +bus.register_service("org.example.HelloWorld") + +from dasbus.loop import EventLoop +loop = EventLoop() +loop.run() +``` + +See more examples in the [documentation](https://dasbus.readthedocs.io/en/latest/examples.html). + +## Inspiration + +Look at the [complete examples](https://github.com/rhinstaller/dasbus/tree/master/examples) or +[DBus services](https://github.com/rhinstaller/anaconda/tree/master/pyanaconda/modules) of +the Anaconda Installer for more inspiration. + + + + +%prep +%autosetup -n dasbus-1.7 + +%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-dasbus -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 1.7-1 +- Package Spec generated @@ -0,0 +1 @@ +36cc01e43cada6bd258f1732f7276e7c dasbus-1.7.tar.gz |