def get_permission_groups(self, username):
        """
        Return a list of names of the groups that the user with the specified
        name is a member of. Implements an `IPermissionGroupProvider` API.

        This specific implementation connects to GitHub with a dedicated user,
        fetches and caches the teams and their users configured at GitHub and
        converts the data into a format usable for easy access by username.
        """
        if not self.organization or not self.username or not self.access_token:
            return []
        elif (self.username_prefix and
                not username.startswith(self.username_prefix)):
            return []

        data = self._fetch_groups()
        if not data:
            self.log.error("No cached groups from GitHub available") # pylint: disable=no-member
            return []
        else:
            return data.get(username[len(self.username_prefix):], [])
Return a list of names of the groups that the user with the specified
        name is a member of. Implements an `IPermissionGroupProvider` API.

        This specific implementation connects to GitHub with a dedicated user,
        fetches and caches the teams and their users configured at GitHub and
        converts the data into a format usable for easy access by username.