class_docstr: Smart sdist that finds anything supported by revision control
class_docstr_tok: ["Smart","sdist","that","finds","anything","supported","by","revision","control"]
docstr: Read the manifest file (named by 'self.manifest') and use it to
  fill in 'self.filelist', the list of files to include in the source
  distribution.
docstr_tok: ["Read","the","manifest","file","(","named","by","'self.manifest","'",")","and","use","it","to","fill","in","'self.filelist","'",",","the","list","of","files","to","include","in","the","source","distribution","."]
code: def read_manifest(self):
      """Read the manifest file (named by 'self.manifest') and use it to
      fill in 'self.filelist', the list of files to include in the source
      distribution.
      """
      log.info("reading manifest file '%s'", self.manifest)
      manifest = open(self.manifest, "rb")
      for line in manifest:
          # The manifest must contain UTF-8. See #303.
          if not six.PY2:
              try:
                  line = line.decode("UTF-8")
              except UnicodeDecodeError:
                  log.warn("%r not UTF-8 decodable -- skipping" % line)
                  continue
          # ignore comments and blank lines
          line = line.strip()
          if line.startswith("#") or not line:
              continue
          self.filelist.append(line)
      manifest.close()
  
imports: from distutils import log
  import distutils.command.sdist
  import os
  import sys
  import io
  import contextlib
  from setuptools.extern import six, ordered_set
  from .py36compat import sdist_add_defaults
  import pkg_resources
label_desc: Use image node_id 15 for calling the sdist obj's underlying member method code with example usage: obj.read_manifest() without return types