docs: def read_setup_py(self):  # type: ()-> Dict[str,str]
          """
          Extract from setup.py's setup() arg list.
          :return:
          """
          found = {}  # type: Dict[str,str]
          setup_py = os.path.join("setup.py")
  
          if not os.path.isfile(setup_py):
              if self.strict:
                  logger.debug(unicode(os.getcwd()))
                  logger.debug(unicode(os.listdir(os.getcwd())))
                  # return ""
                  # raise JiggleVersionException(
                  #     "Can't find setup.py : {0}, path :{1}".format(setup_py, self.SRC)
                  # )
                  return found
              else:
                  return found
  
          self.setup_py_source = self.file_opener.open_this(setup_py, "r").read()
  
          if "use_scm_version=True" in self.setup_py_source:
              die(
                  -1,
                  "setup.py has use_scm_version=True in it- this means we expect no file to have a version string. Nothing to change",
              )
              return {}
  
          with self.file_opener.open_this(setup_py, "r") as infile:
              for line in infile:
                  version = kwarg_version.find_in_line(line)
                  if version:
                      found[setup_py] = version
                      continue
                  version, _ = dunder_version.find_in_line(line)
                  if version:
                      found[setup_py] = version
                      continue
  
          # stress testing
          # if "version" in self.setup_py_source and not found:
          #     raise TypeError(self.setup_py_source)
  
          return found