remarkbox/requirements.py3.txt
russell@unturf.com 38475eceeb
feat: provenance + QR codes on every export
Every exported document (PDF, EPUB, DOCX, HTML, markdown, plain, ...)
now points back to its living source on Remarkbox so a printed snapshot
remains traceable years later.

What's injected:
  - Top banner: source URI, snapshot ISO timestamp, generator commit hash,
    plus a notice the document is a snapshot of a living source.
  - QR code (PNG, embedded as data URI) linking back to the canonical URI.
    Scannable from print, survives the pandoc image pipeline across
    HTML, PDF (via wkhtmltopdf), DOCX, EPUB, ODT.
  - Per-reply permalinks: each reply heading hyperlinks its date to the
    deep-link permalink (thread-uri#node-id), academic-citation style.
  - Footer repeating the source URI + commit hash.
  - Namespace exports also hyperlink each chapter title to the live
    thread.

Canonical URI = https://{namespace.name}{node.path} — namespace name is
its host on the public web.

New module: remarkbox/lib/provenance.py — header_md, footer_md,
reply_heading_md, qr_png_data_uri, canonical_uri helpers, and a one-shot
build() bundler.

Dep added: segno (pure-Python QR generator, BSD, zero deps).
2026-04-25 06:14:39 -04:00

84 lines
1.9 KiB
Text

# python 2 -> 3 compat.
six
# Python 3.12+ no longer bundles setuptools in venvs.
setuptools
# Pyramid.
plaster_pastedeploy
pyramid
pyramid_jinja2
pyramid_debugtoolbar
pyramid_retry
pyramid_tm
# Model.
SQLAlchemy
SQLAlchemy-Utils
transaction
zope.sqlalchemy
alembic
# PostgreSQL database connections.
# requires postgresql-devel on Fedora for `pg_config` binary.
psycopg2-binary
# Template renderer.
#jinja2
jinja2
# MarkDown is a popular and familair WYSIWYM markup language.
markdown
python-markdown-math
html5lib
BeautifulSoup4
# Bleach sanitizes MarkDown (removes HTML/Javascript) to prevent XSS.
# Pin >=6.0.0: bleach <3.3.0 had CVE-2021-23980 (ReDoS in linkifier URL regex);
# bleach <6.0.0 had LinkifyFilter API differences that break sanitize_html.py.
bleach>=6.0.0
bleach-allowlist
# codehilite.
pygments
# Human readable time deltas.
ago
# light weight URI attribute parser.
miniuri
# the official Remarkbox "meta" theme.
remarkbox-theme-meta @ git+ssh://git@git.unturf.com:2222/engineering/remarkbox/remarkbox-theme-meta.git
# chaostheory theme (foxhop.net).
remarkbox-chaostheory @ git+ssh://git@git.unturf.com:2222/engineering/remarkbox/remarkbox-theme-chaostheory.git
# another example theme.
#git+https://github.com/russellballestrini/remarkbox-westworld.git#egg-remarkbox-westworld
#git+https://git.unturf.com/engineering/remarkbox/remarkbox-westworld.git#egg-remarkbox-westworld
#remarkbox-westworld @ git+https://git.unturf.com/engineering/remarkbox/remarkbox-westworld.git
# Create URI slugs from titles.
python-slugify
# Future proof, computationally complex password hashes.
bcrypt
# reach out to verify public rb_owner_key.
requests[security]
# request library pins this dependency too low.
# idna==2.6
# credit card storage and processing.
stripe
# slack: bot notifications.
slacker
# DKIM Signed Email from Python.
dkimpy
# QR codes for export provenance (links printed PDFs back to their living source).
# Pure Python, zero deps, BSD license.
segno