class_docstr: Parser for Python source files that extracts TF API exports.
class_docstr_tok: ["Parser","for","Python","source","files","that","extracts","TF","API","exports","."]
docstr: Identifies imports of decorator.
docstr_tok: ["Identifies","imports","of","decorator","."]
code: def visit_ImportFrom(
      self, node: ast.ImportFrom
  ) -> None:  # pylint: disable=invalid-name
      """Identifies imports of decorator."""
      if node.module == self._decorator_package:
          for name in node.names:
              if name.name == self._decorator_symbol:
                  if name.asname:
                      # from <package> import <symbol> as <name>
                      self._current_file_decorators.add(name.asname)
                  else:
                      # from <package> import <symbol>
                      self._current_file_decorators.add(name.name)
      else:
          parent, module = self._decorator_package.rsplit(".", 1)
          if node.module == parent:
              for name in node.names:
                  if name.name == module:
                      if name.asname:
                          # from <parent> import <module> as <name>
                          self._current_file_decorators.add(
                              name.asname + "." + self._decorator_symbol
                          )
                      else:
                          # from <parent> import <module>
                          self._current_file_decorators.add(
                              name.name + "." + self._decorator_symbol
                          )
      self.generic_visit(node)
  
imports: import ast
  from collections.abc import Sequence
  import re
  from typing import Any, Optional, Union, cast
  from absl import flags
  from absl import logging
  from tensorflow.python.tools.api.generator2.shared import exported_api
label_desc: Use image node_id 7 for calling the Parser obj's underlying member method code with example usage: obj.visit_ImportFrom(node) without return types