docs: def _list_objects(self, client_kwargs, path, max_request_entries):
          """
          Lists objects.
  
          args:
              client_kwargs (dict): Client arguments.
              path (str): Path relative to current locator.
              max_request_entries (int): If specified, maximum entries returned
                  by request.
  
          Returns:
              generator of tuple: object name str, object header dict
          """
          kwargs = dict()
          if max_request_entries:
              kwargs['max_keys'] = max_request_entries
  
          bucket = self._get_bucket(client_kwargs)
  
          while True:
              with _handle_oss_error():
                  response = bucket.list_objects(prefix=path, **kwargs)
  
              if not response.object_list:
                  # In case of empty dir, return empty dir path:
                  # if empty result, the dir do not exists.
                  raise _ObjectNotFoundError('Not found: %s' % path)
  
              for obj in response.object_list:
                  yield obj.key, self._model_to_dict(obj, ('key',))
  
              # Handles results on more than one page
              if response.next_marker:
                  client_kwargs['marker'] = response.next_marker
              else:
                  # End of results
                  break