Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pygments/plugin.py: 68%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2 pygments.plugin
3 ~~~~~~~~~~~~~~~
5 Pygments plugin interface.
7 lexer plugins::
9 [pygments.lexers]
10 yourlexer = yourmodule:YourLexer
12 formatter plugins::
14 [pygments.formatters]
15 yourformatter = yourformatter:YourFormatter
16 /.ext = yourformatter:YourFormatter
18 As you can see, you can define extensions for the formatter
19 with a leading slash.
21 syntax plugins::
23 [pygments.styles]
24 yourstyle = yourstyle:YourStyle
26 filter plugin::
28 [pygments.filter]
29 yourfilter = yourfilter:YourFilter
32 :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
33 :license: BSD, see LICENSE for details.
34"""
35import functools
36from importlib.metadata import entry_points
38LEXER_ENTRY_POINT = 'pygments.lexers'
39FORMATTER_ENTRY_POINT = 'pygments.formatters'
40STYLE_ENTRY_POINT = 'pygments.styles'
41FILTER_ENTRY_POINT = 'pygments.filters'
44@functools.cache
45def iter_entry_points(group_name):
46 groups = entry_points()
47 if hasattr(groups, 'select'):
48 # New interface in Python 3.10 and newer versions of the
49 # importlib_metadata backport.
50 return groups.select(group=group_name)
51 else:
52 # Older interface, deprecated in Python 3.10 and recent
53 # importlib_metadata, but we need it in Python 3.8 and 3.9.
54 return groups.get(group_name, [])
57def find_plugin_lexers():
58 for entrypoint in iter_entry_points(LEXER_ENTRY_POINT):
59 yield entrypoint.load()
62def find_plugin_formatters():
63 for entrypoint in iter_entry_points(FORMATTER_ENTRY_POINT):
64 yield entrypoint.name, entrypoint.load()
67def find_plugin_styles():
68 for entrypoint in iter_entry_points(STYLE_ENTRY_POINT):
69 yield entrypoint.name, entrypoint.load()
72def find_plugin_filters():
73 for entrypoint in iter_entry_points(FILTER_ENTRY_POINT):
74 yield entrypoint.name, entrypoint.load()