docs: def selectAssemblies(pth, manifest=None):
      """
      Return a binary's dependent assemblies files that should be included.
  
      Return a list of pairs (name, fullpath)
      """
      rv = []
      if not os.path.isfile(pth):
          pth = check_extract_from_egg(pth)[0][0]
      if manifest:
          _depNames = set([dep.name for dep in manifest.dependentAssemblies])
      for assembly in getAssemblies(pth):
          if seen.get(assembly.getid().upper(), 0):
              continue
          if manifest and not assembly.name in _depNames:
              # Add assembly as dependency to our final output exe's manifest
              logger.info("Adding %s to dependent assemblies "
                          "of final executable", assembly.name)
              manifest.dependentAssemblies.append(assembly)
              _depNames.add(assembly.name)
          if not dylib.include_library(assembly.name):
              logger.debug("Skipping assembly %s", assembly.getid())
              continue
          if assembly.optional:
              logger.debug("Skipping optional assembly %s", assembly.getid())
              continue
          files = assembly.find_files()
          if files:
              seen[assembly.getid().upper()] = 1
              for fn in files:
                  fname, fext = os.path.splitext(fn)
                  if fext.lower() == ".manifest":
                      nm = assembly.name + fext
                  else:
                      nm = os.path.basename(fn)
                  ftocnm = nm
                  if assembly.language not in (None, "", "*", "neutral"):
                      ftocnm = os.path.join(assembly.getlanguage(),
                                            ftocnm)
                  nm, ftocnm, fn = [item.encode(sys.getfilesystemencoding())
                                    for item in
                                    (nm,
                                     ftocnm,
                                     fn)]
                  if not seen.get(fn.upper(), 0):
                      logger.debug("Adding %s", ftocnm)
                      seen[nm.upper()] = 1
                      seen[fn.upper()] = 1
                      rv.append((ftocnm, fn))
                  else:
                      #logger.info("skipping %s part of assembly %s dependency of %s",
                      #            ftocnm, assembly.name, pth)
                      pass
          else:
              logger.error("Assembly %s not found", assembly.getid())
      return rv