From 9481768f2e435c3ba4579ec56b9213b411077ad8 Mon Sep 17 00:00:00 2001 From: devs6186 Date: Thu, 19 Feb 2026 21:58:33 +0530 Subject: [PATCH] [tasks/github] Guard against None GraphQL response in collect_releases request_graphql_dict() can return None when the API call fails. The in-operator check on a NoneType raised TypeError. Added explicit None guards in fetch_data() and in the two call sites in releases_model() so the task logs a warning and returns cleanly instead of crashing. Fixes #3709 Signed-off-by: devs6186 --- augur/tasks/github/releases/core.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/augur/tasks/github/releases/core.py b/augur/tasks/github/releases/core.py index f6b2f5e56b..9a58fda403 100644 --- a/augur/tasks/github/releases/core.py +++ b/augur/tasks/github/releases/core.py @@ -167,9 +167,17 @@ def fetch_data(key_auth, logger, github_url, repo_id, tag_only = False): logger.info("Hitting endpoint: {} ...\n".format(url)) data = request_graphql_dict(key_auth,logger, url, query) + if data is None: + logger.warning(f"GraphQL returned None for repo {github_url}; skipping releases.") + return None + if 'data' in data: data = data['data']['repository'] + if data is None: + logger.warning(f"GraphQL repository node is None for repo {github_url}; skipping releases.") + return None + data['owner'] = owner return data @@ -182,6 +190,9 @@ def releases_model(session, key_auth, logger, repo_git, repo_id): logger.info(f"Ran into problem when fetching data for repo {repo_git}: {e}") return + if data is None: + return + #logger.info("repository value is: {}\n".format(data)) if 'releases' in data: if 'edges' in data['releases'] and data['releases']['edges']: @@ -195,6 +206,8 @@ def releases_model(session, key_auth, logger, repo_git, repo_id): elif 'edges' in data['releases'] and not data['releases']['edges']: logger.info("Searching for tags instead of releases...") data = fetch_data(key_auth, logger, repo_git, repo_id,True) + if data is None: + return logger.info("refs value is: {}\n".format(data)) if 'refs' in data: if 'edges' in data['refs']: