code: def _last_step(self):
          
          if not os.path.exists(self._savepath):
              return 0
          try:
              with open(self._savepath, 'r') as fh:
                  j = json.loads(fh.read())
          except Exception:
              logger.warning(
                  'Could not read or JSON-deserialize %s', self._savepath
              )
              return 0
          if j.get('version', '') != VERSION:
              return 0
          return j.get('last_successful_step', 0)
docs: If ``self._savepath`` doesn't exist, can't be read as JSON, or doesn't
          match ``VERSION``, return 0. Otherwise, return the step which that file
          lists as the last-run step for this release.
  
          :return: last-run step from the release or 0
          :rtype: int