code: def _eval_progress(self, match):
          '''
          Runs the user-supplied progress calculation rule
          '''
          _locals = {k: safe_float(v) for k, v in match.groupdict().items()}
          if "x" not in _locals:
              _locals["x"] = [safe_float(x) for x in match.groups()]
          try:
              return int(eval(self.progress_expr, {}, _locals))
          except:
              return Nonf _eval_progress(self, match):
          '''
          Runs the user-supplied progress calculation rule
          '''
          _locals = {k: safe_float(v) for k, v in match.groupdict().items()}
          if "x" not in _locals:
              _locals["x"] = [safe_float(x) for x in match.groups()]
          try:
              return int(eval(self.progress_expr, {}, _locals))
          except:
              return None
docs: Runs the user-supplied progress calculation rule