docs: def register_interaction(key=None):
      """Decorator registering an interaction class in the registry.
  
      If no key is provided, the class name is used as a key. A key is provided
      for each core bqplot interaction type so that the frontend can use this
      key regardless of the kernal language.
      """
      def wrap(interaction):
          name = key if key is not None else interaction.__module__ + \
              interaction.__name__
          interaction.types[name] = interaction
          return interaction
      return wrap