code: def crawl_up(arg):
      # type: (str) -> Tuple[str, str]
      
      dir, mod = os.path.split(arg)
      mod = strip_py(mod) or mod
      while dir and get_init_file(dir):
          dir, base = os.path.split(dir)
          if not base:
              break
          if mod == '__init__' or not mod:
              mod = base
          else:
              mod = base + '.' + mod
      return dir, mod
docs: Given a .py[i] filename, return (root directory, module).
      We crawl up the path until we find a directory without
      __init__.py[i], or until we run out of path components.