Most suitable python library for Github API v3 [closed]

Solution 1:

Since you mentioned you are a beginner python programmer, I would suggest you to try to use the JSON API without any Github library first. It really isn't that difficult and it will help you a lot later in your programming life since same approach can be applied to any JSON API. Especially if it seems that trying out libraries will take days.

I'm not saying that some library isn't easier to use, I'm just saying the small extra effort to use the API directly might be worth it in the long run. At least it will help you understand why some of those libraries seem "unintuitive" (as you said).

Simple example to fetch creation time of django repository:

import requests
import json
r = requests.get('https://api.github.com/repos/django/django')
if(r.ok):
    repoItem = json.loads(r.text or r.content)
    print "Django repository created: " + repoItem['created_at']

This is using the popular requests library. In your code you'll naturally need to handle the error cases too.

If you need access with authentication it will be a bit more complex.

Solution 2:

In the end, I ended up using PyGithub. It works well, and the author is really receptive for feedback and bug reports. :-)

(Adapted from my edit to the original question, for better visibility)

Solution 3:

Documentation is horrible for PyGitHub, but the product is great. Here is a quick sample for actually retrieving a file, changing it with a new comment at the beginning of the file and committing it back

from github import Github
gh = Github(login_or_token='.....', base_url='...../api/v3')
user = gh.get_user()
repo = user.get_repo("RepoName")
file = repo.get_file_contents("/App/forms.py")
decoded_content = "# Test " + "\r\n" + file.decoded_content
repo.update_file("/"RepoName"/forms.py", "Commit Comments", decoded_content, file.sha)