Add typing hints to github_tools with mypy enforcement (#771)

This commit is contained in:
Jon Meow
2021-08-25 09:29:17 -07:00
committed by GitHub
parent 5042d96863
commit 4cbf5c6ab9
11 changed files with 177 additions and 49 deletions
+17 -7
View File
@@ -9,11 +9,14 @@ Exceptions. See /LICENSE for license information.
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
"""
import argparse
import os
from typing import Dict, Generator, Optional, Tuple
# https://pypi.org/project/gql/
import gql
import gql.transport.requests
# gql is missing type annotations, so disable checking on around it.
import gql # type: ignore
import gql.transport.requests # type: ignore
_ENV_TOKEN = "GITHUB_ACCESS_TOKEN"
@@ -25,7 +28,9 @@ PAGINATION = """pageInfo {
totalCount"""
def add_access_token_arg(parser, permissions):
def add_access_token_arg(
parser: argparse.ArgumentParser, permissions: str
) -> None:
"""Adds a flag to set the access token."""
access_token = os.environ.get(_ENV_TOKEN, default=None)
parser.add_argument(
@@ -42,7 +47,7 @@ def add_access_token_arg(parser, permissions):
class Client(object):
"""A GitHub GraphQL client."""
def __init__(self, parsed_args):
def __init__(self, parsed_args: argparse.Namespace):
"""Connects to GitHub."""
transport = gql.transport.requests.RequestsHTTPTransport(
url="https://api.github.com/graphql",
@@ -50,11 +55,16 @@ class Client(object):
)
self._client = gql.Client(transport=transport)
def execute(self, query):
def execute(self, query: str) -> Dict:
"""Runs a query."""
return self._client.execute(gql.gql(query))
return self._client.execute(gql.gql(query)) # type: ignore
def execute_and_paginate(self, query, path, first_page=None):
def execute_and_paginate(
self,
query: str,
path: Tuple[str, ...],
first_page: Optional[Dict] = None,
) -> Generator[Dict, None, None]:
"""Runs a query with pagination.
Arguments: