Add utils.qualname. Closes #169.
This commit is contained in:
parent
b5b240c3f6
commit
71308b45ac
@ -658,7 +658,7 @@ class Application(QApplication):
|
||||
to_save.append(("cookies", cookie_jar.save))
|
||||
for what, handler in to_save:
|
||||
log.destroy.debug("Saving {} (handler: {})".format(
|
||||
what, handler.__qualname__))
|
||||
what, utils.qualname(handler)))
|
||||
try:
|
||||
handler()
|
||||
except AttributeError as e:
|
||||
|
@ -335,7 +335,7 @@ class ConfigManager(QObject):
|
||||
func()
|
||||
else:
|
||||
raise TypeError("Handler {} has invalid signature.".format(
|
||||
func.__qualname__))
|
||||
utils.qualname(func)))
|
||||
for handler in to_delete:
|
||||
change_handlers.remove(handler)
|
||||
|
||||
|
@ -201,7 +201,7 @@ class ModeManager(QObject):
|
||||
handler = self._handlers[curmode]
|
||||
if curmode != usertypes.KeyMode.insert:
|
||||
log.modes.debug("got keypress in mode {} - calling handler "
|
||||
"{}".format(curmode, handler.__qualname__))
|
||||
"{}".format(curmode, utils.qualname(handler)))
|
||||
handled = handler(event) if handler is not None else False
|
||||
|
||||
is_non_alnum = bool(event.modifiers()) or not event.text().strip()
|
||||
|
@ -35,7 +35,7 @@ def log_events(klass):
|
||||
@functools.wraps(old_event)
|
||||
def new_event(self, e, *args, **kwargs):
|
||||
"""Wrapper for event() which logs events."""
|
||||
log.misc.debug("Event in {}: {}".format(klass.__name__,
|
||||
log.misc.debug("Event in {}: {}".format(utils.qualname(klass),
|
||||
qenum_key(QEvent, e.type())))
|
||||
return old_event(self, e, *args, **kwargs)
|
||||
|
||||
@ -201,10 +201,7 @@ def format_call(func, args=None, kwargs=None, full=True):
|
||||
A string with the function call.
|
||||
"""
|
||||
if full:
|
||||
if func.__module__ is not None:
|
||||
name = '.'.join([func.__module__, func.__qualname__])
|
||||
else:
|
||||
name = func.__qualname__
|
||||
name = utils.qualname(func)
|
||||
else:
|
||||
name = func.__name__
|
||||
return '{}({})'.format(name, _format_args(args, kwargs))
|
||||
|
@ -23,6 +23,7 @@ import io
|
||||
import sys
|
||||
import enum
|
||||
import shlex
|
||||
import inspect
|
||||
import os.path
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
@ -532,7 +533,7 @@ class prevent_exceptions: # pylint: disable=invalid-name
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
except BaseException:
|
||||
log.misc.exception("Error in {}".format(func.__qualname__))
|
||||
log.misc.exception("Error in {}".format(qualname(func)))
|
||||
return retval
|
||||
|
||||
return wrapper
|
||||
@ -555,7 +556,7 @@ def get_repr(obj, constructor=False, **attrs):
|
||||
<Foo one=1 two=2>.
|
||||
attrs: The attributes to add.
|
||||
"""
|
||||
cls = getattr(obj.__class__, '__qualname__', obj.__class__.__name__)
|
||||
cls = qualname(obj.__class__)
|
||||
parts = []
|
||||
for name, val in attrs.items():
|
||||
parts.append('{}={!r}'.format(name, val))
|
||||
@ -566,3 +567,32 @@ def get_repr(obj, constructor=False, **attrs):
|
||||
return '<{} {}>'.format(cls, ' '.join(parts))
|
||||
else:
|
||||
return '<{}>'.format(cls)
|
||||
|
||||
def qualname(obj):
|
||||
"""Get the fully qualified name of an object.
|
||||
|
||||
Based on twisted.python.reflect.fullyQualifiedName.
|
||||
|
||||
Should work with:
|
||||
- functools.partial objects
|
||||
- functions
|
||||
- classes
|
||||
- methods
|
||||
- modules
|
||||
"""
|
||||
if isinstance(obj, functools.partial):
|
||||
obj = obj.func
|
||||
if hasattr(obj, '__qualname__'):
|
||||
name = obj.__qualname__
|
||||
elif hasattr(obj, '__name__'):
|
||||
name = obj.__name__
|
||||
else:
|
||||
name = '<unknown>'
|
||||
|
||||
if inspect.isclass(obj) or inspect.isfunction(obj):
|
||||
module = obj.__module__
|
||||
return "{}.{}".format(module, name)
|
||||
elif inspect.ismethod(obj):
|
||||
return "{}.{}".format(obj.__module__, name)
|
||||
else:
|
||||
return name
|
||||
|
Loading…
Reference in New Issue
Block a user