9

I havent used PyGithub yet but I am just curious if there is any possibility to get a list of releases from a repository (e.g. https://github.com/{username}/{repo-name}/releases). I can not see any information about that in documentation here.

kfb
  • 6,252
  • 6
  • 40
  • 51
widget
  • 421
  • 1
  • 5
  • 17
  • If you have no specific requirements for PyGithub I can strongly recommend `github3.py`, which does support this API. – kfb Nov 07 '16 at 11:49

3 Answers3

8

The question is a bit old but nobody seems to have answered it in the way the OP asked.

PyGithub does have a way to return releases of a repo, here is a working example:

from github import Github

G = Github('')  # Put your GitHub token here
repo = G.get_repo('justintime50/github-archive')
releases = repo.get_releases()

for release in releases:
    print(release.title)

The above will return the following:

v4.3.0
v4.2.2
v4.2.1
v4.2.0
v4.1.1
...

I hope this is helpful!

Justin Hammond
  • 595
  • 8
  • 20
2

You can get a list of releases from a GitHub repo by making a GET request to

https://api.github.com/repos/{user}/{repo}/releases

Eg

import requests

url = 'https://api.github.com/repos/facebook/react/releases'
response = requests.get(url)

# Raise an exception if the API call fails.
response.raise_for_status()

data = response.json()

Also its worth noting you should be making authenticated requests otherwise you'll hit GitHubs API rate limiting pretty quickly and just get back 403s.

Mat
  • 1,345
  • 9
  • 15
  • 1
    thanks for answering but i was thinking about using just PyGithub to maintain my requirements to github but i see that i will need to create separate function for this. – widget Nov 07 '16 at 10:50
  • What exactly are you trying to do? – Mat Nov 07 '16 at 14:06
  • I want to make some notification about new releases of most interesting repositories for me which will be loaded from `yaml` or similar. – widget Nov 07 '16 at 14:15
  • Are these repos you own? If so you could set up a webhook and listen for a release event https://developer.github.com/v3/activity/events/types/#releaseevent – Mat Nov 07 '16 at 14:46
  • No, they are not mine. – widget Nov 07 '16 at 14:47
  • I'm still a little unsure as to what you need to do. Do you want to know when packages are being released so you can update your projects third party requirements? – Mat Nov 07 '16 at 15:29
  • So you could then just define this in your requirements.txt file. For example ``` Django djangorestframework ``` and then run `pip install -r requirements.txt` This would install the latest version of each package. You can also define versions in your requirements file like so `Django==1.10.3` – Mat Nov 07 '16 at 15:38
  • i see that I misunderstood your previous comment. I don't mean python requirements but just other requirements like for infrastructure components like `docker`, `kubernetes`, `prometheus` and so on – widget Nov 07 '16 at 18:01
2

The documentation for PyGithub doesn't mention it, but I believe that pygithub-1.29 (the latest published on PyPi as of today) does in fact contain this API: Repository.py for the v1.29 tag contains a get_releases() function.

There is also an open, unmerged pull request that appears to fill out this API to include assets, too.

kfb
  • 6,252
  • 6
  • 40
  • 51