docs: def parse_napp(napp_id):
      """Convert a napp_id in tuple with username, napp name and version.
  
      Args:
          napp_id: String with the form 'username/napp[:version]' (version is
                    optional). If no version is found, it will be None.
  
      Returns:
          tuple: A tuple with (username, napp, version)
  
      Raises:
          KytosException: If a NApp has not the form _username/name_.
  
      """
      # `napp_id` regex, composed by two mandatory parts (username, napp_name)
      # and one optional (version).
      # username and napp_name need to start with a letter, are composed of
      # letters, numbers and uderscores and must have at least three characters.
      # They are separated by a colon.
      # version is optional and can take any format. Is is separated by a hyphen,
      # if a version is defined.
      regex = r'([a-zA-Z][a-zA-Z0-9_]{2,})/([a-zA-Z][a-zA-Z0-9_]{2,}):?(.+)?'
      compiled_regex = re.compile(regex)
  
      matched = compiled_regex.fullmatch(napp_id)
  
      if not matched:
          msg = '"{}" NApp has not the form username/napp_name[:version].'
          raise KytosException(msg.format(napp_id))
  
      return matched.groups()