code: def get_permission_groups(self, 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):], [])
docs: 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.