class_docstr: Metaclass for Scalar that caches `maxsize` instances.
  
  After `maxsize` is reached, evicts the least recently used
  instances to make room for new values.
class_docstr_tok: ["Metaclass","for","Scalar","that","caches","`","maxsize","`","instances",".","After","`","maxsize","`","is","reached",",","evicts","the","least","recently","used","instances","to","make","room","for","new","values","."]
code: def __init__(self, names, bases, attrs, maxsize=128):
      self.__maxsize = maxsize
      self.__instances = OrderedDict()
  
imports: import decimal
  import operator
  from collections import OrderedDict
  import numpy
  import pyarrow
  import cudf
  from cudf.api.types import is_datetime64_dtype, is_scalar, is_timedelta64_dtype
  from cudf.core.dtypes import ListDtype, StructDtype
  from cudf.core.missing import NA, NaT
  from cudf.core.mixins import BinaryOperand
  from cudf.utils.dtypes import get_allowed_combinations_for_operator, to_cudf_compatible_scalar
label_desc: Use image node_id 2 to create a new CachedScalarInstanceMeta object from inherited base classes: type with example: obj = CachedScalarInstanceMeta(names, bases, attrs, maxsize)