dsw-tdk
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 wizardlist= list templates available in configured DSW instanceget= download a template from DSW instanceput= upload a template to DSW instance (create or update)verify= check the metadata of local template projectpackage= create a distribution ZIP package that is importable to DSW via web interfacepot= create a POT file with translatable strings of the local template projectrender= 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
--formataccepts the UUID or name of a format (it can be omitted if the template has only one)--porenders with translations from a PO file (e.g. a translateddsw-tdk potoutput); the language is taken fromdocument.languageof the context unless--languageis given--project-filesis a directory with files uploaded to the project, named by their UUID or file name- Only files selected by
_tdk.filesare available to the rendering, as on the server - The context is completed as the document worker does it with its default configuration:
configgets the service name and URL of the Data Stewardship Wizard and fallbacks for missing branding (app title, colors, logo), andextrasrequested 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 thedocumentContextsection 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,excelandrdflib-convert, therequestsglobal and thepandoc-docx-pagebreakpyPandoc filter need optional dependencies:pip install 'dsw-tdk[all]'; WeasyPrint also needs Pango and thepandocstep needs pandoc installed - The
docx-*.luaPandoc filters of the document worker are always available;--pandoc-filters DIRadds more (searched first) and--pandoc-templates DIRprovides templates for thetemplateoption of thepandocstep (orPANDOC_FILTERS/PANDOC_TEMPLATES, as for the worker) - The
secretsandrequestsglobals exist only when configured for the template on the server; locally,--secret NAME=VALUE(repeatable) providessecretsand--allow-requestsprovidesrequests
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-urlnot specified
- Used when
DSW_API_KEY= API Key of the user authorized to manage document templates- Used when
--api-keynot specified
- Used when
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
- Prepare your DSW instance and admin account (optionally, prepare
.envfile) - Verify the connection by issuing
dsw-tdk list - Create a new template project
dsw-tdk newor get existingdsw-tdk get(or re-use some local) - Go to the template project and make edits you need to do
- Update template in DSW with
dsw-tdk put(or continually withdsw-tdk put --watch) - (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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| dsw_tdk-4.35.0.tar.gz | 306.8 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.