Library and CLI tool for creating fine-grained GitHub tokens
Project description
github-fine-grained-token-client
Library and CLI tool for creating and managing fine-grained GitHub tokens.
Purpose
GitHub allows the creation of per-project access tokens with fine-grained permissions but doesn't currently have an API to do so.
This tool seeks to provide a client exposing this functionality anyway by whatever means necessary. More specifically, for now this means simulating requests to the relevant parts of the web interface closely enough to how a browser would perform them.
Installation
To install from PyPI:
pip3 install github-fine-grained-token-client
Command-line tool usage
To use the CLI tool, you'll need to install some optional dependencies first:
pip3 install 'github-fine-grained-token-client[cli]'
To create a token yourtokenname
with read-only permissions (the default) for
your public GitHub repository yourrepo
:
github-fine-grained-token-client create --repositories yourrepo yourtokenname
There are more commands and options - please refer to the docs.
Usage as a library
Basic example script:
import asyncio
from datetime import timedelta
from os import environ
from github_fine_grained_token_client import (
BlockingPromptTwoFactorOtpProvider,
GithubCredentials,
SelectRepositories,
async_client,
)
credentials = GithubCredentials(environ["GITHUB_USER"], environ["GITHUB_PASS"])
assert credentials.username and credentials.password
async def main() -> str:
async with async_client(
credentials=credentials,
# 2FA will be mandatory on GitHub starting at some point in 2023
two_factor_otp_provider=BlockingPromptTwoFactorOtpProvider(),
) as session:
token = await session.create_token(
"my token",
expires=timedelta(days=364),
scope=SelectRepositories(["my-project"]),
)
return token
token = asyncio.run(main())
print(token)
More information
For more detailed usage information and the API reference, refer to the documentation.
License
MIT License, see LICENSE
file.
Changelog
- 1.0.8: Add
py.typed
marker (allows typechecking when used as a dependency). - 1.0.7: Fix expiration date parsing in presence of refresh advice.
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
Hashes for github_fine_grained_token_client-1.0.8.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bd7f6d26e4fe0bd51af709808f5828184e78b003bbf0e6d2adcee56b5499d1e |
|
MD5 | 7f54ba6bd8189e3e012bddb04313fdba |
|
BLAKE2b-256 | a25e140eb5c1b278ed21f9f44c7e85d12bb1db62fad77e0cf03e6a6f04143cb7 |