Skip to content

0.21.0

Latest

Choose a tag to compare

@nathanjmcdougall nathanjmcdougall released this 02 Apr 03:15
· 73 commits to main since this release
Immutable release. Only release title and notes can be modified.
3276453

🚀 New Features

  • There is now support for the Poetry backend in usethis. Access it via the --backend=poetry option for applicable commands.
  • Tools which add formatters (usethis format, usethis tool pyproject-fmt, and usethis tool ruff) will now automatically apply the formatter to the project when added.
  • There is now a usethis tool tach command to add the Tach architecture tool to the project.
  • usethis tool commands now support a --no-hook flag to opt out of modifying git hook configuration (e.g. in .pre-commit-config.yaml) when managing the tool.
  • usethis show commands now support an --output-file option to write the output to a file instead of printing it to the console.
  • There is now a usethis show license command to show the license of the current project.
  • There is now a usethis badge bitbucket command to add a badge for Bitbucket usage to the README.
  • usethis tool pytest and usethis test will now automatically add an example test file. This helps ensure that pytest will run out-of-the-box without emitting a non-zero error code.

🐞 Bug Fixes

  • In some cases, when usethis modified TOML files, comments would be stripped from multi-line lists. This has been fixed.
  • Out-of-schema entries in .pre-commit-config.yaml files will no longer result in errors when being handled by usethis. This is especially useful for prek users, since prek extends .pre-commit-config.yaml with support for additional configuration options which are not found in the standard pre-commit schema.

🦾 Robustness

  • Hard-wrapping is now disabled for CLI outputs.
  • The usethis tool requirements.txt command now uses a more standard URI-based pre-commit hook for exporting (using the astral-sh/uv-pre-commit repo) instead of a local system hook.
  • Default code coverage configuration now excludes the pattern msg = ["'] associated with writing error messages outside the error class (see the EM101 Ruff rule).
  • The heuristic for detecting uv usage will now check whether uv is declared as a dependency (including as a dev dependency) in pyproject.toml when the file exists, in addition to the previous heuristics. This should help reduce false positives for projects which use other tools but have pyproject.toml files with no uv configuration.
  • There is improved handling of pre-commit configuration validation for when the hook ID is null.

📚 Documentation

  • The usethis show sonarqube command is now documented explicitly in the CLI reference section of the documentation site.
  • The concept of backends is now expounded on the documentation site.
  • All modules now have module docstrings.
  • The project description and keywords have been updated to reflect the current state of the project. The license Trove classifier has been removed since Trove classifiers for licenses are no longer recommended.
  • The FAQ page has been re-structured.
  • The pipeweld utility now has more comprehensive docstrings.
  • The FileManager and files_manager objects now have more detailed docstrings.

📦 Packaging

  • The identify package is a new dependency to provide support for the usethis show license command.

🔧 Internal Changes

  • There is improved type compliance, especially for the implementation of the file management system.
  • Ruff configuration now resides in ruff.toml for development.
  • There is now a PreCommitConfig.from_system_hook method to simplify the specification of pre-commit hook configuration for the various tools.
  • Agent configuration and bespoke prek hooks continue to be developed.

What's Changed

  • Add requests to the dev dep bump workflow by @Copilot in #1548
  • Create skills registry in AGENTS.md with validation hook by @Copilot in #1532
  • Bump requests for development by @github-actions[bot] in #1552
  • Add usethis-cli-modify agent skill by @Copilot in #1555
  • 1556 add config for external agent skills by @nathanjmcdougall in #1557
  • Validate lockfile remains unchanged during copilot setup, add npm cac… by @nathanjmcdougall in #1560
  • Document usethis show sonarqube more thoroughly by @Copilot in #1562
  • Add the vercel-labs/skills/skills/find-skills skill by @nathanjmcdougall in #1569
  • Try and capture lessons + skill tweaks automatically via AGENTS.md by @nathanjmcdougall in #1571
  • Document the npx skills option --skill by @nathanjmcdougall in #1570
  • Add concise documentation guidance to usethis-cli-modify skill by @Copilot in #1578
  • Add --output-file option to usethis show commands by @Copilot in #1565
  • Add --no-hook flag to all usethis tool subcommands by @Copilot in #1558
  • Add module docstrings and set up automated export of docs/module-tree.txt. by @nathanjmcdougall in #1579
  • Clarify that files modified in prek runs are still failures by @Copilot in #1580
  • Add sync framework for inheriting content into AGENTS.md by @Copilot in #1581
  • Test markdown validity after usethis badge calls by @Copilot in #1584
  • Move test suite structure expectations into a prek hook by @Copilot in #1583
  • Enable reportAssignmentType in basedpyright by @nathanjmcdougall in #1585
  • Enable reportMissingParameterType in basedpyright by @nathanjmcdougall in #1586
  • Introduce covariant DocumentProtocol to enable `reportMissingTypeAr… by @nathanjmcdougall in #1588
  • Add usethis badge bitbucket command by @Copilot in #1590
  • Move Ruff configuration from pyproject.toml to ruff.toml by @Copilot in #1592
  • Use URI repo for uv-pre-commit hook in requirements.txt tool by @Copilot in #1589
  • Add msg = ["'] to coverage.py exclude_also patterns by @Copilot in #1593
  • Deduplicate test_latest_version tests via parametrize by @Copilot in #1596
  • Emphasize static checks must run for all changes including small follow-ups by @Copilot in #1604
  • Put more emphasis on reporting skills usage etc. by moving module-tre… by @nathanjmcdougall in #1613
  • Agent config: emphasize writing tests with full coverage by @Copilot in #1612
  • Add usethis-github-issue-create agent skill by @Copilot in #1610
  • Rename usethis-test-with-coverage to usethis-python-test-full-coverage by @Copilot in #1620
  • Agent config: Record lessons as GitHub issues instead of directly editing skills by @Copilot in #1618
  • Add agent instruction to reference issue IDs in PR descriptions by @Copilot in #1615
  • Run static checks workflow for doc-only changes by @Copilot in #1617
  • Add PreCommitConfig.from_system_hook() to deduplicate backend dispatch in tool specs by @Copilot in #1606
  • Fix TOML comment stripping in extend_list and remove_from_list by @Copilot in #1591
  • Add YAGNI for function parameters to usethis-python-functions skill by @Copilot in #1622
  • Add layer-awareness guidance to test-affected-find skill by @Copilot in #1623
  • Add function placement principles to usethis-python-code skill by @Copilot in #1629
  • Bump pygments for development by @github-actions[bot] in #1631
  • Add guidance on keeping skill descriptions general by @Copilot in #1635
  • Add global config pass-through avoidance guidance to function design skill by @Copilot in #1638
  • Add usethis-agents skill with auto-generated skills directory by @Copilot in #1630
  • Add function reference to AGENTS.md with auto-generated docs/functions.txt by @Copilot in #1624
  • Remove spacing between bullet points in changelog by @nathanjmcdougall in #1640
  • Add dedicated documentation page explaining the concept of backends by @Copilot in #1597
  • ci: skip CI tests on CHANGELOG.md changes by @Copilot in #1642
  • Add multi-layer testing principle to test-full-coverage agent skill by @Copilot in #1644
  • Document the need to sync OTHER_TOOLS and ALL_TOOLS by @nathanjmcdougall in #1648
  • Update the project description and keywords by @nathanjmcdougall in #1649
  • Check whether uv is a dep or dev dep as part of its availability heuristic by @Copilot in #1594
  • Fix doc rot in functions export by @Copilot in #1661
  • Add type annotations and handle an edge case for hook IDs which are N… by @nathanjmcdougall in #1667
  • Add single-backtick convention for docstring code references to agent skill by @Copilot in #1665
  • Emphasize static checks are required for all changes, including doc-only by @Copilot in #1669
  • Add static checks reminder to usethis-agents skill by @Copilot in #1671
  • Add usethis show license command by @Copilot in #1663
  • Remove license trove classifier by @nathanjmcdougall in #1673
  • Instruct agents to fix all static check failures, including pre-existing ones by @Copilot in #1659
  • Reorder FAQ page by importance by @Copilot in #1657
  • Add docstrings to pipeweld objects and functions by @Copilot in #1654
  • Disable hard-wrapping for all console print functions by @Copilot in #1656
  • Simplify style in export-functions hook config by @nathanjmcdougall in #1677
  • Skip test_bad_commit online variant on CI by @Copilot in #1676
  • Generalize check-test-skeleton hook with --source-dir and --tests-dir CLI args by @Copilot in #1679
  • Generalize check-skills-documented to accept --prefix as a CLI arg by @Copilot in #1681
  • Skip CI tests workflow for hooks-only changes by @Copilot in #1684
  • Add cross-referencing guidance to skills-create skill by @Copilot in #1696
  • ci: exclude docs/**/*.txt from CI test triggers by @Copilot in #1693
  • Add usethis-cli-dogfood agent skill by @Copilot in #1691
  • Move ruff format into its own prek priority group by @Copilot in #1698
  • Add skill scope-checking guidance to prevent misplaced content by @Copilot in #1706
  • Update agent skills to emphasize the need to use the QA static checks… by @nathanjmcdougall in #1707
  • Fix KeyError in fancy_model_dump for pydantic models with extra fields by @Copilot in #1689
  • Add test class organization guidelines to agent skills by @Copilot in #1685
  • Install prek hooks in copilot-setup-steps workflow by @Copilot in #1703
  • Don't trigger ci.yml on changes to other workflow config by @Copilot in #1709
  • Add check-banned-words hook to enforce generic hook scripts by @Copilot in #1687
  • Add agent skill guidance on avoiding deep attribute nesting across layers by @Copilot in #1712
  • Add usethis-cli-user-test agent skill by @Copilot in #1716
  • Add agent guidance on prek exit codes and output truncation by @Copilot in #1718
  • Add apply() method to Tool for running formatters on use by @Copilot in #1714
  • Document files_manager deferred-write semantics and subprocess implications by @Copilot in #1720
  • Return exit code 1 from export hooks when files are modified by @Copilot in #1725
  • Add check-list-referenced hook to keep README tool commands in sync by @Copilot in #1722
  • Implement autofix for the doc sync hook by @Copilot in #1727
  • Strengthen usethis-cli-user-test skill to forbid deviating from the happy path by @Copilot in #1732
  • Create example test file when adding pytest, with --no-example opt-out by @Copilot in #1723
  • Enforce README syncing with docs dir via Jinja2 template and hook by @Copilot in #1730
  • Clarify what belongs in AGENTS.md vs. agent skills by @Copilot in #1737
  • Guide agents to prefer general skills over narrow stub skills by @Copilot in #1741
  • Add agent guidance to avoid placing new files at repo root by @Copilot in #1735
  • Emphasize the need to use usethis-skills-modify when editing skill files by @Copilot in #1743
  • Implement usethis tool tach for architecture enforcement by @Copilot in #1639
  • Fix typo: tool.uv.environmenttool.uv.environments by @Copilot in #1745
  • Add guidance to avoid prescriptive language in skill descriptions by @Copilot in #1747
  • Use pipeweld to insert pre-commit hooks by @Copilot in #1595
  • Rename _HOOK_ORDER to HOOK_GROUPS as list of lists by @Copilot in #1749
  • Add parameterized test for adding & running each tool by @Copilot in #1652
  • Add support for the poetry backend by @Copilot in #1601
  • Update prek hook skill to emphasize generalization over project-specific logic by @Copilot in #1752
  • Enforce step-down rule for hook scripts by @Copilot in #1750
  • Rename ci.yml to test.yml in GitHub Actions config by @Copilot in #1751
  • Add set up Python step for codspeed config by @nathanjmcdougall in #1551
  • Respect system newline ending for hooks by @Copilot in #1753
  • Add .pre-commit-config.yaml to paths-ignore in CI workflows by @Copilot in #1754
  • Add check-priority-monotone hook and fix priority ordering by @Copilot in #1755
  • Add poetry to bump-dev-dep workflow options by @Copilot in #1758
  • Add changelog for v0.21.0 by @nathanjmcdougall in #1767

Full Changelog: v0.20.0...v0.21.0