- Instead of using
RerunBridgein blueprints we always usevis_modulewhich allows the CLI to control if its rerun or no-vis at all - When global_config.py shouldn’t accidentally/indirectly import heavy libraries like rerun. But sometimes global_config needs the type definition or default value from a module. Preferably we import from the module file directly, however when thats not possible, we create a config.py for just that module’s config and import that into global_config.py.
- When adding visualization tools to a blueprint/autoconnect, instead of using RerunBridge or WebsocketVisModule directly we should always use
vis_module, which right now should look something likevis_module(viewer_backend=global_config.viewer, rerun_config={}), DEFAULT_THREAD_JOIN_TIMEOUTis used for all thread.join timeouts- Don’t use print inside of tests
- Module configs should be specified as
config: ModuleSpecificConfigClass - To customize the way rerun renders something, right now we use a
rerun_configdict. This will (hopefully) change very soon to be a per-module config instead of a per-blueprint config - Similar to the
rerun_configtherrb(rerun blueprint) is defined at a blueprint level right now, but ideally would be a per-module contribution with only a per-blueprint override of the layout. - No
__init__.pyfiles - Helper blueprints (like
_with_vis) that should not be used on their own need to start with an underscore to avoid being picked up by the in-repoall_blueprints.pycode generation step - Built-in runnable blueprints are registered through the generated in-repo
all_blueprints.py; externally packaged blueprints are discovered through installed Python package entry points in thedimos.blueprintsgroup instead.
Development
Conventions
This mostly to track when conventions change (with regard to codebase updates) because this codebase is under heavy development. Note: this is a non-exhaustive list of conventions.
