Skip to main content

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 mode
  • object_sha256: sha256 of the object you wish to download
  • object_size: size of the object you wish to download
  • organization, repo: used to generate the prefix for the batch request in form organization/repo
  • extras are added to the batch request attributes dict prefixed with x-. 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. if prefix=abc and client was created with server url of https://git-lfs.example.com then batch request is made by POST to https://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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

giftless-client-0.1.1.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

giftless_client-0.1.1-py2.py3-none-any.whl (9.2 kB view details)

Uploaded Python 2 Python 3

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

Hashes for giftless-client-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2b810764c9a5b112a533db4f05e7cef1a3b760a52117cb2ee99a18667d9968ca
MD5 a6b217b70a7f5484f23f6f24803550e6
BLAKE2b-256 d619cb99fa8550753a0f67db910050f4774af049ece9eef659c241f282f40260

See more details on using hashes here.

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

Hashes for giftless_client-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6baf6fa8f22a2c3d07730195820d08e36650a1aa70be23b7e59a5f620185662a
MD5 5e62c577a839b51092c9793f25d46cf3
BLAKE2b-256 f4d10610a54b89557774524b1792e77b3debdd26a1ce557f7a57e1a7153653e1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page