docs: def _split_packages(cls, include_packages):
          """
          Split an iterable of packages into packages that need to be passed through, and those that need to have their
          disk location resolved.
  
          Some modules don't have a '__file__' attribute.  AFAIK these aren't packages, so they can just be passed
          through to the includes as-is
          :return: 2-tuple of a list of the pass-through includes and the package_root_paths
          """
          passthrough_includes = set([
              six.text_type(package.__name__)
              for package in include_packages
              if not hasattr(package, '__file__')
          ])
          package_file_paths = dict([
              (six.text_type(os.path.abspath(package.__file__)), six.text_type(package.__name__))
              for package in include_packages
              if hasattr(package, '__file__')
          ])
          return passthrough_includes, package_file_paths