class_docstr: Remove redundant except clauses
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse('try: pass\nexcept (OSError, OSError): pass')
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(SimplifyExcept, node)
  >>> print(pm.dump(backend.Python, node))
  try:
      pass
  except OSError:
      pass
class_docstr_tok: ["Remove","redundant","except","clauses",">",">",">","import","gast","as","ast",">",">",">","from","pythran","import","passmanager",",","backend",">",">",">","node","=","ast.parse","(","'try",":","pass\\nexcept","(","OSError",",","OSError",")",":","pass","'",")",">",">",">","pm","=","passmanager.PassManager","(","``","test","''",")",">",">",">","_",",","node","=","pm.apply","(","SimplifyExcept",",","node",")",">",">",">","print","(","pm.dump","(","backend.Python",",","node",")",")","try",":","pass","except","OSError",":","pass"]
code: def visit_ExceptHandler(self, node):
      if isinstance(node.type, ast.Tuple):
          all_ids = {getid(elt) for elt in node.type.elts}
          to_remove = []
          for i, elt in enumerate(node.type.elts):
              eltid = getid(elt)
              if eltid in all_ids:
                  all_ids.remove(eltid)
              else:
                  to_remove.append(i)
          for i in reversed(to_remove):
              node.type.elts.pop(i)
          if len(node.type.elts) == 1:
              node.type = node.type.elts[0]
              self.update = True
          self.update |= bool(to_remove)
      return node
  
imports: from pythran.passmanager import Transformation
  import gast
label_desc: Use image node_id 1 for calling the SimplifyExcept obj's underlying member method code with example usage: obj.visit_ExceptHandler(node) and returns: node