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
File details
Details for the file github_fine_grained_token_client-1.0.9.tar.gz
.
File metadata
- Download URL: github_fine_grained_token_client-1.0.9.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e27dfbf78c99fc32d232a78a100947ddf4ce332fc01aca65e079c9c5317b5c96 |
|
MD5 | fc74c6528165275137cd0c8273c4c4c2 |
|
BLAKE2b-256 | 6938da9e3e8825d6c8bb30ff1ec7446c7860fc9591a4449b293ab4a888ed5952 |