Groups
PyRogue groups are string tags attached to each node (Device, Variable, Command, etc.).
They are intentionally open-ended: users can define any custom group name and use it with
incGroups / excGroups filters.
How group filtering works
Most tree APIs that accept incGroups and excGroups use the same logic:
include check passes when
incGroupsis empty, or the node is in at least one include groupexclude check passes when
excGroupsis empty, or the node is in none of the exclude groupsa node is processed only if both checks pass
Built-in group names and behavior
The following names have built-in meaning in the current PyRogue implementation:
HiddenAdded automatically when
hidden=Trueis used in node constructors.Used by GUI and helper defaults to hide nodes unless explicitly included.
NoConfigExcluded by root configuration APIs/commands such as
SaveConfig,LoadConfig,SetYamlConfig, andGetYamlConfig.Use for runtime/status items that should not be persisted as configuration.
NoStateExcluded by root state-export APIs/commands such as
SaveStateandGetYamlState.Use for values that should not be captured in state snapshots.
NoStreamExcluded by default in variable streaming interfaces. E.g. pyrogue.interfaces.stream.Variable.
Use for nodes that should not appear in stream output.
Typically used to prevent Variable logging from being set to a StreamWriter.
NoSqlExcluded by default in SQL logging interfaces.
Use for nodes that should not be recorded in SQL logs.
NoServeExcluded from served remote node lists (for example ZMQ/virtual tree exposure).
Use for nodes that should remain local-only and not be exposed remotely.
EnableUsed by the built-in EnableVariable class as a semantic label.
This is a convention used by framework components, not a hard filter category by itself.
Should not be used for any other purpose.
Other names you may see
NoAlarmappears in examples/tutorial content, but there is no core framework behavior tied to this name in the current codebase. Treat it as a project-level convention unless your application defines logic for it.
Best practices
Keep built-in names for their existing semantics.
Add project-specific groups for your own workflows (for example deployment phases, GUI views, ownership).
Document custom groups near your root/device definitions so downstream users know how to filter them.
Prefer
incGroups/excGroupsin bulk operations instead of ad-hoc per-node conditionals.