id = "rye"
name = "Rye"
homepage = "https://rye.astral.sh/"
description = "Python project and toolchain manager"
executables = ["rye"]
platforms = ["macos", "linux", "windows"]
[dotfiles]
paths = [
"~/.rye/config.toml",
"%USERPROFILE%/.rye/config.toml",
]
secret = []
side_effect = false
[commands]
format = 1
label = "Rye"
description = "Sync a Rye project's virtualenv and add dependencies. Other rye subcommands and the less common sync/add switches are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["sync"]
label = "Sync the project"
description = "Update the lockfiles and install the dependencies into the virtualenv."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://rye.astral.sh/guide/commands/sync/"
revision = "2026-10-27"
evidence = """
* `-f, --force`: Force the virtualenv to be re-created
* `--no-dev`: Do not install dev dependencies
* `--no-lock`: Do not update the lockfile.
* `--update <UPDATE>`: Update a specific package
* `--update-all`: Update all packages to the latest
* `--pre`: Update to pre-release versions
* `--all-features`: Enables all features
* `-v, --verbose`: Enables verbose diagnostics
* `-q, --quiet`: Turns off all output
"""
[[commands.subcommand.field]]
id = "force"
label = "Re-create virtualenv"
type = "boolean"
option = ["--force", "-f"]
effect = "overwrite"
sources = ["docs"]
[[commands.subcommand.field]]
id = "no_dev"
label = "Skip dev dependencies"
type = "boolean"
option = ["--no-dev"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "no_lock"
label = "Do not update lockfile"
type = "boolean"
option = ["--no-lock"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "update"
label = "Update a package"
type = "string"
option = ["--update"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "update_all"
label = "Update all packages"
type = "boolean"
option = ["--update-all"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "pre"
label = "Allow pre-releases"
type = "boolean"
option = ["--pre"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "all_features"
label = "All features"
type = "boolean"
option = ["--all-features"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "sync"
label = "Sync"
fields = ["no_dev", "no_lock", "update_all", "verbose"]
[[commands.subcommand.task]]
id = "rebuild"
label = "Rebuild the virtualenv"
set = { force = [true] }
lock = ["force"]
fields = ["force", "no_dev", "verbose"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["no_dev", "no_lock", "update", "update_all", "force"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["pre", "all_features", "verbose"]
[[commands.subcommand]]
path = ["add"]
label = "Add a dependency"
description = "Add a Python package to this project's dependencies."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://rye.astral.sh/guide/commands/add/"
revision = "2026-10-27"
evidence = """
* `<REQUIREMENTS>...`: The package to add as PEP 508 requirement string. e.g. 'flask==2.2.3'
* `--git <GIT>`: Install the given package from this git repository
* `--path <PATH>`: Install the given package from this local path
* `--features <FEATURES>`: Adds a dependency with a specific feature
* `--dev`: Add this as dev dependency
* `--optional <OPTIONAL>`: Add this to an optional dependency group
* `--pre`: Include pre-releases when finding a package version
* `--sync`: Runs `sync` automatically even if auto-sync is disabled.
* `--no-sync`: Does not run `sync` automatically even if auto-sync is enabled.
"""
[[commands.subcommand.field]]
id = "requirements"
label = "Requirements"
description = "PEP 508 requirement strings, e.g. flask==2.2.3."
type = "string"
position = 0
multiple = true
min = 1
sources = ["docs"]
[[commands.subcommand.field]]
id = "dev"
label = "Dev dependency"
type = "boolean"
option = ["--dev"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "optional"
label = "Optional group"
type = "string"
option = ["--optional"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "features"
label = "Feature (extra)"
type = "string"
option = ["--features"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "git"
label = "Git repository"
type = "url"
option = ["--git"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "path"
label = "Local path"
type = "path"
option = ["--path"]
path = { kind = "directory", role = "input" }
sources = ["docs"]
[[commands.subcommand.field]]
id = "pre"
label = "Allow pre-releases"
type = "boolean"
option = ["--pre"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "sync"
label = "Sync afterwards"
type = "boolean"
option = ["--sync"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "add"
label = "Add a dependency"
fields = ["requirements", "features", "pre", "sync"]
required = ["requirements"]
[[commands.subcommand.task]]
id = "add-dev"
label = "Add a dev dependency"
set = { dev = [true] }
lock = ["dev"]
fields = ["requirements", "dev", "sync"]
required = ["requirements"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["requirements", "dev", "features", "sync"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["optional", "git", "path", "pre"]