Skip to main content

Package LaTeX projects into clean, submission-ready archives.

Project description

UploadAssist logo

UploadAssist

Submission-ready LaTeX project packaging.

UploadAssist packages the local files used by a LaTeX document into a clean submission directory and .tar.gz archive. It is designed for journal, conference, and repository submission systems, many of which require a flat source bundle.

Version 1.0 is a modern, dependency-free successor to arxiv-collector. It supports Python 3.9 and newer.

Highlights

  • Recursively discovers \input, \include, \subfile, import-family commands, graphics, bibliographies, and local classes/styles.
  • Flattens the bundle by default and rewrites source references accordingly.
  • Detects duplicate basenames before flattening instead of silently overwriting files.
  • Strips LaTeX comments by default while preserving escaped percent signs.
  • Replaces stale output atomically and creates a ready-to-upload archive.
  • Requires no Python dependencies and no TeX installation.

Installation

python -m pip install uploadassist

Usage

Run the command from the directory containing your main document:

uploadassist

If there is one .tex file, it is selected automatically. If there are several, main.tex or paper.tex is preferred when unambiguous. You can always specify the document:

uploadassist path/to/main.tex

The default output is output/ next to the main document, plus output.tar.gz.

Common options:

uploadassist --noflatten main.tex             # preserve directories
uploadassist --no-strip-comments main.tex     # retain comments
uploadassist --no-archive main.tex            # omit the tar.gz file
uploadassist -o submission main.tex            # choose the output directory
uploadassist --include journal-template.sty main.tex
uploadassist --include extra-files/ main.tex   # repeatable
uploadassist --version

To extract only cited BibTeX entries:

uploadassist --extract-bib references.bib main.tex > cited.bib

Run uploadassist --help for the complete command reference.

Python API

from uploadassist import collect, get_deps

dependencies = get_deps("main.tex")
files = collect("main.tex", "submission", flatten=True)

collect returns the generated file paths. Pass create_archive=False to omit the archive.

Discovery and limitations

UploadAssist uses static source discovery so it can run without compiling the document. This covers conventional literal paths in common LaTeX commands. Paths assembled through custom macros, generated during compilation, or selected only through TeX conditionals cannot be inferred; add those files with --include.

Flattening changes every dependency to its basename. If two used files have the same basename, UploadAssist stops with an actionable error; rename one file or use --noflatten. Always compile and inspect the generated bundle before submitting it.

Development

python -m pip install -e ".[dev]"
ruff check uploadassist tests examples
ruff format --check uploadassist tests examples
python -m pytest
python -m build
python -m twine check dist/*

Bug reports are welcome in the issue tracker. Maintainers can use the release checklist for PyPI publishing.

License

UploadAssist is distributed under the BSD 3-Clause License. See LICENSE.

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

uploadassist-1.0.0.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uploadassist-1.0.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file uploadassist-1.0.0.tar.gz.

File metadata

  • Download URL: uploadassist-1.0.0.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for uploadassist-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c06899a05bb9d3721d31a6842ebca9cbb7edc39210865ed1a3523548332abda9
MD5 370e331d95f55a72aaaa4f989c7601db
BLAKE2b-256 a84bff42783caf8419b575dc2de64c2ce90c1e7fa7c1bbbafa626cc4cc54dee8

See more details on using hashes here.

Provenance

The following attestation bundles were made for uploadassist-1.0.0.tar.gz:

Publisher: publish.yml on cvanelteren/UploadAssist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file uploadassist-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: uploadassist-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for uploadassist-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0ac9901580618c463b6c1875e68451d1677615dd9ed43ae8f2ed94aa3493ac0a
MD5 6dae077b5c5b377e70ac7c1cc8d88bb6
BLAKE2b-256 2dba7cda4d8cad99c3d18542a3d74857b1bbd2b38f82a893580fae2ac2005c02

See more details on using hashes here.

Provenance

The following attestation bundles were made for uploadassist-1.0.0-py3-none-any.whl:

Publisher: publish.yml on cvanelteren/UploadAssist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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