Read and write both small and large files to Github.
The regular GitHub Contents API can't handle files larger than 1MB - this class knows how to spot that problem and switch to the large-file-supporting low level Git Data API instead.
Note that file contents is passed and returned as bytestrings, not regular strings.
pip install github-contents
You will need a GitHub OAuth token with full repository access.
The easiest way to create one of these is using https://github.com/settings/tokens
from github_contents import GithubContents # For repo simonw/disaster-data: github = GithubContents( "simonw", "disaster-data", token=GITHUB_OAUTH_TOKEN, branch="main" )
To read a file:
content_in_bytes, sha = github.read(path_within_repo)
To write a file:
content_sha, commit_sha = github.write( filepath=path_within_repo, content_bytes=contents_in_bytes, sha=previous_sha, # Optional commit_message=commit_message, committer={ "name": COMMITTER_NAME, "email": COMMITTER_EMAIL, }, )