MCPcopy Index your code
hub / github.com/pollinations/pollinations / github_api_request

Function github_api_request

social/scripts/common.py:93–121  ·  view source on GitHub ↗

Make a GitHub API request with retry on transient failures (5xx, 429).

(
    method: str,
    url: str,
    headers: Dict,
    timeout: int = None,
    max_retries: int = 3,
    **kwargs,
)

Source from the content-addressed store, hash-verified

91
92
93def github_api_request(
94 method: str,
95 url: str,
96 headers: Dict,
97 timeout: int = None,
98 max_retries: int = 3,
99 **kwargs,
100) -> requests.Response:
101 """Make a GitHub API request with retry on transient failures (5xx, 429)."""
102 _timeout = timeout or DEFAULT_TIMEOUT
103 resp = None
104 last_exc = None
105 for attempt in range(max_retries):
106 try:
107 resp = requests.request(method, url, headers=headers, timeout=_timeout, **kwargs)
108 if resp.status_code < 500 and resp.status_code != 429:
109 return resp
110 print(f" GitHub API {resp.status_code} on attempt {attempt + 1}/{max_retries}")
111 except requests.exceptions.RequestException as e:
112 last_exc = e
113 print(f" GitHub API request error on attempt {attempt + 1}/{max_retries}: {e}")
114 if attempt < max_retries - 1:
115 delay = INITIAL_RETRY_DELAY * (2 ** attempt)
116 time.sleep(delay)
117 # Exhausted retries — raise on network error, return 5xx response for callers to handle
118 if last_exc:
119 raise last_exc
120 print(f" WARNING: GitHub API returned {resp.status_code} after {max_retries} retries: {url}")
121 return resp
122
123
124def parse_json_response(response: str) -> Optional[Dict]:

Callers 15

_ensure_branchFunction · 0.90
_create_blobsFunction · 0.90
_attempt_tree_commitFunction · 0.90
fetch_gistFunction · 0.90
fetch_pr_merged_atFunction · 0.90
mainFunction · 0.90
_news_branch_existsFunction · 0.90
_path_exists_on_newsFunction · 0.90
load_snapshot_from_newsFunction · 0.90
load_models_mdFunction · 0.90
commit_text_to_newsFunction · 0.90

Calls 1

requestMethod · 0.80

Tested by

no test coverage detected