code: def add_metadata(self, name, value):
          
  
          if name in self.metadata_database:
              raise ArgumentError("Attempted to set the same metadata value twice", name=name, old_value=self.metadata_database[name], new_value=value)
  
          self.metadata_database[name] = value
docs: Attach a piece of metadata to this sensorgraph.
  
          Metadata is not used during the simulation of a sensorgraph but allows
          it to convey additional context that may be used during code
          generation.  For example, associating an `app_tag` with a sensorgraph
          allows the snippet code generator to set that app_tag on a device when
          programming the sensorgraph.
  
          Arg:
              name (str): The name of the metadata that we wish to associate with this
                  sensorgraph.
              value (object): The value we wish to store.