original_docstring: 
    <Purpose>
    Examines a node, its attributes, and all of its children (recursively) for
    safety. A node is safe if it is in _NODE_CLASS_OK and an attribute is safe
    if it is not a unicode string and either in _NODE_ATTR_OK or is safe as is 
    defined by _is_string_safe()
    
    <Arguments>
    node: A node in an AST
    
    <Exceptions>
    CheckNodeException if an unsafe node is used
    CheckStrException if an attribute has an unsafe string 
    
    <Return>
    None
    
docstring: 
  Examines a node, its attributes, and all of its children (recursively) for
  safety. A node is safe if it is in _NODE_CLASS_OK and an attribute is safe
  if it is not a unicode string and either in _NODE_ATTR_OK or is safe as is
  defined by _is_string_safe()
  
  
  node: A node in an AST
  
  
  CheckNodeException if an unsafe node is used
  CheckStrException if an attribute has an unsafe string
  
  
  None
docstring_tokens: Examines a node its attributes and all of its children ( recursively ) for safety . A node is safe if it is in _NODE_CLASS_OK and an attribute is safe if it is not a unicode string and either in _NODE_ATTR_OK or is safe as is defined by _is_string_safe () node : A node in an AST CheckNodeException if an unsafe node is used CheckStrException if an attribute has an unsafe string None
code: def _check_node(node):
    """
    <Purpose>
    Examines a node, its attributes, and all of its children (recursively) for
    safety. A node is safe if it is in _NODE_CLASS_OK and an attribute is safe
    if it is not a unicode string and either in _NODE_ATTR_OK or is safe as is 
    defined by _is_string_safe()
    
    <Arguments>
    node: A node in an AST
    
    <Exceptions>
    CheckNodeException if an unsafe node is used
    CheckStrException if an attribute has an unsafe string 
    
    <Return>
    None
    """
    if node.__class__.__name__ not in _NODE_CLASS_OK:
      raise exception_hierarchy.CheckNodeException("Unsafe call '" +
          str(node.__class__.__name__) + "' in line " + str(node.lineno))
  
    for attribute, value in node.__dict__.items():
    # Don't allow the construction of unicode literals
    # if type(value) == unicode:
    #   raise exception_hierarchy.CheckStrException("Unsafe string '" +
    #       str(value) + "' in line " + str(node.lineno) +
    #       ", node attribute '" + str(attribute) + "'")
  
      if attribute in _NODE_ATTR_OK: 
        continue
  
      # JAC: don't check doc strings for __ and the like...,
      # see SeattleTestbed/repy_v1#107.
      if attribute == 'doc' and (node.__class__.__name__ in
        ['Module', 'Function', 'Class']):
        continue
  
      # Check the safety of any strings
      if not _is_string_safe(value):
        raise exception_hierarchy.CheckStrException("Unsafe string '" +
          str(value) + "' in line " + str(node.lineno) +
          ", node attribute '" + str(attribute) + "'")
  
    if 'getChildNodes' in dir(node):
      for child in node.getChildNodes():
        _check_node(child)
    else:
      for child in compiler.iter_child_nodes(node):
        _check_node(child)
code_tokens: def _check_node ( node ) : if node . __class__ . __name__ not in _NODE_CLASS_OK : raise exception_hierarchy . CheckNodeException ( "Unsafe call '" + str ( node . __class__ . __name__ ) + "' in line " + str ( node . lineno ) ) for attribute , value in node . __dict__ . items ( ) : if attribute in _NODE_ATTR_OK : continue if attribute == 'doc' and ( node . __class__ . __name__ in [ 'Module' , 'Function' , 'Class' ] ) : continue if not _is_string_safe ( value ) : raise exception_hierarchy . CheckStrException ( "Unsafe string '" + str ( value ) + "' in line " + str ( node . lineno ) + ", node attribute '" + str ( attribute ) + "'" ) if 'getChildNodes' in dir ( node ) : for child in node . getChildNodes ( ) : _check_node ( child ) else : for child in compiler . iter_child_nodes ( node ) : _check_node ( child )
short_docstring: <Purpose>
  Examines a node, its attributes, and all of its children (recursively) for
  safety.
short_docstring_tokens: <Purpose > Examines a node its attributes and all of its children ( recursively ) for safety .
comment: """
    <Purpose>
    Examines a node, its attributes, and all of its children (recursively) for
    safety. A node is safe if it is in _NODE_CLASS_OK and an attribute is safe
    if it is not a unicode string and either in _NODE_ATTR_OK or is safe as is 
    defined by _is_string_safe()
    
    <Arguments>
    node: A node in an AST
    
    <Exceptions>
    CheckNodeException if an unsafe node is used
    CheckStrException if an attribute has an unsafe string 
    
    <Return>
    None
    """$SEP$# Don't allow the construction of unicode literals$SEP$# if type(value) == unicode:$SEP$#   raise exception_hierarchy.CheckStrException("Unsafe string '" +$SEP$#       str(value) + "' in line " + str(node.lineno) +$SEP$#       ", node attribute '" + str(attribute) + "'")$SEP$# JAC: don't check doc strings for __ and the like...,$SEP$# see SeattleTestbed/repy_v1#107.$SEP$# Check the safety of any strings