La API de GitHub limita las búsquedas a 1000 resultados . Este límite afecta las búsquedas realizadas a través de PyGitHub, como GitHub.search_issues .
Parece que no hay indicios de que su búsqueda haya alcanzado este límite; no hay ninguna excepción o error que yo sepa. Quizás debería haber una excepción cuando esto suceda (si se puede detectar).
Es posible evitar este límite emitiendo múltiples consultas de búsqueda, pero dichas consultas deben adaptarse para adaptarse a los objetivos particulares de la consulta, por ejemplo, iterando sobre search_issues por rangos de fechas progresivos, y no puedo pensar en una forma de generalizar esto.
¿Alguna idea sobre cómo abordar esto? ¿Existe una solución general?
Tenga en cuenta que este problema no tiene nada que ver con la limitación de la velocidad o la paginación de los resultados.
Aquí hay una solución alternativa que demuestra cómo recuperar todas las solicitudes de extracción en un rango de fechas, incluso si hay más de 1000 resultados:
EDITAR: Reescribiré esto para que sea un método que rinda, en lugar de una clase, será más simple
class PullRequestQuery:
def __init__(self, git, repo, since, until):
self.git = git
self.repo = repo
self.until = until
self.issues = self.__query(since, until)
def __iter__(self):
skip = False
while True:
results = False
for issue in self.issues:
if not skip:
results = True
yield issue.as_pull_request()
skip = False
# If no more results then stop iterating.
if not results:
break
# Start new query picking up where we left off. Previous issue will be first one returned, so skip it.
self.issues = self.__query(issue.closed_at.strftime('%Y-%m-%dT%H:%M:%SZ'), self.until)
skip = True
def __query(self, since, until):
querystring = 'type:pr is:closed repo:%s/%s closed:"%s..%s"' % (self.repo.organization.login, self.repo.name, since, until)
return self.git.search_issues(query=querystring, sort="updated", order="asc")
Con esta clase, ahora puede hacer este tipo de cosas:
git = Github(user, passwd)
org = git.get_organization(orgname)
repo = org.get_repo(reponame)
for pull in PullRequestQuery(git, repo, "2017-01-01", "2017-12-31"):
print "%s: %s" % (pull.number, pull.title)
Al leer los documentos de la API de Github sobre la búsqueda, también me doy cuenta de que falta incomplete_results
como parte del proceso de resultados de búsqueda en PyGithub. Probablemente, incluir ese valor también podría ayudar a detectar si los resultados de búsqueda podrían estar (in) completos.
Ahora que tengo PyGithub bifurcado y ejecutándose localmente desde la fuente (estoy viendo el n. ° 606) tal vez pueda investigar esto más a fondo.
Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Gracias por sus aportaciones.
reabrir este problema?
y para una solución general para otras búsquedas también
Comentario más útil
reabrir este problema?
y para una solución general para otras búsquedas también