/PyGithub

Python library implementing the full Github API v3

Primary LanguagePythonGNU Lesser General Public License v3.0LGPL-3.0

This is a Python (2 and 3) library to access the Github API v3. With it, you can manage your Github resources (repositories, user profiles, organizations, etc.) from Python scripts.

It covers the full API (except recent additions, see "What's missing" bellow), and all methods are tested against the real Github site.

Should you have any question, any remark, or if you find a bug, or if there is something you can do with the API but not with PyGithub, please open an issue.

PyGithub is stable. I will maintain it up to date with the API, and fix bugs if any, but I don't plan new heavy developments.

What's new?

Version 1.18.0 (August 21st, 2013) (Bénodet edition)

  • Issues' repository attribute will never be None. Thank you stuglaser for the pull request
  • No more false assumption on rate_limiting, and creation of rate_limiting_resettime. Thank you edjackson for the pull request
  • New parameters since and until to Repository.get_commits. Thank you apetresc for the pull request
  • Catch Json parsing exception for some internal server errors, and throw a better exception. Thank you MarkRoddy for the pull request
  • Allow reversed iteration of ``PaginatedList``s. Thank you davidbrai for the pull request

What's missing?

We now have automated ways to list URLs documented in the reference of Github API v3 and not covered by PyGithub.

Github API v3 URLs not (yet) covered by PyGithub

  • /applications/:client_id/tokens/:access_token (GET)
  • /feeds (GET)
  • /gists/:id/forks (POST)
    • instead, Gist.create_fork calls the old URL /gists/:id/fork
  • /meta (GET)
  • /notifications (PUT)
  • /notifications/emails (GET)
  • /notifications/emails (PATCH)
  • /notifications/global/emails (GET)
  • /notifications/global/emails (PUT)
  • /notifications/organization/:org/emails (GET)
  • /notifications/organization/:org/emails (PUT)
  • /notifications/settings (GET)
  • /notifications/settings (PATCH)
  • /notifications/threads/:id (PATCH)
  • /notifications/threads/:id/subscription (DELETE)
  • /notifications/threads/:id/subscription (GET)
  • /notifications/threads/:id/subscription (PUT)
  • /rate_limit (GET)
    • should be called in method Github.get_rate_limit. See also Github.rate_limiting
  • /repos/:owner/:repo/contents/:path (DELETE)
  • /repos/:owner/:repo/contents/:path (PUT)
  • /repos/:owner/:repo/hooks/:id/tests (POST)
    • instead, Hook.test calls the old URL /repos/:owner/:repo/hooks/:id/test
  • /repos/:owner/:repo/notifications (GET)
  • /repos/:owner/:repo/notifications (PUT)
  • /repos/:owner/:repo/stats/code_frequency (GET)
  • /repos/:owner/:repo/stats/commit_activity (GET)
  • /repos/:owner/:repo/stats/contributors (GET)
  • /repos/:owner/:repo/stats/participation (GET)
  • /repos/:owner/:repo/stats/punch_card (GET)
  • /repos/:owner/:repo/subscription (DELETE)
  • /repos/:owner/:repo/subscription (GET)
  • /repos/:owner/:repo/subscription (PUT)
  • /repositories (GET)
    • should be called in method Github.get_repos
  • /search/code (GET)
  • /search/issues (GET)
  • /search/repositories (GET)
  • /search/users (GET)
  • /users/:user/following/:target_user (GET)
    • should be called in method NamedUser.has_in_following

Documentation

All the documentation is here: http://jacquev6.github.com/PyGithub.