summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-11 15:44:34 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-11 15:44:34 +0000
commitdcdfa2b8369ea93a030bd2ae6db09e60f08b0cca (patch)
treeab229e8251ee0b5dcb69b0f601232348ba98dd12
parentf81cdbf8a8eb1d0e393099945804204e43388dec (diff)
automatic import of python-dbus-next
-rw-r--r--.gitignore1
-rw-r--r--python-dbus-next.spec624
-rw-r--r--sources1
3 files changed, 626 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..4219bc0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/dbus_next-0.2.3.tar.gz
diff --git a/python-dbus-next.spec b/python-dbus-next.spec
new file mode 100644
index 0000000..2618d80
--- /dev/null
+++ b/python-dbus-next.spec
@@ -0,0 +1,624 @@
+%global _empty_manifest_terminate_build 0
+Name: python-dbus-next
+Version: 0.2.3
+Release: 1
+Summary: A zero-dependency DBus library for Python with asyncio support
+License: MIT
+URL: https://github.com/altdesktop/python-dbus-next
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ce/45/6a40fbe886d60a8c26f480e7d12535502b5ba123814b3b9a0b002ebca198/dbus_next-0.2.3.tar.gz
+BuildArch: noarch
+
+
+%description
+
+# python-dbus-next
+
+The next great DBus library for Python.
+
+[Documentation](https://python-dbus-next.readthedocs.io/en/latest/)
+
+[Chat](https://discord.gg/UdbXHVX)
+
+python-dbus-next is a Python library for DBus that aims to be a fully featured high level library primarily geared towards integration of applications into Linux desktop and mobile environments.
+
+Desktop application developers can use this library for integrating their applications into desktop environments by implementing common DBus standard interfaces or creating custom plugin interfaces.
+
+Desktop users can use this library to create their own scripts and utilities to interact with those interfaces for customization of their desktop environment.
+
+python-dbus-next plans to improve over other DBus libraries for Python in the following ways:
+
+* Zero dependencies and pure Python 3.
+* Support for multiple IO backends including asyncio and the GLib main loop.
+* Nonblocking IO suitable for GUI development.
+* Target the latest language features of Python for beautiful services and clients.
+* Complete implementation of the DBus type system without ever guessing types.
+* Integration tests for all features of the library.
+* Completely documented public API.
+
+## Installing
+
+This library is available on PyPi as [dbus-next](https://pypi.org/project/dbus-next/).
+
+```
+pip3 install dbus-next
+```
+
+## The Client Interface
+
+To use a service on the bus, the library constructs a proxy object you can use to call methods, get and set properties, and listen to signals.
+
+For more information, see the [overview for the high-level client](https://python-dbus-next.readthedocs.io/en/latest/high-level-client/index.html).
+
+This example connects to a media player and controls it with the [MPRIS](https://specifications.freedesktop.org/mpris-spec/latest/) DBus interface.
+
+```python
+from dbus_next.aio import MessageBus
+
+import asyncio
+
+loop = asyncio.get_event_loop()
+
+
+async def main():
+ bus = await MessageBus().connect()
+ # the introspection xml would normally be included in your project, but
+ # this is convenient for development
+ introspection = await bus.introspect('org.mpris.MediaPlayer2.vlc', '/org/mpris/MediaPlayer2')
+
+ obj = bus.get_proxy_object('org.mpris.MediaPlayer2.vlc', '/org/mpris/MediaPlayer2', introspection)
+ player = obj.get_interface('org.mpris.MediaPlayer2.Player')
+ properties = obj.get_interface('org.freedesktop.DBus.Properties')
+
+ # call methods on the interface (this causes the media player to play)
+ await player.call_play()
+
+ volume = await player.get_volume()
+ print(f'current volume: {volume}, setting to 0.5')
+
+ await player.set_volume(0.5)
+
+ # listen to signals
+ def on_properties_changed(interface_name, changed_properties, invalidated_properties):
+ for changed, variant in changed_properties.items():
+ print(f'property changed: {changed} - {variant.value}')
+
+ properties.on_properties_changed(on_properties_changed)
+
+ await loop.create_future()
+
+loop.run_until_complete(main())
+```
+
+## The Service Interface
+
+To define a service on the bus, use the `ServiceInterface` class and decorate class methods to specify DBus methods, properties, and signals with their type signatures.
+
+For more information, see the [overview for the high-level service](https://python-dbus-next.readthedocs.io/en/latest/high-level-service/index.html).
+
+```python
+from dbus_next.service import ServiceInterface, method, dbus_property, signal, Variant
+from dbus_next.aio MessageBus
+
+import asyncio
+
+class ExampleInterface(ServiceInterface):
+ def __init__(self, name):
+ super().__init__(name)
+ self._string_prop = 'kevin'
+
+ @method()
+ def Echo(self, what: 's') -> 's':
+ return what
+
+ @method()
+ def GetVariantDict() -> 'a{sv}':
+ return {
+ 'foo': Variant('s', 'bar'),
+ 'bat': Variant('x', -55),
+ 'a_list': Variant('as', ['hello', 'world'])
+ }
+
+ @dbus_property()
+ def string_prop(self) -> 's':
+ return self._string_prop
+
+ @string_prop.setter
+ def string_prop_setter(self, val: 's'):
+ self._string_prop = val
+
+ @signal()
+ def signal_simple(self) -> 's':
+ return 'hello'
+
+async def main():
+ bus = await MessageBus().connect()
+ interface = ExampleInterface('test.interface')
+ bus.export('/test/path', interface)
+ # now that we are ready to handle requests, we can request name from D-Bus
+ await bus.request_name('test.name')
+ # wait indefinitely
+ await asyncio.get_event_loop().create_future()
+
+asyncio.get_event_loop().run_until_complete(main())
+```
+
+## The Low-Level Interface
+
+The low-level interface works with DBus messages directly.
+
+For more information, see the [overview for the low-level interface](https://python-dbus-next.readthedocs.io/en/latest/low-level-interface/index.html).
+
+```python
+from dbus_next.message import Message, MessageType
+from dbus_next.aio import MessageBus
+
+import asyncio
+import json
+
+loop = asyncio.get_event_loop()
+
+
+async def main():
+ bus = await MessageBus().connect()
+
+ reply = await bus.call(
+ Message(destination='org.freedesktop.DBus',
+ path='/org/freedesktop/DBus',
+ interface='org.freedesktop.DBus',
+ member='ListNames'))
+
+ if reply.message_type == MessageType.ERROR:
+ raise Exception(reply.body[0])
+
+ print(json.dumps(reply.body[0], indent=2))
+
+
+loop.run_until_complete(main())
+```
+
+## Projects that use python-dbus-next
+
+* The [Playerctl](https://github.com/altdesktop/playerctl) test suite
+* [i3-dstatus](https://github.com/altdesktop/i3-dstatus)
+
+## Contributing
+
+Contributions are welcome. Development happens on [Github](https://github.com/altdesktop/python-dbus-next).
+
+Before you commit, run `make` to run the linter, code formatter, and the test suite.
+
+# Copyright
+
+You can use this code under an MIT license (see LICENSE).
+
+© 2019, Tony Crisci
+
+
+
+
+%package -n python3-dbus-next
+Summary: A zero-dependency DBus library for Python with asyncio support
+Provides: python-dbus-next
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-dbus-next
+
+# python-dbus-next
+
+The next great DBus library for Python.
+
+[Documentation](https://python-dbus-next.readthedocs.io/en/latest/)
+
+[Chat](https://discord.gg/UdbXHVX)
+
+python-dbus-next is a Python library for DBus that aims to be a fully featured high level library primarily geared towards integration of applications into Linux desktop and mobile environments.
+
+Desktop application developers can use this library for integrating their applications into desktop environments by implementing common DBus standard interfaces or creating custom plugin interfaces.
+
+Desktop users can use this library to create their own scripts and utilities to interact with those interfaces for customization of their desktop environment.
+
+python-dbus-next plans to improve over other DBus libraries for Python in the following ways:
+
+* Zero dependencies and pure Python 3.
+* Support for multiple IO backends including asyncio and the GLib main loop.
+* Nonblocking IO suitable for GUI development.
+* Target the latest language features of Python for beautiful services and clients.
+* Complete implementation of the DBus type system without ever guessing types.
+* Integration tests for all features of the library.
+* Completely documented public API.
+
+## Installing
+
+This library is available on PyPi as [dbus-next](https://pypi.org/project/dbus-next/).
+
+```
+pip3 install dbus-next
+```
+
+## The Client Interface
+
+To use a service on the bus, the library constructs a proxy object you can use to call methods, get and set properties, and listen to signals.
+
+For more information, see the [overview for the high-level client](https://python-dbus-next.readthedocs.io/en/latest/high-level-client/index.html).
+
+This example connects to a media player and controls it with the [MPRIS](https://specifications.freedesktop.org/mpris-spec/latest/) DBus interface.
+
+```python
+from dbus_next.aio import MessageBus
+
+import asyncio
+
+loop = asyncio.get_event_loop()
+
+
+async def main():
+ bus = await MessageBus().connect()
+ # the introspection xml would normally be included in your project, but
+ # this is convenient for development
+ introspection = await bus.introspect('org.mpris.MediaPlayer2.vlc', '/org/mpris/MediaPlayer2')
+
+ obj = bus.get_proxy_object('org.mpris.MediaPlayer2.vlc', '/org/mpris/MediaPlayer2', introspection)
+ player = obj.get_interface('org.mpris.MediaPlayer2.Player')
+ properties = obj.get_interface('org.freedesktop.DBus.Properties')
+
+ # call methods on the interface (this causes the media player to play)
+ await player.call_play()
+
+ volume = await player.get_volume()
+ print(f'current volume: {volume}, setting to 0.5')
+
+ await player.set_volume(0.5)
+
+ # listen to signals
+ def on_properties_changed(interface_name, changed_properties, invalidated_properties):
+ for changed, variant in changed_properties.items():
+ print(f'property changed: {changed} - {variant.value}')
+
+ properties.on_properties_changed(on_properties_changed)
+
+ await loop.create_future()
+
+loop.run_until_complete(main())
+```
+
+## The Service Interface
+
+To define a service on the bus, use the `ServiceInterface` class and decorate class methods to specify DBus methods, properties, and signals with their type signatures.
+
+For more information, see the [overview for the high-level service](https://python-dbus-next.readthedocs.io/en/latest/high-level-service/index.html).
+
+```python
+from dbus_next.service import ServiceInterface, method, dbus_property, signal, Variant
+from dbus_next.aio MessageBus
+
+import asyncio
+
+class ExampleInterface(ServiceInterface):
+ def __init__(self, name):
+ super().__init__(name)
+ self._string_prop = 'kevin'
+
+ @method()
+ def Echo(self, what: 's') -> 's':
+ return what
+
+ @method()
+ def GetVariantDict() -> 'a{sv}':
+ return {
+ 'foo': Variant('s', 'bar'),
+ 'bat': Variant('x', -55),
+ 'a_list': Variant('as', ['hello', 'world'])
+ }
+
+ @dbus_property()
+ def string_prop(self) -> 's':
+ return self._string_prop
+
+ @string_prop.setter
+ def string_prop_setter(self, val: 's'):
+ self._string_prop = val
+
+ @signal()
+ def signal_simple(self) -> 's':
+ return 'hello'
+
+async def main():
+ bus = await MessageBus().connect()
+ interface = ExampleInterface('test.interface')
+ bus.export('/test/path', interface)
+ # now that we are ready to handle requests, we can request name from D-Bus
+ await bus.request_name('test.name')
+ # wait indefinitely
+ await asyncio.get_event_loop().create_future()
+
+asyncio.get_event_loop().run_until_complete(main())
+```
+
+## The Low-Level Interface
+
+The low-level interface works with DBus messages directly.
+
+For more information, see the [overview for the low-level interface](https://python-dbus-next.readthedocs.io/en/latest/low-level-interface/index.html).
+
+```python
+from dbus_next.message import Message, MessageType
+from dbus_next.aio import MessageBus
+
+import asyncio
+import json
+
+loop = asyncio.get_event_loop()
+
+
+async def main():
+ bus = await MessageBus().connect()
+
+ reply = await bus.call(
+ Message(destination='org.freedesktop.DBus',
+ path='/org/freedesktop/DBus',
+ interface='org.freedesktop.DBus',
+ member='ListNames'))
+
+ if reply.message_type == MessageType.ERROR:
+ raise Exception(reply.body[0])
+
+ print(json.dumps(reply.body[0], indent=2))
+
+
+loop.run_until_complete(main())
+```
+
+## Projects that use python-dbus-next
+
+* The [Playerctl](https://github.com/altdesktop/playerctl) test suite
+* [i3-dstatus](https://github.com/altdesktop/i3-dstatus)
+
+## Contributing
+
+Contributions are welcome. Development happens on [Github](https://github.com/altdesktop/python-dbus-next).
+
+Before you commit, run `make` to run the linter, code formatter, and the test suite.
+
+# Copyright
+
+You can use this code under an MIT license (see LICENSE).
+
+© 2019, Tony Crisci
+
+
+
+
+%package help
+Summary: Development documents and examples for dbus-next
+Provides: python3-dbus-next-doc
+%description help
+
+# python-dbus-next
+
+The next great DBus library for Python.
+
+[Documentation](https://python-dbus-next.readthedocs.io/en/latest/)
+
+[Chat](https://discord.gg/UdbXHVX)
+
+python-dbus-next is a Python library for DBus that aims to be a fully featured high level library primarily geared towards integration of applications into Linux desktop and mobile environments.
+
+Desktop application developers can use this library for integrating their applications into desktop environments by implementing common DBus standard interfaces or creating custom plugin interfaces.
+
+Desktop users can use this library to create their own scripts and utilities to interact with those interfaces for customization of their desktop environment.
+
+python-dbus-next plans to improve over other DBus libraries for Python in the following ways:
+
+* Zero dependencies and pure Python 3.
+* Support for multiple IO backends including asyncio and the GLib main loop.
+* Nonblocking IO suitable for GUI development.
+* Target the latest language features of Python for beautiful services and clients.
+* Complete implementation of the DBus type system without ever guessing types.
+* Integration tests for all features of the library.
+* Completely documented public API.
+
+## Installing
+
+This library is available on PyPi as [dbus-next](https://pypi.org/project/dbus-next/).
+
+```
+pip3 install dbus-next
+```
+
+## The Client Interface
+
+To use a service on the bus, the library constructs a proxy object you can use to call methods, get and set properties, and listen to signals.
+
+For more information, see the [overview for the high-level client](https://python-dbus-next.readthedocs.io/en/latest/high-level-client/index.html).
+
+This example connects to a media player and controls it with the [MPRIS](https://specifications.freedesktop.org/mpris-spec/latest/) DBus interface.
+
+```python
+from dbus_next.aio import MessageBus
+
+import asyncio
+
+loop = asyncio.get_event_loop()
+
+
+async def main():
+ bus = await MessageBus().connect()
+ # the introspection xml would normally be included in your project, but
+ # this is convenient for development
+ introspection = await bus.introspect('org.mpris.MediaPlayer2.vlc', '/org/mpris/MediaPlayer2')
+
+ obj = bus.get_proxy_object('org.mpris.MediaPlayer2.vlc', '/org/mpris/MediaPlayer2', introspection)
+ player = obj.get_interface('org.mpris.MediaPlayer2.Player')
+ properties = obj.get_interface('org.freedesktop.DBus.Properties')
+
+ # call methods on the interface (this causes the media player to play)
+ await player.call_play()
+
+ volume = await player.get_volume()
+ print(f'current volume: {volume}, setting to 0.5')
+
+ await player.set_volume(0.5)
+
+ # listen to signals
+ def on_properties_changed(interface_name, changed_properties, invalidated_properties):
+ for changed, variant in changed_properties.items():
+ print(f'property changed: {changed} - {variant.value}')
+
+ properties.on_properties_changed(on_properties_changed)
+
+ await loop.create_future()
+
+loop.run_until_complete(main())
+```
+
+## The Service Interface
+
+To define a service on the bus, use the `ServiceInterface` class and decorate class methods to specify DBus methods, properties, and signals with their type signatures.
+
+For more information, see the [overview for the high-level service](https://python-dbus-next.readthedocs.io/en/latest/high-level-service/index.html).
+
+```python
+from dbus_next.service import ServiceInterface, method, dbus_property, signal, Variant
+from dbus_next.aio MessageBus
+
+import asyncio
+
+class ExampleInterface(ServiceInterface):
+ def __init__(self, name):
+ super().__init__(name)
+ self._string_prop = 'kevin'
+
+ @method()
+ def Echo(self, what: 's') -> 's':
+ return what
+
+ @method()
+ def GetVariantDict() -> 'a{sv}':
+ return {
+ 'foo': Variant('s', 'bar'),
+ 'bat': Variant('x', -55),
+ 'a_list': Variant('as', ['hello', 'world'])
+ }
+
+ @dbus_property()
+ def string_prop(self) -> 's':
+ return self._string_prop
+
+ @string_prop.setter
+ def string_prop_setter(self, val: 's'):
+ self._string_prop = val
+
+ @signal()
+ def signal_simple(self) -> 's':
+ return 'hello'
+
+async def main():
+ bus = await MessageBus().connect()
+ interface = ExampleInterface('test.interface')
+ bus.export('/test/path', interface)
+ # now that we are ready to handle requests, we can request name from D-Bus
+ await bus.request_name('test.name')
+ # wait indefinitely
+ await asyncio.get_event_loop().create_future()
+
+asyncio.get_event_loop().run_until_complete(main())
+```
+
+## The Low-Level Interface
+
+The low-level interface works with DBus messages directly.
+
+For more information, see the [overview for the low-level interface](https://python-dbus-next.readthedocs.io/en/latest/low-level-interface/index.html).
+
+```python
+from dbus_next.message import Message, MessageType
+from dbus_next.aio import MessageBus
+
+import asyncio
+import json
+
+loop = asyncio.get_event_loop()
+
+
+async def main():
+ bus = await MessageBus().connect()
+
+ reply = await bus.call(
+ Message(destination='org.freedesktop.DBus',
+ path='/org/freedesktop/DBus',
+ interface='org.freedesktop.DBus',
+ member='ListNames'))
+
+ if reply.message_type == MessageType.ERROR:
+ raise Exception(reply.body[0])
+
+ print(json.dumps(reply.body[0], indent=2))
+
+
+loop.run_until_complete(main())
+```
+
+## Projects that use python-dbus-next
+
+* The [Playerctl](https://github.com/altdesktop/playerctl) test suite
+* [i3-dstatus](https://github.com/altdesktop/i3-dstatus)
+
+## Contributing
+
+Contributions are welcome. Development happens on [Github](https://github.com/altdesktop/python-dbus-next).
+
+Before you commit, run `make` to run the linter, code formatter, and the test suite.
+
+# Copyright
+
+You can use this code under an MIT license (see LICENSE).
+
+© 2019, Tony Crisci
+
+
+
+
+%prep
+%autosetup -n dbus-next-0.2.3
+
+%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-dbus-next -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.3-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..4a7bbbd
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+0e31605bd90f3460aebcd0bb7fe0dc20 dbus_next-0.2.3.tar.gz