Package a WDL and its imports into a zip file.
Project description
Package a WDL and its imports into a zip file.
The zip file can be used as a valid imports zip for cromwell. It can also be used to archive your workflow.
Wdl-packager can create zip packages that are binary reproducible when used with the --reproducible flag. It can also include additional files such as licenses, READMEs and example configuration files. This makes it ideal for distributing WDL workflows as packages.
Wdl-packager currently only supports file based imports.
Usage
usage: wdl-packager [-h] [-o OUTPUT] [-a ADDITIONAL_FILES]
[--use-git-version-name] [--use-git-commit-timestamp]
[--reproducible] [--version]
WDL_FILE
positional arguments:
WDL_FILE The WDL file that will be packaged.
optional arguments:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
The output zip file. By default uses the name of the
input. This overrides the git name option.
-a ADDITIONAL_FILES, --additional-file ADDITIONAL_FILES
Additional files to be included in the zip. Additional
files will be added according to their relative
position to the WDL file. If that is not possible they
will be added to the base of the zip. Multiple '-a'
flags can be used.
--use-git-version-name
Use git describe to determine the name of the zip.
--use-git-commit-timestamp
Use the git commit timestamp to timestamp all the
files in the zip.
--reproducible shorthand for --use-git-version-name and --use-git-
commit-timestamp
--version show program's version number and exit
Reproducibility
The internal process to create a reproducible package is as follows:
It checks each file with git log --n1 --pretty=%at to get the unix timestamp of the latest commit that affected that file.
Each file is then copied to a temporary directory where the last modified time is changed to the unix timestamp found in the first step.
The list of files is then sorted by their destination path in the zip. The sorting ensures that the files will always be added in the same order.
The timezone of the process is changed to UTC, as the timezone affects the timestamp of the files in the zip archive.
The files are added to the zip package in sorted order.
The name for a reproducible package consists of
The WDL file basename without .wdl.
A version description by git describe --always.
A .zip extension.
Known issues
Old versions of Cromwell contain a bug that causes a crash when opening zip files with nested directories. This was fixed in cromwell version 49.
http:// imports are currently not supported. Wdl-packager could be an ideal tool to fetch WDLs from the web and package their imports in such a way that they can be used locally. Unfortunately this requires rewriting the import paths inside the WDL files before they are packaged. This is non-trivial to implement and it may have unintentioned side effects.
When packaging reproducibly the timezone of the python process needs to be changed to ‘UTC’. Otherwise the last modified times in the zip will differ for each timezone. This will affect all code run in the same process. This does not matter for wdl-packager itself, but it does matter for programs that use wdl_packager as a library. Not using use_git_timestamps circumvents this problem.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file wdl-packager-1.0.0.tar.gz
.
File metadata
- Download URL: wdl-packager-1.0.0.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cf66b5dc5ad345874e29e39dc3ad9ac618b8a9b6ab88c8dee1e4cf174d8afe6 |
|
MD5 | 29e3529c8557d910355e5482bbec1d8d |
|
BLAKE2b-256 | d5ec09ba811aba78770cc9ebdb24064e87aa80104154dc98b6ab71bd64393d6a |
File details
Details for the file wdl_packager-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: wdl_packager-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f5f0f805683b6671c9dfda5a91febd369d1a834960fe553528ef83b85dd7e6d |
|
MD5 | 0a492559ca7a33f746a7dc8f235d0019 |
|
BLAKE2b-256 | 830ca0f052b45fc1483fa47094a3b1ef12fb8db3b12a3e18e0b71a7e8ce42cbe |