Skip to content

Improve docstrings for Tool and ToolSpec#1582

Closed
Copilot wants to merge 2 commits intomainfrom
copilot/improve-docstrings-tool-toolspec
Closed

Improve docstrings for Tool and ToolSpec#1582
Copilot wants to merge 2 commits intomainfrom
copilot/improve-docstrings-tool-toolspec

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 27, 2026

The distinction between ToolSpec and Tool was undocumented, leading to confusion about where new methods belong.

Changes

  • Class docstrings on ToolSpec and Tool: ToolSpec = factual, non-opinionated, stable specification of a third-party tool. Tool = opinionated, heuristic operations with side-effects (adding/removing config, detecting usage, presenting instructions). Potentially less stable.
  • Module docstrings in spec.py and base.py updated to reflect this framing.
  • rule_config docstring clarified — previously described as "static, opinionated" which was misleading in a ToolSpec context. Now notes the rule choices are opinionated by usethis, but the specification itself is factual metadata.
  • Borderline method annotations: is_config_present() and how_to_use_pre_commit_hook_id() are read-only queries that could arguably live in ToolSpec — added docstring notes explaining why they're placed in Tool (primarily consumed by Tool's mutating operations).

Method placement analysis

All current methods are appropriately placed. No methods need to move. The two borderline cases (is_config_present, how_to_use_pre_commit_hook_id) are documented with rationale for their current placement in Tool.


⚡ Quickly spin up Copilot coding agent tasks from anywhere on your macOS or Windows machine with Raycast.

Add class-level docstrings clarifying the key distinction:
- ToolSpec: factual, non-opinionated, stable specification of a tool
- Tool: opinionated, heuristic, pragmatic operations with side-effects

Also update module-level docstrings, clarify the rule_config docstring,
and add notes on borderline methods (is_config_present,
how_to_use_pre_commit_hook_id) that could arguably live in ToolSpec.

Agent-Logs-Url: https://github.com/usethis-python/usethis-python/sessions/c531fdc1-bb25-4d66-a6fd-4d71b150e9f8

Co-authored-by: nathanjmcdougall <18602289+nathanjmcdougall@users.noreply.github.com>
Copilot AI changed the title [WIP] Update docstrings for Tool and ToolSpec to clarify distinctions Improve docstrings for Tool and ToolSpec Mar 27, 2026
Copilot AI requested a review from nathanjmcdougall March 27, 2026 05:03
@nathanjmcdougall
Copy link
Copy Markdown
Collaborator

Hmmm this is quite useful but shows my thinking is still muddled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve docstrings for Tool and ToolSpec

2 participants