Pygithub: 未定義のデータをフェッチしようとするとエラーをスローするリポジトリのリストを返すGithub.search_topics

作成日 2018年10月12日  ·  6コメント  ·  ソース: PyGithub/PyGithub

こんにちは、

特定のトピックを持つリポジトリのリストをフェッチしてから、返された属性で遊んでみましたが、PaginatedListで返されたリポジトリオブジェクトは、不明なデータをフェッチしようとするとエラーをスローします。

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'

以下はコードの例です。

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

ここでテストできます: https

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

それで何か助けはありますか?
ありがとう

最も参考になるコメント

PR歓迎

全てのコメント6件

後で修正します:p

たぶん、間違ったコードがここにあり@jacquerie

たぶん、間違ったコードがここにあり

うーん? 私はこれにコードを提供したとは思わない...

コードをちらっと見ただけです。 search_topicsがGitHubリポジトリのページ付けされたリストを返しているようですが、APIは次のプロパティを含むトピックのリストを返しているようです。

  • 名前
  • 表示名
  • 簡単な説明
  • 説明
  • によって作成された
  • リリース
  • created_at
  • update_at
  • 特徴
  • キュレーション
  • スコア

これが根本的な問題かもしれないと思います。

はい、確かに、APIエンドポイント/ search / topicsは、提供されたキーワードに関連するトピックのリストを返しますが、そのトピックでタグ付けされたリポジトリのリストは返しません(少し混乱するかもしれませんが?)。
私のコードでは、他のAPIエンドポイントを使用しましたが、正常に機能しました。

それでも、PyGithubのメソッドは修正する必要があります。

PR歓迎

このページは役に立ちましたか?
0 / 5 - 0 評価