original_docstring: Get the list of all components required by the specified component.
  
    Args:
      component_name: Name of the base component.
      filter_components: List of components NOT to include.
  
    Returns:
      A list of the transitive closure of all components required by the base
      component.  That is, if A requires B and B requires C, this returns [B, C].
  
    
docstring: Get the list of all components required by the specified component.
docstring_tokens: Get the list of all components required by the specified component .
code: def _RetrieveComponents(component_name, filter_components=None):
    """Get the list of all components required by the specified component.
  
    Args:
      component_name: Name of the base component.
      filter_components: List of components NOT to include.
  
    Returns:
      A list of the transitive closure of all components required by the base
      component.  That is, if A requires B and B requires C, this returns [B, C].
  
    """
    if filter_components:
      filter_components = set(filter_components)
    else:
      filter_components = set()
  
    components = set([component_name])    # Components always require themselves
    new_components = set(components)
    while new_components:
      # Take next new component and add it to the list we've already scanned.
      c = new_components.pop()
      components.add(c)
      # Add to the list of new components any of c's components that we haven't
      # seen before.
      new_components.update(__component_list.get(c, set())
                            - components - filter_components)
  
    return list(components)
code_tokens: def _RetrieveComponents ( component_name , filter_components = None ) : if filter_components : filter_components = set ( filter_components ) else : filter_components = set ( ) components = set ( [ component_name ] ) new_components = set ( components ) while new_components : c = new_components . pop ( ) components . add ( c ) new_components . update ( __component_list . get ( c , set ( ) ) - components - filter_components ) return list ( components )
short_docstring: Get the list of all components required by the specified component.
short_docstring_tokens: Get the list of all components required by the specified component .
comment: """Get the list of all components required by the specified component.
  
    Args:
      component_name: Name of the base component.
      filter_components: List of components NOT to include.
  
    Returns:
      A list of the transitive closure of all components required by the base
      component.  That is, if A requires B and B requires C, this returns [B, C].
  
    """$SEP$# Components always require themselves$SEP$# Take next new component and add it to the list we've already scanned.$SEP$# Add to the list of new components any of c's components that we haven't$SEP$# seen before.