docstr: Construct a new evaluator with the given variable names.
  This is a low level API, typically you will use `Evaluator.from_frame(frame)`.
  
  :param names: a mapping from variable names to their values.
docstr_tok: ["Construct","a","new","evaluator","with","the","given","variable","names",".","This","is","a","low","level","API",",","typically","you","will","use","`","Evaluator.from_frame","(","frame",")","`",".",":","param","names",":","a","mapping","from","variable","names","to","their","values","."]
code: def __init__(self, names: Mapping[str, Any]):
      """
      Construct a new evaluator with the given variable names.
      This is a low level API, typically you will use `Evaluator.from_frame(frame)`.
  
      :param names: a mapping from variable names to their values.
      """
  
      self.names = names
      self._cache = {}
  
imports: import ast
  import builtins
  import operator
  from collections import ChainMap, OrderedDict, deque
  from contextlib import suppress
  from types import FrameType
  from typing import Any, Tuple, Iterable, List, Mapping, Dict, Union, Set
  from pure_eval.my_getattr_static import getattr_static
  from pure_eval.utils import CannotEval, has_ast_name, copy_ast_without_context, is_standard_types, of_standard_types, is_any, of_type, ensure_dict
label_desc: Use image node_id 1 to create a new Evaluator object  with example: obj = Evaluator(names)