Refactor session headings in the frontend
This merge request fixes redundant session headings at startup time (issue #1369 (closed)) and enhances the session heading to capture properties of loaded projects separately.
Outline of changes:
- The Project only ever loads one set of plugins, so we cannot have the same plugin loaded differently at different stages of the load process.
- As a result, plugins must only ever be specified in
project.conf
and cannot be included - For added consistency across projects, we now also validate that the
name
,element-path
andmin-version
fields are specified in theproject.conf
and not in an included file - The validation of keys being specified in the
project.conf
required specifying theshortname
value to_yaml.load()
consistently- In order to improve this consistency later on, made
shortname
a required argument - Another side effect here is that we specify the
project
argument to_yaml.load()
more consistently, which was missing when loading theproject.conf
itself, this improves provenances reported in cross projectproject.conf
parse errors.
- In order to improve this consistency later on, made
- These new restrictions are documented in the
project.conf
documentation, and the breaking change mentioned inNEWS
- As a result, plugins must only ever be specified in
- PluginFactory now reports detailed information of how each plugin was loaded
- The
Stream
object is now selective about when it calls the session started callback provided by the frontend- This was the root cause of #1369 (closed), causing the session heading to be redundantly printed when fetching a subproject
- In the session heading, information about each individually loaded project is now printed
- The junction path of the project, if any
- The provenance indicating why the project was loaded, if the project was loaded via some junction
- The parent projects which declared the project as a duplicate, if any
- The parent projects which declared the project as internal, if any
- The resolved project option values of the project, if any
- The loaded plugins of the project, including a detailed description of how they were loaded
Edited by Tristan Van Berkom