code: def build_attributes(cls, attributes, namespace):
          
          config_path = attributes.get('config_path')
          tokens = {}
  
          def build_config_key(value_def, config_key):
              key = value_def.config_key or config_key
              return '%s.%s' % (config_path, key) if config_path else key
  
          def build_token(name, value_def):
              config_key = build_config_key(value_def, name)
              value_token = ValueToken.from_definition(
                                              value_def, namespace, config_key)
              getters.register_value_proxy(namespace, value_token, value_def.help)
              tokens[name] = value_token
              return name, build_property(value_token)
  
          def build_attr(name, attribute):
              if not isinstance(attribute, ValueTypeDefinition):
                  return name, attribute
              return build_token(name, attribute)
  
          attributes = dict(build_attr(*item)
                            for item in six.iteritems(attributes))
          attributes['_tokens'] = tokens
          return attributes
docs: Return an attributes dictionary with ValueTokens replaced by a
          property which returns the config value.