GitHub SDK for Python
Project description
✨ The modern, all-batteries-included GitHub SDK for Python ✨
✨ Support both sync and async calls, fully typed ✨
✨ Always up to date, like octokit ✨
Installation
pip install githubkit
# or, use poetry
poetry add githubkit
# or, use pdm
pdm add githubkit
Usage
Initialization
Initialize a github client using PAT (Token):
from githubkit import GitHub, TokenAuthStrategy
github = GitHub("<your_token_here>")
# or, use TokenAuthStrategy
github = GitHub(TokenAuthStrategy("<your_token_here>"))
or using basic authentication:
from githubkit import GitHub, BasicAuthStrategy
github = GitHub(BasicAuthStrategy("<client_id_here>", "<client_secret_here>"))
Call Rest API
APIs are fully typed. Typing in the following examples is just for reference only.
Simple sync call:
from githubkit import Response
from githubkit.rest import FullRepository
resp: Response[FullRepository] = github.rest.repos.get(owner="owner", repo="repo")
repo: FullRepository = resp.parsed_data
Simple async call:
from githubkit import Response
from githubkit.rest import FullRepository
resp: Response[FullRepository] = await github.rest.repos.async_get(owner="owner", repo="repo")
repo: FullRepository = resp.parsed_data
Call API with context (reusing client):
from githubkit import Response
from githubkit.rest import FullRepository
# with GitHub("<your_token_here>") as github:
with github:
resp: Response[FullRepository] = github.rest.repos.get(owner="owner", repo="repo")
repo: FullRepository = resp.parsed_data
from githubkit import Response
from githubkit.rest import FullRepository
# async with GitHub("<your_token_here>") as github:
async with github:
resp: Response[FullRepository] = await github.rest.repos.async_get(owner="owner", repo="repo")
repo: FullRepository = resp.parsed_data
Pagination
from githubkit.rest import Issue
for issue in github.paginate(
github.rest.issues.list_for_repo, owner="owner", repo="repo", state="open"
):
issue: Issue
print(issue.number)
from githubkit.rest import Issue
async for issue in github.paginate(
github.rest.issues.async_list_for_repo, owner="owner", repo="repo", state="open"
):
issue: Issue
print(issue.number)
Call GraphQL API
Simple sync call:
data: Dict[str, Any] = github.graphql(query, variables={"foo": "bar"})
Simple async call:
data: Dict[str, Any] = github.async_graphql(query, variables={"foo": "bar"})
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
GitHubKit-0.2.0.tar.gz
(208.6 kB
view hashes)
Built Distribution
GitHubKit-0.2.0-py3-none-any.whl
(231.2 kB
view hashes)
Close
Hashes for GitHubKit-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52037e4b01cf6d814c484a95fd40f817cf641e7d0ae95ec54b6470dd1d151ce7 |
|
MD5 | 733c66583227c60da9ced0bc8664c623 |
|
BLAKE2b-256 | bf0454dbdb1aa9671c8ca88d25333e8cf6387951915d53c0f19f7d570d971f69 |