code: def split_modpath(modpath, check=True):
      
      if six.PY2:
          if modpath.endswith('.pyc'):
              modpath = modpath[:-1]
      modpath_ = abspath(expanduser(modpath))
      if check:
          if not exists(modpath_):
              if not exists(modpath):
                  raise ValueError('modpath={} does not exist'.format(modpath))
              raise ValueError('modpath={} is not a module'.format(modpath))
          if isdir(modpath_) and not exists(join(modpath, '__init__.py')):
              # dirs without inits are not modules
              raise ValueError('modpath={} is not a module'.format(modpath))
      full_dpath, fname_ext = split(modpath_)
      _relmod_parts = [fname_ext]
      # Recurse down directories until we are out of the package
      dpath = full_dpath
      while exists(join(dpath, '__init__.py')):
          dpath, dname = split(dpath)
          _relmod_parts.append(dname)
      relmod_parts = _relmod_parts[::-1]
      rel_modpath = os.path.sep.join(relmod_parts)
      return dpath, rel_modpath
docs: Splits the modpath into the dir that must be in PYTHONPATH for the module
      to be imported and the modulepath relative to this directory.
  
      Args:
          modpath (str): module filepath
          check (bool): if False, does not raise an error if modpath is a
              directory and does not contain an `__init__.py` file.
  
      Returns:
          tuple: (directory, rel_modpath)
  
      Raises:
          ValueError: if modpath does not exist or is not a package
  
      Example:
          >>> from xdoctest import static_analysis
          >>> modpath = static_analysis.__file__.replace('.pyc', '.py')
          >>> modpath = abspath(modpath)
          >>> dpath, rel_modpath = split_modpath(modpath)
          >>> recon = join(dpath, rel_modpath)
          >>> assert recon == modpath
          >>> assert rel_modpath == join('xdoctest', 'static_analysis.py')