code: def get_scopes_for(self, user_provided_scopes):
          
          if user_provided_scopes is None:
              # return all available scopes
              user_provided_scopes = [app_part for app_part in self._oauth_scopes]
          elif isinstance(user_provided_scopes, str):
              user_provided_scopes = [user_provided_scopes]
  
          if not isinstance(user_provided_scopes, (list, tuple)):
              raise ValueError(
                  "'user_provided_scopes' must be a list or a tuple of strings")
  
          scopes = set()
          for app_part in user_provided_scopes:
              for scope in self._oauth_scopes.get(app_part, [(app_part,)]):
                  scopes.add(self._prefix_scope(scope))
  
          return list(scopes)
docs: Returns a list of scopes needed for each of the
          scope_helpers provided, by adding the prefix to them if required
  
          :param user_provided_scopes: a list of scopes or scope helpers
          :type user_provided_scopes: list or tuple or str
          :return: scopes with url prefix added
          :rtype: list
          :raises ValueError: if unexpected datatype of scopes are passed