Skip to main content

Quarto Fetch

Python 3.12+ License: MIT

A command-line tool for managing multiple Quarto paper repositories in a research project. It automatically fetches, updates, and organizes Quarto paper repositories while maintaining their build caches.

Features

  • 📦 Manage multiple Quarto paper repositories in a single project
  • 🔄 Automatically fetch and update papers from Git repositories
  • 🏗️ Support for both manuscript and default Quarto project types
  • ❄️ Smart handling of Quarto freeze directories
  • 📋 Detailed logging with progress tracking
  • ⚡ Efficient updates by tracking commit hashes
  • 🛡️ Built-in validation and error handling

Installation

We recommend using uv for installation. First, install uv if you haven't already:

curl -LsSf https://astral.sh/uv/install.sh | sh

Use uvx to run quartofetch directly without installation:

uvx quartofetch

Permanent Installation

If you prefer to install the tool permanently:

uv tool install quartofetch

Development Installation

For development work:

git clone https://github.com/MitchellAcoustics/quartofetch
cd quartofetch
uv sync

Quick Start

  1. Create a configuration file research/_paper_sources.yml:
papers:
  - repo_url: "https://github.com/username/paper1"
    target_folder: "paper1"
    branch: "main"  # optional

  - repo_url: "https://github.com/username/paper2"
    target_folder: "paper2"
    commit: "abc123"  # optional, pin to specific commit
  1. Run the fetcher:
# Using uvx (recommended)
uvx quartofetch

# Or with specific options
uvx quartofetch --config path/to/config.yml --force --log-level DEBUG

# If permanently installed
quartofetch --config path/to/config.yml

Project Structure

The tool expects and creates the following directory structure:

your-research-project/
├── research/
│   ├── _paper_sources.yml
│   └── papers/
│       ├── paper1/
│       │   ├── _quarto.yml
│       │   ├── paper.qmd
│       │   └── ...
│       └── paper2/
│           ├── _quarto.yml
│           ├── manuscript.qmd
│           └── ...
└── _freeze/
    └── research/
        └── papers/
            ├── paper1/
            │   └── ...
            └── paper2/
                └── ...

Configuration

Paper Sources (_paper_sources.yml)

Field Description Required
repo_url Git repository URL Yes
target_folder Local folder name Yes
branch Git branch to use No
commit Specific commit hash No

Command Line Options

Option Description Default
--config Path to configuration file research/_paper_sources.yml
--force Force update all papers False
--log-level Set logging level SUCCESS
--debug Enable debug logging False
--log-file Path to log file None

Error Handling

The tool includes comprehensive error handling for:

  • Git operation failures
  • Network timeouts
  • Authentication issues
  • Invalid configurations
  • File system operations

Development

Requirements

  • Python 3.12+
  • Git

Testing

# Install development dependencies
uv sync # or pip install ".[dev]"

# Run tests
pytest

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for quartofetch 0.1.4

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

Source distribution (sdist)

Source distribution for quartofetch 0.1.4
File Size Uploaded
quartofetch-0.1.4.tar.gz 21.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for quartofetch 0.1.4
File Interpreter ABI Platform
quartofetch-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 35.1 kB

Release files / quartofetch-0.1.4.tar.gz

Download URL quartofetch-0.1.4.tar.gz
Size 21.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8c2cc197fda30f3ba9b76ef64cd56b0b1d735bb830405e4b144a127249bf1035
BLAKE2b-256 checksum
How to use checksums
8b25ef4e8ec3aafd5b5141e8097bd94d111463289e9d2a50dd2d20831b64631e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

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 Nov 7, 2024.

Transparency log

Release files / quartofetch-0.1.4-py3-none-any.whl

Download URL quartofetch-0.1.4-py3-none-any.whl
Size 13.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
80f8e54befbd933bd4a7205b71a90b6e5259ad3f47ba8a1215e3a31efa0b9dc2
BLAKE2b-256 checksum
How to use checksums
3967041772b419dbaae5193b594024e91dd36d6bff8ee03fb4affe4a191c7153
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

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 Nov 7, 2024.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

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