A Git LFS client implementation in Python
Project description
Giftless Client
A Git LFS client library implemented in Python, compatible with Git LFS servers in general and specifically Giftless Git LFS server.
giftless-client
is tested on Python 2.7 and 3.6+.
Installation
You can install this library directly from pypi:
(venv) $ pip install giftless-client
API
This module exposes one main class: LfsClient
. Typically, you only need to use this class to perform most Git LFS operations. The client provides both a wrapper around the low-level LFS API commands e.g. batch
as well as higher level methods to upload and download files.
Instantiating a Client
from giftless_client import LfsClient
client = LfsClient(
lfs_server_url='https://git-lfs.example.com', # Git LFS server URL
auth_token='somer4nd0mT0ken==', # Bearer token if required by the server (optional)
transfer_adapters=['basic'] # Enabled transfer adapters (optional)
)
The transfer_adapters
parameter is optional, and represents a list of supported transfer adapters by priority
to negotiate with the server; Typically, there is no reason to provide this parameter.
Downloading a File from LFS storage
Download a file and save it to file like object.
download(file_obj, object_sha256, object_size, organization, repo, **extras)
file_obj
is expected to be an file-like object open for writing in binary modeobject_sha256
: sha256 of the object you wish to downloadobject_size
: size of the object you wish to downloadorganization
,repo
: used to generate the prefix for the batch request in formorganization/repo
extras
are added to the batch request attributes dict prefixed withx-
. This is largely Giftless specific.
Note that the download itself is performed by the selected Transfer Adapter.
Uploading a File to LFS storage
Upload a file to LFS storage
upload(file_obj, organization, repo, **extras)
file_obj
: a readable, seekable file-like object- Other arguments as per download
Note that the upload itself is performed by the selected Transfer Adapter.
Sending an LFS batch
API request
Send a batch
request to the LFS server:
batch(prefix, operation, objects, ref=None, transfers=None)
prefix
: add to LFS server url e.g. ifprefix=abc
and client was created with server url ofhttps://git-lfs.example.com
then batch request is made by POST tohttps://git-lfs.example.com/abc/objects/batch
- All other arguments: see batch command for definitions
Example:
client.batch(
prefix='myorg/myrepo',
operation='download',
objects={
"oid": "12345678",
"size": 123
}
)
Usage in Command Line
While the main use for giftless-client
is as a client library for other projects, this module does include some
command line functionality.
Run the following command to get more information:
(venv) $ giftless-client --help
License
Giftless Client is free software distributed under the terms of the MIT license. See LICENSE for details.
Giftless Client is (c) 2020 Datopian / Viderum Inc.
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
Built Distribution
File details
Details for the file giftless-client-0.1.1.tar.gz
.
File metadata
- Download URL: giftless-client-0.1.1.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/2.7.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b810764c9a5b112a533db4f05e7cef1a3b760a52117cb2ee99a18667d9968ca |
|
MD5 | a6b217b70a7f5484f23f6f24803550e6 |
|
BLAKE2b-256 | d619cb99fa8550753a0f67db910050f4774af049ece9eef659c241f282f40260 |
File details
Details for the file giftless_client-0.1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: giftless_client-0.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/2.7.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6baf6fa8f22a2c3d07730195820d08e36650a1aa70be23b7e59a5f620185662a |
|
MD5 | 5e62c577a839b51092c9793f25d46cf3 |
|
BLAKE2b-256 | f4d10610a54b89557774524b1792e77b3debdd26a1ce557f7a57e1a7153653e1 |