id = "dxpy"
name = "dxpy"
homepage = "https://github.com/dnanexus/dx-toolkit"
description = "DNAnexus toolkit utilities and platform API bindings for Python"
executables = ["dx"]
[dotfiles]
paths = []
secret = ["~/.dnanexus_config/environment.json"]
[commands]
format = 1
label = "DNAnexus dx"
description = "Upload local files to a DNAnexus project and download data objects. All other dx commands (run, describe, build and so on) are not covered."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://documentation.dnanexus.com/user/helpstrings-of-sdk-command-line-utilities"
revision = "2026-10-27"
evidence = """
usage: dx upload [-h] ...
usage: dx download [-h] ...
"""
[[commands.subcommand]]
path = ["upload"]
label = "Upload files"
description = "Upload local files or directories to the current DNAnexus project and folder."
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://documentation.dnanexus.com/user/helpstrings-of-sdk-command-line-utilities"
revision = "2026-10-27"
evidence = """
usage: dx upload [-h] [--visibility {hidden,visible}] [--property KEY=VALUE]
[--type TYPE] [--tag TAG] [--details DETAILS] [-p] [--brief |
--verbose] [--env-help] [--path [PATH]] [-r] [--wait]
[--no-progress] [--buffer-size WRITE_BUFFER_SIZE]
[--singlethread]
filename [filename ...]
filename Local file or directory to upload ("-" indicates stdin
--path, --destination [PATH]
DNAnexus path to upload file(s) to (default uses
-r, --recursive Upload directories recursively
--wait Wait until the file has finished closing
--no-progress Do not show a progress bar
--tag TAG Tag of the data object; repeat as necessary
--type TYPE Type of the data object; repeat as necessary
-p, --parents Create any parent folders necessary
"""
[[commands.subcommand.field]]
id = "filename"
label = "Local files or directories"
type = "path"
position = 0
multiple = true
min = 1
path = { kind = "any", role = "input", must_exist = true }
sources = ["help"]
[[commands.subcommand.field]]
id = "path"
label = "Destination path"
description = "DNAnexus path. A trailing slash means a folder; otherwise it is the final name."
type = "string"
option = ["--path", "--destination"]
sources = ["help"]
[[commands.subcommand.field]]
id = "recursive"
label = "Upload directories recursively"
type = "boolean"
option = ["--recursive", "-r"]
sources = ["help"]
[[commands.subcommand.field]]
id = "parents"
label = "Create parent folders"
type = "boolean"
option = ["--parents", "-p"]
sources = ["help"]
[[commands.subcommand.field]]
id = "tag"
label = "Tag"
type = "string"
option = ["--tag"]
multiple = true
sources = ["help"]
[[commands.subcommand.field]]
id = "type"
label = "Object type"
type = "string"
option = ["--type"]
multiple = true
sources = ["help"]
[[commands.subcommand.field]]
id = "wait"
label = "Wait until closed"
type = "boolean"
option = ["--wait"]
sources = ["help"]
[[commands.subcommand.field]]
id = "no_progress"
label = "No progress bar"
type = "boolean"
option = ["--no-progress"]
sources = ["help"]
[[commands.subcommand.task]]
id = "upload"
label = "Upload files"
fields = ["filename", "path"]
required = ["filename"]
[[commands.subcommand.task]]
id = "upload_dir"
label = "Upload a directory"
fields = ["filename", "recursive", "path"]
required = ["filename", "recursive"]
set = { recursive = [true] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["filename", "path", "recursive", "parents"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["tag", "type", "wait", "no_progress"]
[[commands.subcommand]]
path = ["download"]
label = "Download data"
description = "Download files or folders from DNAnexus to the local machine."
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://documentation.dnanexus.com/user/helpstrings-of-sdk-command-line-utilities"
revision = "2026-10-27"
evidence = """
usage: dx download [-h] [--env-help] [-o OUTPUT] [-f] [-r] [-a]
[--no-progress] [--lightweight]
path [path ...]
path Data object ID or name, or folder to download
-o, --output OUTPUT Local filename or directory to be used ("-" indicates
-f, --overwrite Resume an interupted download if the local and remote
-r, --recursive Download folders recursively
-a, --all If multiple objects match the input, download all of
--no-progress Do not show a progress bar
"""
[[commands.subcommand.field]]
id = "path"
label = "Objects or folders"
description = "Data object IDs or names, or folders."
type = "string"
position = 0
multiple = true
min = 1
sources = ["help"]
[[commands.subcommand.field]]
id = "output"
label = "Local output"
description = "Local filename or directory. Defaults to the object's name on the platform."
type = "path"
option = ["--output", "-o"]
path = { kind = "any", role = "output", must_exist = false }
sources = ["help"]
[[commands.subcommand.field]]
id = "overwrite"
label = "Overwrite local file"
description = "Resume an interrupted download if signatures match; otherwise overwrite the local file."
type = "boolean"
option = ["--overwrite", "-f"]
effect = "overwrite"
sources = ["help"]
[[commands.subcommand.field]]
id = "recursive"
label = "Download folders recursively"
type = "boolean"
option = ["--recursive", "-r"]
sources = ["help"]
[[commands.subcommand.field]]
id = "all"
label = "Download all matches"
type = "boolean"
option = ["--all", "-a"]
sources = ["help"]
[[commands.subcommand.field]]
id = "no_progress"
label = "No progress bar"
type = "boolean"
option = ["--no-progress"]
sources = ["help"]
[[commands.subcommand.task]]
id = "download"
label = "Download objects"
fields = ["path", "output"]
required = ["path"]
[[commands.subcommand.task]]
id = "download_folder"
label = "Download a folder"
fields = ["path", "recursive", "output"]
required = ["path", "recursive"]
set = { recursive = [true] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["path", "output", "recursive"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["overwrite", "all", "no_progress"]