1

特定のバージョンの Django のリリース情報を取得しようとしています。ただし、リリースは常に null 応答を返します。以下の例では、 Django の 1.11 リリースに関する情報を取得しようとしています。

import os
import requests

GITHUB_ACCESS_TOKEN = os.environ['GITHUB_ACCESS_TOKEN']

def get_release_information():
    query = '''
    {
      repository(owner: "django", name: "django") {
        release(tagName: "1.11") {
          name
          tagName
          createdAt
        }
      }
    }
    '''
    response = requests.post(
        url='https://api.github.com/graphql',
        json={'query': query},
        headers={'Authorization': f'token {GITHUB_ACCESS_TOKEN}'}
    )
    pprint(response.json())

上記は以下を返します。

{
  "data": {
    "repository": {
      "release": null
    }
  }
}

GraphQL クエリの実行方法を誤解していますか? このリリースの以下のクエリを使用して、これと同じクエリを自分の個人用パブリック リポジトリで動作させることができます。

query = '''
{
  repository(owner: "michaeljohnbarr", name: "django-timezone-utils") {
    release(tagName: "0.13") {
      name
      tagName
      createdAt
    }
  }
}
'''

私の個人用リポジトリは次の結果を返します。

{
  "data": {
    "repository": {
      "release": {
        "name": "Version 0.13",
        "tagName": "0.13",
        "createdAt": "2018-09-26T00:01:20Z"
      }
    }
  }
}

Github API v4 GraphQL ライブラリが 2 つのパブリック リポジトリを異なる方法で処理することは、私には意味がありません。私が使用している Github アクセス トークンには、すべてに対する完全なアクセス許可があります。可能なすべての権限とサブ権限を確認しました。

更新: (2019-09-14) Github の GraphQL API のサポート フォーラムがあります。同じ問題を特定するこのスレッドを見つけ、そこにも投稿しました。

4

1 に答える 1