<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def declare(self, name, description=None, **kwargs):
 """Declare a configuration key with the given name. Args: name: Configuration key to declare, must not have been already declared. description: If provided, use this as the description for this key. **kwargs: Other kwargs to pass to the Declaration, only default_value is currently supported. """

    if not self._is_valid_key(name):
      raise self.InvalidKeyError(
          'Invalid key name, must begin with a lowercase letter', name)
    if name in self._declarations:
      raise self.KeyAlreadyDeclaredError(
          'Configuration key already declared', name)
    self._declarations[name] = self.Declaration(
        name, description=description, **kwargs)