mirror of
https://github.com/powerline/powerline.git
synced 2025-07-26 23:35:04 +02:00
Allow overriding renderer module with any module
Will be used in tests. Allows renderer modules (and extensions) that look like `foo.bar`: it will import `foo.bar` and not `powerline.renderers.foo.bar` like before.
This commit is contained in:
parent
34c775f628
commit
bc1a3e4c1d
@ -111,7 +111,12 @@ class Powerline(object):
|
|||||||
colorschemes, render module (``powerline.renders.{ext}``).
|
colorschemes, render module (``powerline.renders.{ext}``).
|
||||||
:param str renderer_module:
|
:param str renderer_module:
|
||||||
Overrides renderer module (defaults to ``ext``). Should be the name of
|
Overrides renderer module (defaults to ``ext``). Should be the name of
|
||||||
the package imported like this: ``powerline.renders.{render_module}``.
|
the package imported like this: ``powerline.renders.{render_module}``.
|
||||||
|
If this parameter contains a dot, ``powerline.renderers.`` is not
|
||||||
|
prepended. There is also a special case for renderers defined in
|
||||||
|
toplevel modules: ``foo.`` (note: dot at the end) tries to get renderer
|
||||||
|
from module ``foo`` (because ``foo`` (without dot) tries to get renderer
|
||||||
|
from module ``powerline.renderers.foo``).
|
||||||
:param bool run_once:
|
:param bool run_once:
|
||||||
Determines whether .renderer.render() method will be run only once
|
Determines whether .renderer.render() method will be run only once
|
||||||
during python session.
|
during python session.
|
||||||
@ -146,6 +151,11 @@ class Powerline(object):
|
|||||||
self.home = home
|
self.home = home
|
||||||
self.use_daemon_threads = use_daemon_threads
|
self.use_daemon_threads = use_daemon_threads
|
||||||
|
|
||||||
|
if '.' not in self.renderer_module:
|
||||||
|
self.renderer_module = 'powerline.renderers.' + self.renderer_module
|
||||||
|
elif self.renderer_module[-1] == '.':
|
||||||
|
self.renderer_module = self.renderer_module[:-1]
|
||||||
|
|
||||||
self.config_paths = self.get_config_paths()
|
self.config_paths = self.get_config_paths()
|
||||||
|
|
||||||
self.renderer_lock = Lock()
|
self.renderer_lock = Lock()
|
||||||
@ -250,9 +260,8 @@ class Powerline(object):
|
|||||||
self.theme_config = self.load_theme_config(self.ext_config.get('theme', 'default'))
|
self.theme_config = self.load_theme_config(self.ext_config.get('theme', 'default'))
|
||||||
|
|
||||||
if create_renderer:
|
if create_renderer:
|
||||||
renderer_module_import = 'powerline.renderers.{0}'.format(self.renderer_module)
|
|
||||||
try:
|
try:
|
||||||
Renderer = __import__(renderer_module_import, fromlist=['renderer']).renderer
|
Renderer = __import__(self.renderer_module, fromlist=['renderer']).renderer
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.pl.exception('Failed to import renderer module: {0}', str(e))
|
self.pl.exception('Failed to import renderer module: {0}', str(e))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user