%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. [![Build Status](https://travis-ci.com/rhinstaller/dasbus.svg?branch=master)](https://travis-ci.com/rhinstaller/dasbus) [![Documentation Status](https://readthedocs.org/projects/dasbus/badge/?version=latest)](https://dasbus.readthedocs.io/en/latest/?badge=latest) [![codecov](https://codecov.io/gh/rhinstaller/dasbus/branch/master/graph/badge.svg)](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__ = """ """ 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. [![Build Status](https://travis-ci.com/rhinstaller/dasbus.svg?branch=master)](https://travis-ci.com/rhinstaller/dasbus) [![Documentation Status](https://readthedocs.org/projects/dasbus/badge/?version=latest)](https://dasbus.readthedocs.io/en/latest/?badge=latest) [![codecov](https://codecov.io/gh/rhinstaller/dasbus/branch/master/graph/badge.svg)](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__ = """ """ 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. [![Build Status](https://travis-ci.com/rhinstaller/dasbus.svg?branch=master)](https://travis-ci.com/rhinstaller/dasbus) [![Documentation Status](https://readthedocs.org/projects/dasbus/badge/?version=latest)](https://dasbus.readthedocs.io/en/latest/?badge=latest) [![codecov](https://codecov.io/gh/rhinstaller/dasbus/branch/master/graph/badge.svg)](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__ = """ """ 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 * Tue May 30 2023 Python_Bot - 1.7-1 - Package Spec generated