code: def _safe_eval(node, default):
      
      if isinstance(node, ast.BoolOp):
          results = [_safe_eval(value, default) for value in node.values]
          if isinstance(node.op, ast.And):
              return all(results)
          else:
              return any(results)
      elif isinstance(node, ast.UnaryOp) and isinstance(node.op, ast.Not):
          return not _safe_eval(node.operand, not default)
      else:
          try:
              return ast.literal_eval(node)
          except ValueError:
              return default
docs: Safely evaluate the Boolean expression under the given AST node.
  
      Substitute `default` for all sub-expressions that cannot be
      evaluated (because variables or functions are undefined).
  
      We could use eval() to evaluate more sub-expressions. However, this
      function is not safe for arbitrary Python code. Even after
      overwriting the "__builtins__" dictionary, the original dictionary
      can be restored
      (https://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html).