mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-12-13 22:48:20 +00:00
Merge remote-tracking branch 'origin/master' into nightly
This commit is contained in:
commit
f251cd7a3e
@ -4,6 +4,9 @@ Note: Breaking changes between versions are indicated by "💥".
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
- [Improvement] Make `tutor plugins list` print plugins sorted by name.
|
||||||
|
- [Improvement] Ignore Python plugins which cannot be loaded.
|
||||||
|
|
||||||
## v12.1.6 (2021-11-02)
|
## v12.1.6 (2021-11-02)
|
||||||
|
|
||||||
- [Improvement] Upgrade all services to open-release/lilac.3.
|
- [Improvement] Upgrade all services to open-release/lilac.3.
|
||||||
|
@ -231,14 +231,18 @@ class EntrypointPlugin(BasePlugin):
|
|||||||
def iter_load(cls) -> Iterator["EntrypointPlugin"]:
|
def iter_load(cls) -> Iterator["EntrypointPlugin"]:
|
||||||
for entrypoint in pkg_resources.iter_entry_points(cls.ENTRYPOINT):
|
for entrypoint in pkg_resources.iter_entry_points(cls.ENTRYPOINT):
|
||||||
try:
|
try:
|
||||||
|
error: Optional[str] = None
|
||||||
yield cls(entrypoint)
|
yield cls(entrypoint)
|
||||||
except:
|
except pkg_resources.VersionConflict as e:
|
||||||
|
error = e.report()
|
||||||
|
except Exception as e:
|
||||||
|
error = str(e)
|
||||||
|
if error:
|
||||||
fmt.echo_error(
|
fmt.echo_error(
|
||||||
"Failed to load entrypoint '{} = {}' from distribution {}".format(
|
"Failed to load entrypoint '{} = {}' from distribution {}: {}".format(
|
||||||
entrypoint.name, entrypoint.module_name, entrypoint.dist
|
entrypoint.name, entrypoint.module_name, entrypoint.dist, error
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
raise
|
|
||||||
|
|
||||||
|
|
||||||
class OfficialPlugin(BasePlugin):
|
class OfficialPlugin(BasePlugin):
|
||||||
@ -359,11 +363,14 @@ class Plugins:
|
|||||||
prevent too many re-computations, which happens a lot.
|
prevent too many re-computations, which happens a lot.
|
||||||
"""
|
"""
|
||||||
installed_plugin_names = set()
|
installed_plugin_names = set()
|
||||||
|
plugins = []
|
||||||
for PluginClass in cls.PLUGIN_CLASSES:
|
for PluginClass in cls.PLUGIN_CLASSES:
|
||||||
for plugin in PluginClass.iter_installed():
|
for plugin in PluginClass.iter_installed():
|
||||||
if plugin.name not in installed_plugin_names:
|
if plugin.name not in installed_plugin_names:
|
||||||
installed_plugin_names.add(plugin.name)
|
installed_plugin_names.add(plugin.name)
|
||||||
yield plugin
|
plugins.append(plugin)
|
||||||
|
plugins = sorted(plugins, key=lambda plugin: plugin.name)
|
||||||
|
yield from plugins
|
||||||
|
|
||||||
def iter_enabled(self) -> Iterator[BasePlugin]:
|
def iter_enabled(self) -> Iterator[BasePlugin]:
|
||||||
for plugin in self.iter_installed():
|
for plugin in self.iter_installed():
|
||||||
|
Loading…
Reference in New Issue
Block a user