Allow certain operations to work without loading a project
This patch removes the requirement to load a project.conf at startup time,
accomodating certain operations which do not need to observe workspace
state or load elements.
Summary of changes:
* _frontend/app.py: Don't error out if a project cannot be loaded.
The project is optional, and Stream() will raise an error if a project
is required for the operation it is asked to perform.
* _frontend/widget.py: Support printing the heading without a toplevel
project.
* _stream.py: Handle cases where the main project is None, and
raise an error in cases where a project is required.
* _workspaces.py: Handle cases where the project directory is None,
in case we are looking at an ArtifactProject which has no directory.
* tests/format/project.py: Update the missing project test to expect
a different error, and observe multiple cases where a project might
be required.
We still have an error for missing projects, but it is only issued
for cases where a project is expected, we need to continue testing this.
5 files changed