/usr/lib/python3/dist-packages/pydbus/request_name.py is in python3-pydbus 0.6.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | from .exitable import ExitableWithAliases
class NameOwner(ExitableWithAliases("unown")):
__slots__ = ()
def __init__(self, bus, name, allow_replacement, replace):
flags = 4 | (1 if allow_replacement else 0) | (2 if replace else 0)
res = bus.dbus.RequestName(name, flags)
if res == 1:
self._at_exit(lambda: bus.dbus.ReleaseName(name))
return # OK
if res == 3:
raise RuntimeError("name already exists on the bus")
if res == 4:
raise RuntimeError("you're already the owner of this name")
raise RuntimeError("cannot take ownership of the name")
class RequestNameMixin(object):
__slots__ = ()
def request_name(self, name, allow_replacement=True, replace=False):
"""Aquires a bus name.
Returns
-------
NameOwner
An object you can use as a context manager to unown the name later.
"""
return NameOwner(self, name, allow_replacement, replace)
|