Skip to main content

Python client for GitHub API

Project description

Python client for GitHub API

Installation

requires python 3.6+

Yes that is opinionated. Python 2 is near the end of the life and this is a new project.

Note octokit and octokit.py were already taken in the cheese shop

pip install octokitpy

Documentation

https://octokitpy.readthedocs.io/en/latest/

Examples

REST API:

from octokit import Octokit
repos = Octokit().repos.get_for_org(org='octokit', type='public')
# Make an unauthenticated request for the public repositories of the octokit organization

Webhooks:

from octokit import webhook
webhook.verify(headers, payload, secret, events=['push'])

octokit.py provides a function to verify webhooks sent to your application.

headers

dictionary of request headers

payload

payload of request; will be converted to a string via json.dumps for signature validation

secret

string; secret provided to GitHub to sign webhook

events

list; events that you want to receive

verify_user_agent

boolean; whether or not you want to verify the user agent string of the request

return_app_id

boolean; whether or not you want to return the app id from the ping event for GitHub applications. This will only return the id if the event is the ping event. Otherwise the return value will be boolean.

Authentication

Instatiate a client with the authentication scheme and credentials that you want to use.

basic:

octokit = Octokit(auth='basic', username='myuser', password='mypassword')
octokit.repos.get_for_org(org='octokit', type='private')

token:

response = Octokit(auth='token', token='yak').authorization.get(id=100)

app:

octokit = Octokit(auth='app', app_id=42, private_key=private_key)

For applications provide the application id either from the ping webhook or the application’s page on GitHub. The private_key is a string of your private key provided for the application. The app scheme will use the application id and private key to get a token for the first installation id of the application.

TODOs

GitHub APIs

[-] REST (see best practices, integration tests, and errors)

[ ] GraphQL client

[x] GitHub Apps

[ ] OAuth Apps

[x] Webhooks

Data

The octokit client based on the available rest data and webhook data

[ ] Periodically, check if ``routes.json`` has changed and if so fetch and open a PR for it to be merged

[ ] Periodically, check if ``webhook-names.json`` has changed and if so fetch and open a PR for it to be merged

Tests

[x] unit tests

[ ] integration tests - need fixtures to assert against

[ ] coverage uploaded to code climate -- not sure why it is not working

Errors

[ ] Raise :code:`OctokitValidationError` for param validation error

[ ] Raise :code:`OctokitAuthenticationError` for auth error

[ ] Raise :code:`OctokitRateLimitError` for rate limiting errors

Best Practices

[ ] throttling

[ ] handles rate limiting

[ ] pagination

Check box guide

[ ] Incomplete

[-] Partially completed

[x] Completed

Development

To run the all tests run:

tox

Contributing

Pull requests are very welcome!

Please see CONTRIBUTING.md for more information.

Credits

Package based on cookiecutter-pylibrary

License

MIT

Changelog

0.1.0 (?)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

octokitpy-0.4.1.tar.gz (43.5 kB view hashes)

Uploaded Source

Built Distribution

octokitpy-0.4.1-py2.py3-none-any.whl (57.5 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page