(
        self, spec: SelectionCriteria, selected: Set[UniqueId]
    )
return additional
Given the set of models selected by the explicit part of the
        selector (like "tag:foo"), apply the modifiers on the spec ("+"/"@").
        Return the set of additional nodes that should be collected (which may
        overlap with the selected set).
Given the set of models selected by the explicit part of the
        selector (like "tag:foo"), apply the modifiers on the spec ("+"/"
Given the set of models selected by the explicit part of the selector ( like tag : foo ) apply the modifiers on the spec ( + /
def collect_specified_neighbors(
        self, spec: SelectionCriteria, selected: Set[UniqueId]
    ) -> Set[UniqueId]:
        """Given the set of models selected by the explicit part of the
        selector (like "tag:foo"), apply the modifiers on the spec ("+"/"@").
        Return the set of additional nodes that should be collected (which may
        overlap with the selected set).
        """
        additional: Set[UniqueId] = set()
        if spec.childrens_parents:
            additional.update(self.graph.select_childrens_parents(selected))

        if spec.parents:
            depth = spec.parents_depth
            additional.update(self.graph.select_parents(selected, depth))

        if spec.children:
            depth = spec.children_depth
            additional.update(self.graph.select_children(selected, depth))
        return additional
def collect_specified_neighbors ( self , spec : SelectionCriteria , selected : Set [ UniqueId ] ) -> Set [ UniqueId ] : additional : Set [ UniqueId ] = set ( ) if spec . childrens_parents : additional . update ( self . graph . select_childrens_parents ( selected ) ) if spec . parents : depth = spec . parents_depth additional . update ( self . graph . select_parents ( selected , depth ) ) if spec . children : depth = spec . children_depth additional . update ( self . graph . select_children ( selected , depth ) ) return additional