code: def recompute(self):
      for index, token in enumerate(self.tokens):
          if isinstance(token, ConfigSubstitution):
              token.parent = self
              token.index = index
  
      # no value return empty string
      if len(self.tokens) == 0:
          self.tokens = [""]
  
      # if the last token is an unquoted string then right strip it
      if isinstance(self.tokens[-1], ConfigUnquotedString):
          # rstrip only whitespaces, not \n\r because they would have been used escaped
          self.tokens[-1] = self.tokens[-1].rstrip(" \t")
  
imports: from collections import OrderedDict
  from pyparsing import lineno
  from pyparsing import col
  import re
  import copy
  from .exceptions import ConfigException, ConfigWrongTypeException, ConfigMissingException
label_desc: Use image node_id 2 for calling the ConfigValues obj's underlying member method code with example usage: obj.recompute() without return types