Skip to main content

EduceLab Globus

PyPI version Python versions Tests Documentation Status License: AGPL v3

educelab-globus is a Python module and command-line toolkit for logging into and transferring data between Globus endpoints. It wraps globus-sdk with a small configuration file, named endpoints, and three ergonomic CLI commands that make scripted transfers between lab and archive systems straightforward.

Features

  • A simple TOML-based config of named Globus endpoints with optional default base directories
  • A login command that acquires and caches tokens, prompts for any required consents (including data_access and session/MFA requirements), and falls back automatically to a headless flow on remote shells
  • A cp-style command for copying files and directories between endpoints, with progress reporting, sync modes, optional checksum verification, and a background submit mode
  • A small Python API for use from other tools and pipelines

Requirements

Installation

This project is available on PyPI:

python3 -m pip install educelab-globus

Quick start

1. Configure your endpoints

Named Globus endpoints are stored in ~/.globuscp/config.toml:

[lab-server]
uuid = "16fd2706-8baf-433b-82eb-8c7fada847da"
basedir = "/mnt/scratch/"  # optional, defaults to /

[archive]
uuid = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
basedir = "/cold/"

basedir is optional. When omitted, absolute paths must be given explicitly on the command line and relative paths are not allowed.

You can also use the interactive editor:

el-globus-config --edit

2. Log in

el-globus-login

Tokens are cached in ~/.globuscp/tokenstore.json. Subsequent commands reuse them until they expire or an endpoint requires new consents.

3. Transfer data

el-globus-cp lab-server:data/experiment-01 archive:backups/2024/experiment-01

CLI reference

# List configured endpoints
el-globus-config

# Interactively add, edit, or delete endpoints
el-globus-config --edit

# Login to Globus and cache access tokens
el-globus-login

# Login for specific endpoints only
el-globus-login --endpoints endpoint-name-or-uuid [...]

# Force a new login, even if cached tokens are valid
el-globus-login --force

# Print the auth URL instead of opening a browser (useful over SSH)
el-globus-login --no-browser

# Transfer a file or directory between two endpoints.
# Paths may be absolute or relative to the endpoint's basedir.
el-globus-cp src-endpoint:/path/to/source dst-endpoint:/path/to/dest

# Examples
el-globus-cp lab-server:data/experiment-01 archive:backups/2024/experiment-01
el-globus-cp lab-server:/mnt/scratch/run42 archive:/cold/run42

# Only transfer files that have changed (other choices: exists, size, checksum)
el-globus-cp --sync-level mtime src:data/ dst:data/

# Enable checksum verification
el-globus-cp --verify src:data/ dst:data/

# Background mode: exit immediately after submitting the transfer
el-globus-cp --background src:data/ dst:data/

All commands accept --verbose/-v and --quiet/-q to control log output.

Python API

from educelab.globus import login, endpoints, get_endpoint

# List configured endpoints
print(endpoints())

# Look up a single endpoint by name
ep = get_endpoint('lab-server')

# Log in and obtain a globus_sdk.TransferClient
tc = login([ep['uuid']])

See the full API documentation for details.

Documentation

Full documentation is hosted on Read the Docs: https://educelab-globus.readthedocs.io

License

This project is licensed under the GNU Affero General Public License v3.0. See LICENSE and NOTICE for details.

Metadata

Release files for educelab-globus 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for educelab-globus 1.0.0
File Size Uploaded Provenance
educelab_globus-1.0.0.tar.gz 30.2 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for educelab-globus 1.0.0
File Interpreter ABI Platform
educelab_globus-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 57.2 kB

Release files / educelab_globus-1.0.0.tar.gz

Download URL educelab_globus-1.0.0.tar.gz
Size 30.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e08b51b87d61e864797fd0b62ee0ac1fa3f50b390178eb2d7932f6baf11988dd
BLAKE2b-256 checksum
How to use checksums
846abe52b7b55e10ed125f07f080b1cfe877ff9f52df89e782b23cd8707a3c92
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.

Transparency log

Release files / educelab_globus-1.0.0-py3-none-any.whl

Download URL educelab_globus-1.0.0-py3-none-any.whl
Size 27.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
23947adf8a847e2d6994e177e945e0bc800411812968a77880f3b2d8938312c0
BLAKE2b-256 checksum
How to use checksums
222fad042ddce728770676d55477e5a3bcb72b970a90f5aadca051d1d2e0397d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.

Transparency log

Security for educelab-globus 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for educelab_globus-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page