Pygithub: Github.search_topics retornando lista de repositórios que geram um erro ao tentar buscar dados indefinidos

Criado em 12 out. 2018  ·  6Comentários  ·  Fonte: PyGithub/PyGithub

Olá,

Eu estava tentando buscar uma lista de repositórios com um tópico específico e, em seguida, brincar com os atributos retornados, mas os objetos de Repositório retornados na PaginatedList geram um erro ao tentar buscar dados desconhecidos:

Traceback (most recent call last):
  File "github-crawler.py", line 6, in <module>
    print(i, repo.archive_url)
  File "/home/user/.local/lib/python3.6/site-packages/github/Repository.py", line 2407, in get_topics
    self.url + "/topics",
  File "/home/user/.local/lib/python3.6/site-packages/github/Repository.py", line 745, in url
    self._completeIfNotSet(self._url)
  File "/home/user/.local/lib/python3.6/site-packages/github/GithubObject.py", line 259, in _completeIfNotSet
    self._completeIfNeeded()
  File "/home/user/.local/lib/python3.6/site-packages/github/GithubObject.py", line 263, in _completeIfNeeded
    self.__complete()
  File "/home/user/.local/lib/python3.6/site-packages/github/GithubObject.py", line 268, in __complete
    self._url.value
  File "/home/user/.local/lib/python3.6/site-packages/github/Requester.py", line 262, in requestJsonAndCheck
    return self.__check(*self.requestJson(verb, url, parameters, headers, input, self.__customConnection(url)))
  File "/home/user/.local/lib/python3.6/site-packages/github/Requester.py", line 278, in __customConnection
    if not url.startswith("/"):
AttributeError: 'NoneType' object has no attribute 'startswith'

Abaixo está um exemplo do código:

from github import Github

g = Github(per_page=300)
i = 1
for repo in g.search_topics('security'):
    print(i, repo.archive_url)
    i += 1

Ele pode ser testado aqui: https://repl.it/repls/LawngreenPlushBetaversion

Ambiente:
Linux ubuntu 4.15.0-36-generic x86_64 GNU / Linux
Python 3.6.6
PyGithub 1.43.2

Alguma ajuda com isso?
E obrigada

Comentários muito úteis

PR bem-vindo

Todos 6 comentários

Vou consertar mais tarde: p

Talvez, o código errado esteja aqui . @jacquerie

Talvez, o código errado esteja aqui . @jacquerie

Uhm? Acho que não contribuí com código para nada disso ...

Apenas olhando para o código. Parece que search_topics está retornando uma lista paginada de repositórios GitHub, mas a API parece retornar uma lista de tópicos, incluindo as seguintes propriedades:

  • nome
  • Nome em Exibição
  • Pequena descrição
  • Descrição
  • criado por
  • liberado
  • criado em
  • updated_at
  • apresentou
  • curado
  • pontuação

Acho que essa pode ser a raiz do problema.

Sim, de fato, o endpoint / search / topics da API retorna uma lista de tópicos relacionados à palavra-chave fornecida e não uma lista de repositórios marcados com aquele tópico (o que é um pouco confuso, talvez?).
No meu código, usei os outros endpoints da API e funcionou bem.

Mesmo assim, o método no PyGithub deve ser corrigido.

PR bem-vindo

Esta página foi útil?
0 / 5 - 0 avaliações