Skip to main content

An async GitHub API library

Project description

An asynchronous GitHub API library.

Development status

https://travis-ci.org/brettcannon/gidgethub.svg?branch=master https://codecov.io/gh/brettcannon/gidgethub/branch/master/graph/badge.svg Documentation Status

Installation

Gidgethub is available on PyPI.

python3 -m pip install gidgethub

Gidgethub requires Python version 3.6 and up.

Goals

The key goal is to provide a base library for the GitHub API which performs no I/O of its own (a sans-I/O library). This allows users to choose whatever HTTP library they prefer while parceling out GitHub-specific details to this library. This base library is then built upon to provide an abstract base class to a cleaner API to work with. Finally, implementations of the abstract base class are provided for asynchronous HTTP libraries for immediate usage.

Alternative libraries

If you think you want a different approach to the GitHub API, GitHub maintains a list of libraries.

Aside: what’s with the name?

I couldn’t think of a good name that was somehow a play on “GitHub” or somehow tied into Monty Python. And so I decided to play off of GitHub’s octocat as a theme and use my cat’s name, Gidget, as part of the name. Since “Gidget” somewhat sounds like “git”, I decided to go with “gidgethub”.

Changelog

3.1.0

3.0.0

  • gidgethub.sansio.RateLimit.from_http returns None if ratelimit is not found in the headers.

  • Allow authenticating as a GitHub App by using JSON web token. gidgethub.sansio.create_headers now accepts jwt argument. gidgethub.abc.GitHubAPI._make_request, gidgethub.abc.GitHubAPI.getitem, gidgethub.abc.GitHubAPI.getiter, gidgethub.abc.GitHubAPI.post, gidgethub.abc.GitHubAPI.patch, gidgethub.abc.GitHubAPI.put, and gidgethub.abc.GitHubAPI.delete now accept jwt and oauth_token arguments.

  • gidgethub is now packaged using flit.

2.5.0

  • Tighten type hints for parameters that have a default of None but were not typed as Optional.

  • Tweak code to not change semantics but reach 100% coverage.

  • Provide a human-readable string representation of gidgethub.sansio.RateLimit.

  • Use the message data as the error message if the errors object was not returned.

  • Add the data keyword argument to gidgethub.abc.GitHubAPI.delete.

2.4.1

  • Tighten up protections against caching ineligible responses.

2.4.0

  • Expand gidgethub.routing.Router.dispatch().

2.3.0

  • Add support for application/x-www-form-urlencoded webhook event payloads. (This also allows for API calls to return this content type, although GitHub currently does not do that.)

  • Introduce gidgethub.routing to help route webhook events to registered asynchronous callbacks.

  • Add type hints.

  • Add a cache argument to gidgethub.abc.GitHubAPI.

2.2.0

  • Introduce gidgethub.tornado to support Tornado (thanks to Matthias Bussonnier and A. Jesse Jiryu Davis for the PR reviews).

2.1.0

  • The default value for the data argument of gidgethub.abc.GitHubAPI.put() was changed from "" to b"".

  • All type hints were removed (due to mypy not supporting yield in an async function, they were not being tested as being valid).

2.0.0

  • Renamed gidgethub.abc._sleep() to sleep() to make the method public.

  • Renamed the “test” extra to “tests” and added the “dev” extra.

  • Introduced the RateLimitExceeded exception.

  • Methods on GitHubAPI no longer automatically sleep when it’s possible that the call will exceed the user’s rate limit (it’s now up to the user to prevent from going over the rate limit).

  • Made the [treq] install extra depend on Twisted[tls].

1.2.0

  • gidgethub.sansio.Event.from_http() raises a BadRequest of 415 instead of 400 when a content-type other than application/json is provided.

  • More robustly decode the body in gidgethub.sansio.Event.from_http() (i.e. if the content-type doesn’t specify charset, assume UTF-8).

  • Changed the signature of gidgethub.sansio.Event to accept Any for the data argument.

  • Fixed signature verification.

1.1.0

  • Introduced gidgethub.treq (thanks to Cory Benfield).

1.0.0

Initial release.

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

gidgethub-3.1.0.tar.gz (108.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gidgethub-3.1.0-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file gidgethub-3.1.0.tar.gz.

File metadata

  • Download URL: gidgethub-3.1.0.tar.gz
  • Upload date:
  • Size: 108.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.19.1

File hashes

Hashes for gidgethub-3.1.0.tar.gz
Algorithm Hash digest
SHA256 52119435ba73ddd5e697dae7bec8b93a048bc738720b81691ebd4b4d81d2d762
MD5 2f6dd65aa2668aa614ef3e3c34c2e624
BLAKE2b-256 ebbe903485d3cc9cded64465856be37d3f17ec1fa3fd4b399f93eeb6d38b336f

See more details on using hashes here.

File details

Details for the file gidgethub-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: gidgethub-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.19.1

File hashes

Hashes for gidgethub-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a6f9ac2300cc9d88c3523ef9a5acff022c9f6b5615e4b969e679bc819757646e
MD5 730590257698430eb062190891936641
BLAKE2b-256 da22116f92cdd357d8bfb99adf96e6683cca50a58269db4a4f7faf49e423033e

See more details on using hashes here.

Supported by

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