summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Kluyver <takowl@gmail.com>2017-01-13 11:28:58 +0000
committerThomas Kluyver <takowl@gmail.com>2017-01-13 11:28:58 +0000
commit5c29a167c321f27d3c58b9c8d8b350cde0658698 (patch)
tree98a8719da0868e7941fb2dcb169cd2e967c47a23
parent56e75b33d66738b072f9f5525f3af4a8ba863d8b (diff)
downloadpygments-5c29a167c321f27d3c58b9c8d8b350cde0658698.tar.gz
Delay loading pkg_resources until it is needed.
Improves startup performance of applications loading pygments.
-rw-r--r--pygments/plugin.py28
1 files changed, 11 insertions, 17 deletions
diff --git a/pygments/plugin.py b/pygments/plugin.py
index f9ea0890..b1f17449 100644
--- a/pygments/plugin.py
+++ b/pygments/plugin.py
@@ -35,40 +35,34 @@
:copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
-try:
- import pkg_resources
-except ImportError:
- pkg_resources = None
-
LEXER_ENTRY_POINT = 'pygments.lexers'
FORMATTER_ENTRY_POINT = 'pygments.formatters'
STYLE_ENTRY_POINT = 'pygments.styles'
FILTER_ENTRY_POINT = 'pygments.filters'
+def iter_entry_points(group_name):
+ try:
+ import pkg_resources
+ except ImportError:
+ return []
+
+ return pkg_resources.iter_entry_points(group_name)
def find_plugin_lexers():
- if pkg_resources is None:
- return
- for entrypoint in pkg_resources.iter_entry_points(LEXER_ENTRY_POINT):
+ for entrypoint in iter_entry_points(LEXER_ENTRY_POINT):
yield entrypoint.load()
def find_plugin_formatters():
- if pkg_resources is None:
- return
- for entrypoint in pkg_resources.iter_entry_points(FORMATTER_ENTRY_POINT):
+ for entrypoint in iter_entry_points(FORMATTER_ENTRY_POINT):
yield entrypoint.name, entrypoint.load()
def find_plugin_styles():
- if pkg_resources is None:
- return
- for entrypoint in pkg_resources.iter_entry_points(STYLE_ENTRY_POINT):
+ for entrypoint in iter_entry_points(STYLE_ENTRY_POINT):
yield entrypoint.name, entrypoint.load()
def find_plugin_filters():
- if pkg_resources is None:
- return
- for entrypoint in pkg_resources.iter_entry_points(FILTER_ENTRY_POINT):
+ for entrypoint in iter_entry_points(FILTER_ENTRY_POINT):
yield entrypoint.name, entrypoint.load()