docs: def _apply_rules_no_recurse(expr, rules):
      """Non-recursively match expr again all rules"""
      try:
          # `rules` is an OrderedDict key => (pattern, replacement)
          items = rules.items()
      except AttributeError:
          # `rules` is a list of (pattern, replacement) tuples
          items = enumerate(rules)
      for key, (pat, replacement) in items:
          matched = pat.match(expr)
          if matched:
              try:
                  return replacement(**matched)
              except CannotSimplify:
                  pass
      return expr