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.9: Move keyring functionality to separate module, fixing library use
without the
cli
orall
extras installed. - 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.9.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e27dfbf78c99fc32d232a78a100947ddf4ce332fc01aca65e079c9c5317b5c96 |
|
MD5 | fc74c6528165275137cd0c8273c4c4c2 |
|
BLAKE2b-256 | 6938da9e3e8825d6c8bb30ff1ec7446c7860fc9591a4449b293ab4a888ed5952 |