code: def getValue(self, row):
          'Memoize calcValue with key id(row)'
          if self._cachedValues is None:
              return self.calcValue(row)
  
          k = id(row)
          if k in self._cachedValues:
              return self._cachedValues[k]
  
          ret = self.calcValue(row)
          self._cachedValues[k] = ret
  
          cachesize = options.col_cache_size
          if cachesize > 0 and len(self._cachedValues) > cachesize:
              self._cachedValues.popitem(last=False)
  
          return ref getValue(self, row):
          'Memoize calcValue with key id(row)'
          if self._cachedValues is None:
              return self.calcValue(row)
  
          k = id(row)
          if k in self._cachedValues:
              return self._cachedValues[k]
  
          ret = self.calcValue(row)
          self._cachedValues[k] = ret
  
          cachesize = options.col_cache_size
          if cachesize > 0 and len(self._cachedValues) > cachesize:
              self._cachedValues.popitem(last=False)
  
          return ret
docs: Memoize calcValue with key id(row)