syside.Pipeline

class Pipeline
schedule(documents: Sequence[syside.SharedMutex[syside.BasicDocument]], options: syside.ScheduleOptions = ..., invalidated: Sequence[syside.SharedMutex[syside.BasicDocument]] = []) syside.Schedule

Schedule documents for building with this Pipeline. documents with build_state equal or greater to the state at the end of particular pipeline stage will not be scheduled for that stage. For example, a document with build_state >= BuildState.Parsed will not be scheduled for parsing.

Pipeline also accepts additional invalidated documents that will have their semantic states reset. These documents will then pass through sema and validation stages as normal. This should typically be used for documents that have had their dependencies modified. Any documents for which build_state < BuildState.Built will not be invalidated as there should be nothing to invalidate.

The returned schedule should be executed on an Executor:

executor = syside.Executor(...)
schedule = pipeline.schedule(...)
...
result = executor.run(schedule)

Note that pipeline will skip indexing certain URLs that are used by IDEs to display virtual documents:

  • git*://*, e.g. used by VS Code to display git diffs

  • vscode*://*, e.g. used by VS Code to display editor previews

  • <scheme>[:|://] (URL with scheme only), e.g. used by Neovim for new unnamed buffers

The first two patterns additionally skip validation since those virtual documents are never a part of the workspace. Indexing is skipped only for known URL patterns to avoid unexpected behaviour. However, prefer using common schemes such as file or http[s] to ensure that the documents are handled correctly as more URL patterns may be added as more IDEs are tested.

__cpp_name__: str = 'syside::Pipeline'