MCPcopy
hub / github.com/pandas-dev/pandas / home_add_releases

Method home_add_releases

web/pandas_web.py:213–270  ·  view source on GitHub ↗
(context)

Source from the content-addressed store, hash-verified

211
212 @staticmethod
213 def home_add_releases(context):
214 context["releases"] = []
215
216 github_repo_url = context["main"]["github_repo_url"]
217 resp = requests.get(
218 f"https://api.github.com/repos/{github_repo_url}/releases",
219 headers=GITHUB_API_HEADERS,
220 timeout=5,
221 )
222 if resp.status_code == 403:
223 sys.stderr.write("WARN: GitHub API quota exceeded when fetching releases\n")
224 resp_bkp = requests.get(
225 context["main"]["production_url"] + "releases.json", timeout=5
226 )
227 resp_bkp.raise_for_status()
228 releases = resp_bkp.json()
229 else:
230 resp.raise_for_status()
231 releases = resp.json()
232
233 with open(
234 pathlib.Path(context["target_path"]) / "releases.json",
235 "w",
236 encoding="utf-8",
237 ) as f:
238 json.dump(releases, f, default=datetime.datetime.isoformat)
239
240 for release in releases:
241 if release["prerelease"]:
242 continue
243 published = datetime.datetime.strptime(
244 release["published_at"], "%Y-%m-%dT%H:%M:%SZ"
245 )
246 context["releases"].append(
247 {
248 "name": release["tag_name"].lstrip("v"),
249 "parsed_version": version.parse(release["tag_name"].lstrip("v")),
250 "tag": release["tag_name"],
251 "published": published,
252 "url": (
253 release["assets"][0]["browser_download_url"]
254 if release["assets"]
255 else ""
256 ),
257 }
258 )
259 # sorting out obsolete versions
260 grouped_releases = itertools.groupby(
261 context["releases"],
262 key=lambda r: (r["parsed_version"].major, r["parsed_version"].minor),
263 )
264 context["releases"] = [
265 max(release_group, key=lambda r: r["parsed_version"].minor)
266 for _, release_group in grouped_releases
267 ]
268 # sorting releases by version number
269 context["releases"].sort(key=lambda r: r["parsed_version"], reverse=True)
270 return context

Calls 9

maxFunction · 0.85
raise_for_statusMethod · 0.80
jsonMethod · 0.80
lstripMethod · 0.80
getMethod · 0.45
writeMethod · 0.45
appendMethod · 0.45
parseMethod · 0.45
groupbyMethod · 0.45

Tested by 1