Skip to content

Teach the pacboy mapping pyTooling's 'cli' extra - #267

Merged
Paebbels merged 1 commit into
devfrom
claude/pytooling-cli-extra
Sep 21, 2026
Merged

Paebbels merged 1 commit into
devfrom
claude/pytooling-cli-extra

Conversation

@pytooling-claude

Copy link
Copy Markdown

pyTooling gains a cli extra (pyTooling#426) holding what the
pyTooling program needs at runtime: colorama, because the program is a TerminalApplication, and
matplotlib, because --gantt draws with it. Without a rewrite rule here, a consumer writing pyTooling[cli]
in its requirements sends the MinGW64 and UCRT64 jobs off to build matplotlib from source, which fails.

Changes

  • ComputePacboyPackages: subPackages["pytooling"] gains "cli": "python-matplotlib:p".

    Only matplotlib is rewritten. cli installs the dependencies of diagram and terminal, and only the first
    of those has compiled code — colorama is pure Python and installs from PyPI on MSYS2 unaided, which is why
    terminal has no entry of its own either. The comment below the dictionary says so.

    "pytooling": {
      "cli":               "python-matplotlib:p",   # 'cli' is 'diagram' + 'terminal'
      "diagram":           "python-matplotlib:p",
      "pypi":              "python-aiohttp:p",
      "sphinx":            "python-markupsafe:p",
      "yaml":              "python-ruamel-yaml:p python-ruamel.yaml.clib:p",
    },

Checked by running the action's own dictionaries and regular expression against a few dependency lines, so the
test reads the file rather than a copy of it:

Dependency Rewrites to
pyTooling[cli] >= 10.0 python-matplotlib:p
pyTooling[cli,yaml] >= 10.0 python-matplotlib:p, python-ruamel-yaml:p python-ruamel.yaml.clib:p
pyTooling[terminal] ~= 10.0 (nothing, as before)
matplotlib >= 3.10 python-matplotlib:p

Known Issues

  • tests/pacman_packages.py holds an older, partial copy of both dictionaries — under pytooling it has only
    yaml, missing diagram, pypi and sphinx. No workflow runs it, so it is left alone here; bringing it into
    sync, or deleting it in favour of a check that reads action.yml, is a separate job.

Related Issues and Pull-Requests

  • Needed by pyTooling#426, which adds the extra and the
    application tests that found the gap.

pyTooling gains a 'cli' extra installing what the 'pyTooling' program needs at runtime: colorama, because the
program is a TerminalApplication, and matplotlib, because '--gantt' draws with it. A consumer writing
'pyTooling[cli]' in its requirements gets no MSYS2 rewrite today, so the MinGW64 and UCRT64 jobs would try to
build matplotlib from source and fail.

'cli' rewrites to 'python-matplotlib:p' alone: it installs the dependencies of 'diagram' and 'terminal', and
only the first of those has compiled code - which is the same reason 'terminal' needs no entry of its own.

'tests/pacman_packages.py' is left alone. It holds an older, partial copy of both dictionaries - no 'diagram',
no 'pypi', no 'sphinx' under 'pytooling' - no workflow runs it, and bringing it into sync is a separate job.

Co-Authored-By: Patrick Lehmann <Paebbels@gmail.com>
@codecov

codecov Bot commented Sep 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.22%. Comparing base (4b1ca13) to head (68f54ed).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##              dev     #267   +/-   ##
=======================================
  Coverage   82.22%   82.22%           
=======================================
  Files           1        1           
  Lines          45       45           
  Branches        9        9           
=======================================
  Hits           37       37           
  Misses          4        4           
  Partials        4        4           
Flag Coverage Δ
unittests 82.22% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@codacy-production

codacy-production Bot commented Sep 21, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Coverage ∅ diff coverage · +0.00% coverage variation

Metric Results
Coverage variation +0.00% coverage variation
Diff coverage diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (4b1ca13) 45 41 91.11%
Head commit (68f54ed) 45 (+0) 41 (+0) 91.11% (+0.00%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#267) 0 0 ∅ (not applicable)

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@Paebbels
Paebbels merged commit cee1b3b into dev Sep 21, 2026
171 of 175 checks passed
@Paebbels
Paebbels deleted the claude/pytooling-cli-extra branch September 21, 2026 16:03
@pytooling-claude pytooling-claude Bot mentioned this pull request Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants