Skip to main content

dsw-tdk

User Guide GitHub release (latest SemVer) PyPI Docker Pulls LICENSE CII Best Practices Python Version

Template Development Kit for Data Stewardship Wizard

Installation

Python package

You can easily install this tool using pip (from PyPI):

$ pip install dsw-tdk

Optionally, you can clone any version from this repository and install it directly:

$ git clone https://github.com/ds-wizard/dsw-tdk.git
$ pip install -e .

We recommend using virtual environments to avoid clashes in dependencies with other projects.

Dockerized tool

If you don't want to use Python directly on your machine, you can easily use Docker image with DSW TDK:

$ docker run datastewardshipwizard/dsw-tdk --help
$ docker run datastewardshipwizard/dsw-tdk:develop --help

See datastewardshipwizard/dsw-tdk on Docker Hub to check available tags.

Usage

You can find out possibilities directly using --help flag:

$ dsw-tdk --help
$ dsw-tdk put --help

For further information, visit our documentation.

Basic commands

  • new = create a new template project locally using interactive wizard
  • list = list templates available in configured DSW instance
  • get = download a template from DSW instance
  • put = upload a template to DSW instance (create or update)
  • verify = check the metadata of local template project
  • package = create a distribution ZIP package that is importable to DSW via web interface
  • pot = create a POT file with translatable strings of the local template project
  • render = render a document from the local template project and a document context (no DSW instance needed)

Rendering documents locally

render uses the same engine as the DSW document worker (dsw-templating). You need a document context as a JSON file:

$ dsw-tdk render --context context.json --format "HTML Document" --output document.html
$ dsw-tdk render -c context.json -F "PDF Document" --po cs.po --project-files ./files
  • --format accepts the UUID or name of a format (it can be omitted if the template has only one)
  • --po renders with translations from a PO file (e.g. a translated dsw-tdk pot output); the language is taken from document.language of the context unless --language is given
  • --project-files is a directory with files uploaded to the project, named by their UUID or file name
  • Only files selected by _tdk.files are available to the rendering, as on the server
  • The context is completed as the document worker does it with its default configuration: config gets the service name and URL of the Data Stewardship Wizard and fallbacks for missing branding (app title, colors, logo), and extras requested by the format but missing in the context are rendered as for a document without a project (with a warning)
  • The worker's defaults can be overridden with -D NAME=VALUE (repeatable), named as in the documentContext section of the document worker configuration, or with its environment variables (also in .env); the option wins over the environment:
$ dsw-tdk render -c context.json -F "HTML Document" -D "serviceName=FAIR Wizard" -D serviceUrl=https://fair-wizard.com
$ echo 'DOCUMENT_CONTEXT_SERVICE_NAME=FAIR Wizard' >> .env
Name Environment variable Default
serviceName DOCUMENT_CONTEXT_SERVICE_NAME Data Stewardship Wizard
serviceNameShort DOCUMENT_CONTEXT_SERVICE_NAME_SHORT DSW
serviceUrl DOCUMENT_CONTEXT_SERVICE_URL https://ds-wizard.org
serviceDomainName DOCUMENT_CONTEXT_SERVICE_DOMAIN_NAME ds-wizard.org
defaultPrimaryColor DOCUMENT_CONTEXT_DEFAULT_PRIMARY_COLOR #0033aa
defaultIllustrationsColor DOCUMENT_CONTEXT_DEFAULT_ILLUSTRATIONS_COLOR #0033aa
defaultLogoUrl DOCUMENT_CONTEXT_DEFAULT_LOGO_URL {{clientUrl}}/assets/logo.svg
defaultAppTitle DOCUMENT_CONTEXT_DEFAULT_APP_TITLE DS Wizard
defaultAppTitleShort DOCUMENT_CONTEXT_DEFAULT_APP_TITLE_SHORT DS Wizard

The service* values are always set; the default* ones apply only where the context has no value.

  • Steps weasyprint, excel and rdflib-convert, the requests global and the pandoc-docx-pagebreakpy Pandoc filter need optional dependencies: pip install 'dsw-tdk[all]'; WeasyPrint also needs Pango and the pandoc step needs pandoc installed
  • The docx-*.lua Pandoc filters of the document worker are always available; --pandoc-filters DIR adds more (searched first) and --pandoc-templates DIR provides templates for the template option of the pandoc step (or PANDOC_FILTERS / PANDOC_TEMPLATES, as for the worker)
  • The secrets and requests globals exist only when configured for the template on the server; locally, --secret NAME=VALUE (repeatable) provides secrets and --allow-requests provides requests

Environment variables

You can use the following environment variables to avoid repeating CLI options.

  • DSW_API_URL = URL of DSW API you want to use, e.g., https://api.demo.ds-wizard.org (notice that it is not the URL of client, you can find it out by clicking Help > About in DSW)
    • Used when --api-url not specified
  • DSW_API_KEY = API Key of the user authorized to manage document templates
    • Used when --api-key not specified

You can also use them in .env file which is automatically loaded from current directory or specify it using --dot-env option:

$ ls -a
. .. .env my-other-file
$ dsw-tdk list
$ dsw-tdk --dot-env /path/to/my/.env list

How to start

  1. Prepare your DSW instance and admin account (optionally, prepare .env file)
  2. Verify the connection by issuing dsw-tdk list
  3. Create a new template project dsw-tdk new or get existing dsw-tdk get (or re-use some local)
  4. Go to the template project and make edits you need to do
  5. Update template in DSW with dsw-tdk put (or continually with dsw-tdk put --watch)
  6. (or) Create a distribution ZIP package that is importable via DSW web interface with dsw-tdk package

Verbosity

You can use --quiet and --debug flags to toggle less or more output messages:

$ dsw-tdk --quiet list
$ dsw-tdk --debug list

Requirements

  • Python 3.12+
  • DSW instance with matching version (e.g. a local one using Docker)
  • Admin credentials (email+password) to the DSW instance

Contributing

We welcome any form of feedback and contribution to this tool:

  • Report bugs or ask in case of uncertainty using GitHub Issues.
  • Share ideas and feature requests using DSW Ideas site.
  • Submit enhancements using Pull Requests, just please make sure that you comply with used conventions.

For more information read CONTRIBUTING.

License

This project is licensed under the Apache 2 License - see the LICENSE file for more details.

Metadata

Release files for dsw-tdk 4.35.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 dsw-tdk 4.35.0
File Size Uploaded Provenance
dsw_tdk-4.35.0.tar.gz 306.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for dsw-tdk 4.35.0
File Interpreter ABI Platform
dsw_tdk-4.35.0-py3-none-any.whl Python 3 none any Details

Total release size: 350.5 kB

Release files / dsw_tdk-4.35.0.tar.gz

Download URL dsw_tdk-4.35.0.tar.gz
Size 306.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9180cca6eca58e684705ff0399c3aee6172bb81cc924c15fa79f397081621350
BLAKE2b-256 checksum
How to use checksums
2485fe2596db767ecaedff9d363273c95536fd8384128bc1381a19e73868228f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 6, 2026.

Transparency log

Release files / dsw_tdk-4.35.0-py3-none-any.whl

Download URL dsw_tdk-4.35.0-py3-none-any.whl
Size 43.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3ba69ca5def30dbb5c796ba4a7739b2862f4c6db3dd0b7409d5da5ee6b95d982
BLAKE2b-256 checksum
How to use checksums
39cdc50386211a46ebfcea5d88d1b0a223fe47c8a455eb05d551d277a13e0216
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 6, 2026.

Transparency log

Security for dsw-tdk 4.35.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 dsw_tdk-4.35.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 Oct 6, 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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

4.35.0 This release

2 release files Full provenance

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