octokitpy 0.15.0
Python client for GitHub API
License: MIT license
Keywords: github,octokit,api

========
Overview
========



Python client for GitHub API


Installation
============

*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.list_for_user(username="octokit")
    for repo in repos.json:
        print(repo["name"])
    # Make an unauthenticated request for octokit's public repositories

Webhooks::

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

:code:`octokit.py` provides a function to verify `webhooks <https://developer.github.com/webhooks/>`_ sent to your application.

    headers
        dictionary of request headers

    payload
        string; payload of request

    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.


Note that webhook names are available at :code:`from octokit_routes import webhook_names`

Authentication
--------------

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

basic::

    octokit = Octokit(auth='basic', username='myuser', password='mypassword')

token::

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

app::

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

app installation::

    octokit = Octokit(auth='installation', 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 :code:`private_key` is a string of your private key provided for the application.
The :code:`app` scheme will use the application id and private key to get a token for the first installation id of the application.

API Schema/Routes/Specifications
--------------------------------

One can instantiate the ``Octokit`` with ``routes=specification`` where the ``specification`` is one of ``api.github.com``, ``ghe-2.15``, etc.

Data
----

The :code:`octokit` client based on the available `route data <https://github.com/khornberg/octokitpy-routes>`_ and `webhook data <https://github.com/khornberg/octokitpy-routes>`_

TODOs
===========

GitHub APIs
-----------

::

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

    [ ] GraphQL client

    [x] GitHub Apps

    [ ] OAuth Apps

    [x] Webhooks




Tests
-----

::

    [x] unit tests

    [ ] integration tests - need fixtures to assert against

    [x] coverage uploaded to code climate

Errors
------

::

    [ ] Raise `OctokitValidationError` for param validation error

    [ ] Raise `OctokitAuthenticationError` for auth error

    [ ] Raise `OctokitRateLimitError` for rate limiting errors

Best Practices
--------------

::

    [ ] throttling

    [ ] handles rate limiting

    [x] pagination

Documentation
-------------

::

    [ ] Auto generated documentation

Deployment
----------

::

    [x] Deploy wheels

    [ ] GitHub releases


**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 <https://github.com/ionelmc/cookiecutter-pylibrary>`_

License
=======

MIT


Changelog
=========

0.13.0
------

**Breaking changes**

* Change to OpenAPI specifications
* Remove python 3.5 support
* Remove caching of parameters between calls
* Method parameters are typed checked to the OpenAPI schemas

0.1.0 (?)
------------------

* First release on PyPI.