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 beNone
. 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
anduntil
toRepository.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
- instead,
/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 alsoGithub.rate_limiting
- should be called in method
/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
- instead,
/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
- should be called in method
/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
- should be called in method
Documentation
All the documentation is here: http://jacquev6.github.com/PyGithub.