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
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:
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
Comentários muito úteis
PR bem-vindo