Skip to main content

Human Cell Atlas Data Storage System Command Line Interface

Project description

This repository is a pip installable Command Line Interface (CLI) and Python library (API) for interacting with the Data Coordination Platform (DCP) of the Human Cell Atlas (HCA).

Currently the hca package supports interaction with the Upload Service and Data Storage Service (DSS) for services such as uploading, downloading, and querying data.

Installation

pip install hca.

Usage

Click here for the CLI documentation.

Click here for the API documentation.

To see the list of commands you can use, type hca --help.

Configuration management

The HCA CLI supports ingesting configuration from a configurable array of sources. Each source is a JSON file. Configuration sources that follow the first source update the configuration using recursive dictionary merging. Sources are enumerated in the following order (i.e., in order of increasing priority):

  • Site-wide configuration source, /etc/hca/config.json

  • User configuration source, ~/.config/hca/config.json

  • Any sources listed in the colon-delimited variable HCA_CONFIG_FILE

  • Command line options

Array merge operators: When loading a chain of configuration sources, the HCA CLI uses recursive dictionary merging to combine the sources. Additionally, when the original config value is a list, the package supports array manipulation operators, which let you extend and modify arrays defined in underlying configurations. See https://github.com/kislyuk/tweak#array-merge-operators for a list of these operators.

Service to Service Authorization

Google service credentials must be whitelisted before they will authenticate with the HCA CLI.

Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of your Google service credentials file to authenticate.

One can also use: hca dss login.

More info on google service credentials and how to create.

Development

To develop on the CLI, first run pip install -r requirements-dev.txt. You can install your locally modified copy of the hca package by running make install in the repository root directory.

To use the command line interface with a local or test DSS, first run hca (or scripts/hca if you want to use the package in place from the repository root directory). This will create the file ~/.config/hca/config.json, which you can modify to update the value of DSSClient.swagger_url to point to the URL of the Swagger definition served by your DSS deployment. Lastly, the CLI enforces HTTPS connection to the DSS API. If you are connecting to a local DSS, make this change in dcp-cli/hca/util/__init__.py in the SwaggerClient object:

scheme = "http"

To use the Python interface with a local or test DSS, pass the URL of the Swagger definition to the DSSClient constructor via the swagger_url parameter:

client = DSSClient(swagger_url="https://dss.example.com/v1/swagger.json")

You can also layer a minimal config file on top of the default config.json using the HCA_CONFIG_FILE environment variable, for example:

export SWAGGER_URL="https://dss.staging.data.humancellatlas.org/v1/swagger.json"
jq -n .DSSClient.swagger_url=env.SWAGGER_URL > ~/.config/hca/config.staging.json
export HCA_CONFIG_FILE=~/.config/hca/config.staging.json

Testing

Before you run tests, first run hca dss login. This will pop up a browser and get you to authenticate with Google. Use an email from one of the whitelisted domains (in DSS_SUBSCRIPTION_AUTHORIZED_DOMAINS_ARRAY from here).

Then make test.

Primary CI testing is through Travis CI; there is also additiona testing with the Gitlab/Allspark that runs tests for Windows. If submitting PRs that have the potential of being platform dependent, please ensure the status Windows Testing is verified before merging.

Bugs

Please report bugs, issues, feature requests, etc. on GitHub.

Security Policy

See our Security Policy.

License

Licensed under the terms of the MIT License.

https://img.shields.io/travis/HumanCellAtlas/dcp-cli.svg https://codecov.io/github/HumanCellAtlas/dcp-cli/coverage.svg?branch=master https://img.shields.io/pypi/v/hca.svg https://img.shields.io/pypi/l/hca.svg https://readthedocs.org/projects/hca/badge/?version=latest

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

hca-6.1.2.tar.gz (71.1 kB view details)

Uploaded Source

Built Distribution

hca-6.1.2-py2.py3-none-any.whl (88.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file hca-6.1.2.tar.gz.

File metadata

  • Download URL: hca-6.1.2.tar.gz
  • Upload date:
  • Size: 71.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

File hashes

Hashes for hca-6.1.2.tar.gz
Algorithm Hash digest
SHA256 5644927af68ea92f59c5699eb6504b25e3f81d6bf9336bedd099b855e5245805
MD5 537f0c1ef56d4ec4b903fad77555b89a
BLAKE2b-256 f7af9b86a1aae58987ddefc986721902d9a98c6988f7ec38df285885e1c01274

See more details on using hashes here.

Provenance

File details

Details for the file hca-6.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: hca-6.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 88.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

File hashes

Hashes for hca-6.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 17fa23986ce83f3bcc8d53e48f588abd3df0ac4192b63ed9ee9bbab2bd3d0b0d
MD5 234f6d71382cea7d591c1981d83dbe41
BLAKE2b-256 4c3e5df6dc3100bfedda15a453f75f8ddc8995b5c95a8a0473c2d16ad8f0d69b

See more details on using hashes here.

Provenance

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