From 06d53f691fca522d9baa19772d3dd70fd3722d3b Mon Sep 17 00:00:00 2001 From: Vinta Chen Date: Sun, 27 Sep 2026 09:13:28 +0800 Subject: [PATCH] docs: restore Build Tools guide's closing pointer to Package Management a942b13 dropped this as redundant with the header link, but readers who finish the guide below the table never see that header link and lose the pointer to Package Management entirely. Co-Authored-By: Claude --- website/data/category_intros/build-tools.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/data/category_intros/build-tools.md b/website/data/category_intros/build-tools.md index b8dab883..376a0fcb 100644 --- a/website/data/category_intros/build-tools.md +++ b/website/data/category_intros/build-tools.md @@ -14,3 +14,5 @@ Invoke turns your project's shell commands into Python tasks. [Write them in a ` Invoke can also [power your own CLI program](https://docs.pyinvoke.org/en/stable/concepts/library.html#reusing-invoke-s-cli-module-as-a-distinct-binary), with your tasks as its commands. It [sticks to local commands](https://www.pyinvoke.org/faq.html#why-was-invoke-split-off-from-the-fabric-project) and leaves servers and network commands to a separate library built on it. doit runs only what changed. [Tasks live in a `dodo.py`](https://pydoit.org/tasks.html#intro): each function whose name starts with `task_` returns a dict, and its [actions](https://pydoit.org/tasks.html#actions) are shell commands or Python functions. [List a task's `file_dep` and `targets`](https://pydoit.org/tasks.html#dependencies-targets), and doit skips it when its dependencies haven't changed and its targets exist. Inputs [don't have to be files](https://pydoit.org/dependencies.html#uptodate): an `uptodate` check such as `config_changed` reruns a task when a config string or dict changes. + +Looking for the tool that builds your package's wheels and publishes them to PyPI? That's packaging, covered in [Package Management](/categories/package-management/).