Skip to content

PEP compatible Run pytests codecov pypi-badge Code style: black GitHub source

PEPHubClient

PEPHubClient is a CLI and Python API for PEPhub. Key features are:

  • Download: Users can download public PEPs via CLI or Python API.
  • Authorization: Users can log in to PEPhub using PEPHubClient via CLI, providing download access to private projects.
  • Upload: Authenticated users can also upload PEPs to PEPhub.

PEPHubClient uses PEPhub's device authorization protocol. To upload projects or to download private projects, user must be authorized through PEPhub.


Installation

To install PEPHubClient from PyPI, use the following command:

pip install pephubclient

To install pephubclient from the GitHub repository, use the following command:

pip install git+https://github.com/pepkit/pephubclient.git

How to specify URL for PEPhub instance

If you want to use your own PEPhub instance, you can specify it by setting the PEPHUB_BASE_URL environment variable. e.g.

export PEPHUB_BASE_URL=http://localhost:8000/

Authentication

To login, use the login command:

phc login

To logout, use logout:

phc logout

Example


$ phc --help

 Usage: pephubclient [OPTIONS] COMMAND [ARGS]...                                                                   

╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version             -v                                                                                        │
│ --install-completion            Install completion for the current shell.                                       │
│ --show-completion               Show completion for the current shell, to copy it or customize the              │
│                                 installation.                                                                   │
│ --help                          Show this message and exit.                                                     │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ──────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ login               Login to PEPhub                                                                             │
│ logout              Logout                                                                                      │
│ pull                Download and save project locally.                                                          │
│ push                Upload/update project in PEPhub                                                             │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
$ phc pull --help

 Usage: pephubclient pull [OPTIONS] PROJECT_REGISTRY_PATH                                                          

 Download and save project locally.                                                                                

╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    project_registry_path      TEXT  [default: None] [required]                                                │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --force    --no-force      Overwrite project if it exists. [default: no-force]                                  │
│ --help                     Show this message and exit.                                                          │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
$ phc push --help

 Usage: pephubclient push [OPTIONS] CFG                                                                            

 Upload/update project in PEPhub                                                                                   

╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    cfg      TEXT  Project config file (YAML) or sample table (CSV/TSV)with one row per sample to constitute   │
│                     project                                                                                     │
│                     [default: None]                                                                             │
│                     [required]                                                                                  │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --namespace                        TEXT  Project namespace [default: None] [required]                        │
│ *  --name                             TEXT  Project name [default: None] [required]                             │
│    --tag                              TEXT  Project tag [default: None]                                         │
│    --force         --no-force               Force push to the database. Use it to update, or upload project.    │
│                                             [default: no-force]                                                 │
│    --is-private    --no-is-private          Upload project as private. [default: no-is-private]                 │
│    --help                                   Show this message and exit.                                         │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯