# dsw-tdk
[![User Guide](https://img.shields.io/badge/docs-User%20Guide-informational)](https://guide.ds-wizard.org)
[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ds-wizard/engine-tools)](https://github.com/ds-wizard/engine-tools/releases)
[![PyPI](https://img.shields.io/pypi/v/dsw-tdk)](https://pypi.org/project/dsw-tdk/)
[![Docker Pulls](https://img.shields.io/docker/pulls/datastewardshipwizard/dsw-tdk)](https://hub.docker.com/r/datastewardshipwizard/dsw-tdk)
[![LICENSE](https://img.shields.io/github/license/ds-wizard/engine-tools)](LICENSE)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4975/badge)](https://bestpractices.coreinfrastructure.org/projects/4975)
[![Python Version](https://img.shields.io/badge/Python-%E2%89%A5%203.7-blue)](https://python.org)
*Template Development Kit for [Data Stewardship Wizard](https://ds-wizard.org)*
## Installation
### Python package
You can easily install this tool using [pip](https://pip.pypa.io/en/stable/) (from [PyPI](https://pypi.org/project/dsw-tdk/)):
```shell script
$ pip install dsw-tdk
```
Optionally, you can clone any version from this repository and install it directly:
```shell script
$ git clone https://github.com/ds-wizard/dsw-tdk.git
$ pip install -e .
```
We recommend using [virtual environments](https://docs.python.org/3/library/venv.html) 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](https://hub.docker.com/repository/docker/datastewardshipwizard/dsw-tdk) to check available tags.
## Usage
You can find out possibilities directly using `--help` flag:
```shell script
$ dsw-tdk --help
$ dsw-tdk put --help
```
For further information, visit our [documentation](https://docs.ds-wizard.org).
### 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
### 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:
```shell script
$ 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:
```shell script
$ dsw-tdk --quiet list
$ dsw-tdk --debug list
```
## Requirements
- [Python 3.8+](https://www.python.org/downloads/)
- DSW instance with matching version (e.g. a local one using [Docker](https://github.com/ds-wizard/dsw-deployment-example))
- 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](https://github.com/ds-wizard/dsw-tdk/issues).
- Share ideas and feature requests using [DSW Ideas site](https://ideas.ds-wizard.org).
- Submit enhancements using [Pull Requests](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/about-pull-requests), just please make sure that you comply with used conventions.
For more information read [CONTRIBUTING](CONTRIBUTING.md).
## License
This project is licensed under the Apache 2 License - see the [LICENSE](LICENSE) file for more details.
Raw data
{
"_id": null,
"home_page": null,
"name": "dsw-tdk",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.9",
"maintainer_email": null,
"keywords": "documents, dsw, jinja2, template, toolkit",
"author": null,
"author_email": "Marek Such\u00e1nek <marek.suchanek@ds-wizard.org>",
"download_url": "https://files.pythonhosted.org/packages/f9/1a/f00a4b787ccb5846ed3ece052970d831d8bdb64e58be24e2f028ed4a6d2b/dsw_tdk-4.13.0.tar.gz",
"platform": null,
"description": "# dsw-tdk\n\n[![User Guide](https://img.shields.io/badge/docs-User%20Guide-informational)](https://guide.ds-wizard.org)\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ds-wizard/engine-tools)](https://github.com/ds-wizard/engine-tools/releases)\n[![PyPI](https://img.shields.io/pypi/v/dsw-tdk)](https://pypi.org/project/dsw-tdk/)\n[![Docker Pulls](https://img.shields.io/docker/pulls/datastewardshipwizard/dsw-tdk)](https://hub.docker.com/r/datastewardshipwizard/dsw-tdk)\n[![LICENSE](https://img.shields.io/github/license/ds-wizard/engine-tools)](LICENSE)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4975/badge)](https://bestpractices.coreinfrastructure.org/projects/4975)\n[![Python Version](https://img.shields.io/badge/Python-%E2%89%A5%203.7-blue)](https://python.org)\n\n*Template Development Kit for [Data Stewardship Wizard](https://ds-wizard.org)*\n\n## Installation\n\n### Python package\n\nYou can easily install this tool using [pip](https://pip.pypa.io/en/stable/) (from [PyPI](https://pypi.org/project/dsw-tdk/)):\n\n```shell script\n$ pip install dsw-tdk\n```\n\nOptionally, you can clone any version from this repository and install it directly:\n\n```shell script\n$ git clone https://github.com/ds-wizard/dsw-tdk.git\n$ pip install -e .\n```\n\nWe recommend using [virtual environments](https://docs.python.org/3/library/venv.html) to avoid clashes in dependencies with other projects.\n\n### Dockerized tool\n\nIf you don't want to use Python directly on your machine, you can easily use Docker image with DSW TDK:\n\n```\n$ docker run datastewardshipwizard/dsw-tdk --help\n$ docker run datastewardshipwizard/dsw-tdk:develop --help\n```\n\nSee [datastewardshipwizard/dsw-tdk on Docker Hub](https://hub.docker.com/repository/docker/datastewardshipwizard/dsw-tdk) to check available tags.\n\n## Usage\n\nYou can find out possibilities directly using `--help` flag:\n\n```shell script\n$ dsw-tdk --help\n$ dsw-tdk put --help\n```\n\nFor further information, visit our [documentation](https://docs.ds-wizard.org).\n\n### Basic commands\n\n- `new` = create a new template project locally using interactive wizard\n- `list` = list templates available in configured DSW instance\n- `get` = download a template from DSW instance\n- `put` = upload a template to DSW instance (create or update)\n- `verify` = check the metadata of local template project\n- `package` = create a distribution ZIP package that is importable to DSW via web interface\n\n### Environment variables\n\nYou can use the following environment variables to avoid repeating CLI options.\n\n- `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)\n - Used when `--api-url` not specified\n- `DSW_API_KEY` = API Key of the user authorized to manage document templates\n - Used when `--api-key` not specified\n \n You can also use them in `.env` file which is automatically loaded from current directory or specify it using `--dot-env` option:\n \n```shell script\n$ ls -a\n. .. .env my-other-file\n$ dsw-tdk list\n$ dsw-tdk --dot-env /path/to/my/.env list\n```\n \n### How to start\n\n1. Prepare your DSW instance and admin account (optionally, prepare `.env` file)\n2. Verify the connection by issuing `dsw-tdk list`\n3. Create a new template project `dsw-tdk new` or get existing `dsw-tdk get` (or re-use some local)\n4. Go to the template project and make edits you need to do\n5. Update template in DSW with `dsw-tdk put` (or continually with `dsw-tdk put --watch`)\n6. (or) Create a distribution ZIP package that is importable via DSW web interface with `dsw-tdk package`\n\n### Verbosity\n\nYou can use `--quiet` and `--debug` flags to toggle less or more output messages:\n\n```shell script\n$ dsw-tdk --quiet list\n$ dsw-tdk --debug list\n```\n\n## Requirements\n\n- [Python 3.8+](https://www.python.org/downloads/)\n- DSW instance with matching version (e.g. a local one using [Docker](https://github.com/ds-wizard/dsw-deployment-example))\n- Admin credentials (email+password) to the DSW instance\n\n## Contributing\n\nWe welcome any form of feedback and contribution to this tool:\n\n- Report bugs or ask in case of uncertainty using [GitHub Issues](https://github.com/ds-wizard/dsw-tdk/issues).\n- Share ideas and feature requests using [DSW Ideas site](https://ideas.ds-wizard.org).\n- Submit enhancements using [Pull Requests](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/about-pull-requests), just please make sure that you comply with used conventions.\n\nFor more information read [CONTRIBUTING](CONTRIBUTING.md).\n\n## License\n\nThis project is licensed under the Apache 2 License - see the [LICENSE](LICENSE) file for more details.\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "Data Stewardship Wizard Template Development Toolkit",
"version": "4.13.0",
"project_urls": {
"Documentation": "https://guide.ds-wizard.org",
"Homepage": "https://ds-wizard.org",
"Repository": "https://github.com/ds-wizard/engine-tools"
},
"split_keywords": [
"documents",
" dsw",
" jinja2",
" template",
" toolkit"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "672fd0d2e65689714788d336fc7a456b864d276eb2d65c2ec7cc636706915bef",
"md5": "91decfb85356a7fdb51a1bbb80e8b011",
"sha256": "c77f7c8a160b4cb59e0acebdddef2a4925179b53a7623b5a07d27906d316157a"
},
"downloads": -1,
"filename": "dsw_tdk-4.13.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "91decfb85356a7fdb51a1bbb80e8b011",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": "<4,>=3.9",
"size": 30806,
"upload_time": "2024-12-05T08:08:05",
"upload_time_iso_8601": "2024-12-05T08:08:05.165023Z",
"url": "https://files.pythonhosted.org/packages/67/2f/d0d2e65689714788d336fc7a456b864d276eb2d65c2ec7cc636706915bef/dsw_tdk-4.13.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f91af00a4b787ccb5846ed3ece052970d831d8bdb64e58be24e2f028ed4a6d2b",
"md5": "eae39dbb1d2ba5435293a50b79d9b495",
"sha256": "2c5b11c5152523e8ed49861cfeba2cde47f1fbcff6953e9df258dd8e5672ed7c"
},
"downloads": -1,
"filename": "dsw_tdk-4.13.0.tar.gz",
"has_sig": false,
"md5_digest": "eae39dbb1d2ba5435293a50b79d9b495",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.9",
"size": 33855,
"upload_time": "2024-12-05T08:08:06",
"upload_time_iso_8601": "2024-12-05T08:08:06.240696Z",
"url": "https://files.pythonhosted.org/packages/f9/1a/f00a4b787ccb5846ed3ece052970d831d8bdb64e58be24e2f028ed4a6d2b/dsw_tdk-4.13.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-05 08:08:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ds-wizard",
"github_project": "engine-tools",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "aiohappyeyeballs",
"specs": [
[
"==",
"2.4.3"
]
]
},
{
"name": "aiohttp",
"specs": [
[
"==",
"3.11.7"
]
]
},
{
"name": "aiosignal",
"specs": [
[
"==",
"1.3.1"
]
]
},
{
"name": "anyio",
"specs": [
[
"==",
"4.6.2.post1"
]
]
},
{
"name": "argon2-cffi",
"specs": [
[
"==",
"23.1.0"
]
]
},
{
"name": "argon2-cffi-bindings",
"specs": [
[
"==",
"21.2.0"
]
]
},
{
"name": "attrs",
"specs": [
[
"==",
"24.2.0"
]
]
},
{
"name": "boto3",
"specs": [
[
"==",
"1.35.69"
]
]
},
{
"name": "botocore",
"specs": [
[
"==",
"1.35.69"
]
]
},
{
"name": "Brotli",
"specs": [
[
"==",
"1.1.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2024.8.30"
]
]
},
{
"name": "cffi",
"specs": [
[
"==",
"1.17.1"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"3.4.0"
]
]
},
{
"name": "click",
"specs": [
[
"==",
"8.1.7"
]
]
},
{
"name": "colorama",
"specs": [
[
"==",
"0.4.6"
]
]
},
{
"name": "cssselect2",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "dkimpy",
"specs": [
[
"==",
"1.1.8"
]
]
},
{
"name": "dnspython",
"specs": [
[
"==",
"2.7.0"
]
]
},
{
"name": "fonttools",
"specs": [
[
"==",
"4.55.0"
]
]
},
{
"name": "frozenlist",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "func_timeout",
"specs": [
[
"==",
"4.3.5"
]
]
},
{
"name": "html5lib",
"specs": [
[
"==",
"1.1"
]
]
},
{
"name": "humanize",
"specs": [
[
"==",
"4.11.0"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "Jinja2",
"specs": [
[
"==",
"3.1.4"
]
]
},
{
"name": "jmespath",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "Markdown",
"specs": [
[
"==",
"3.7"
]
]
},
{
"name": "MarkupSafe",
"specs": [
[
"==",
"3.0.2"
]
]
},
{
"name": "minio",
"specs": [
[
"==",
"7.2.12"
]
]
},
{
"name": "multidict",
"specs": [
[
"==",
"6.1.0"
]
]
},
{
"name": "panflute",
"specs": [
[
"==",
"2.3.1"
]
]
},
{
"name": "pathspec",
"specs": [
[
"==",
"0.12.1"
]
]
},
{
"name": "pathvalidate",
"specs": [
[
"==",
"3.2.1"
]
]
},
{
"name": "pillow",
"specs": [
[
"==",
"11.0.0"
]
]
},
{
"name": "propcache",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "psycopg",
"specs": [
[
"==",
"3.2.3"
]
]
},
{
"name": "psycopg-binary",
"specs": [
[
"==",
"3.2.3"
]
]
},
{
"name": "pycparser",
"specs": [
[
"==",
"2.22"
]
]
},
{
"name": "pycryptodome",
"specs": [
[
"==",
"3.21.0"
]
]
},
{
"name": "pydyf",
"specs": [
[
"==",
"0.10.0"
]
]
},
{
"name": "pyparsing",
"specs": [
[
"==",
"3.2.0"
]
]
},
{
"name": "pyphen",
"specs": [
[
"==",
"0.17.0"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.9.0.post0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "python-slugify",
"specs": [
[
"==",
"8.0.4"
]
]
},
{
"name": "PyYAML",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "rdflib",
"specs": [
[
"==",
"7.1.1"
]
]
},
{
"name": "rdflib-jsonld",
"specs": [
[
"==",
"0.6.2"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.3"
]
]
},
{
"name": "s3transfer",
"specs": [
[
"==",
"0.10.4"
]
]
},
{
"name": "sentry-sdk",
"specs": [
[
"==",
"2.19.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
"==",
"75.6.0"
]
]
},
{
"name": "six",
"specs": [
[
"==",
"1.16.0"
]
]
},
{
"name": "sniffio",
"specs": [
[
"==",
"1.3.1"
]
]
},
{
"name": "tenacity",
"specs": [
[
"==",
"9.0.0"
]
]
},
{
"name": "text-unidecode",
"specs": [
[
"==",
"1.3"
]
]
},
{
"name": "tinycss2",
"specs": [
[
"==",
"1.4.0"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"==",
"4.12.2"
]
]
},
{
"name": "tzdata",
"specs": [
[
"==",
"2024.2"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"2.2.3"
]
]
},
{
"name": "watchfiles",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "weasyprint",
"specs": [
[
"==",
"60.2"
]
]
},
{
"name": "webencodings",
"specs": [
[
"==",
"0.5.1"
]
]
},
{
"name": "wheel",
"specs": [
[
"==",
"0.45.1"
]
]
},
{
"name": "XlsxWriter",
"specs": [
[
"==",
"3.2.0"
]
]
},
{
"name": "yarl",
"specs": [
[
"==",
"1.18.0"
]
]
},
{
"name": "zopfli",
"specs": [
[
"==",
"0.2.3.post1"
]
]
}
],
"lcname": "dsw-tdk"
}