← Back to issue list

Reduce the scope of the public API

View original Github issue

Metadata

Project
craft-parts
Number
#777
Type
issue
State
open
Author
lengau
Labels
Created
Updated
Closed

Current evaluation

Maintainer-filed refactor to shrink craft-parts' public API by making module files private (underscore prefix) and exporting only relevant names via __all__. No comments or labels; __all__ exists in several packages but module files are still public, so work is incomplete.

Suggested action: needs triage

Reason: The issue has no labels, no comments, and no maintainer response in 780 days, so it has never been triaged. It is not stale-closeable because the core work is still unaddressed: craft_parts/__init__.py still does `from .actions import ...` (public module), and no commit renamed module files to underscore-prefixed names. PR #142 (commit 7dbb5778, 'api: add missing typed marker and declare public api names') only partially overlaps by adding __all__ entries, so the issue remains valid but needs a maintainer decision on whether to pursue this breaking refactor.

Impact: 50 Quick Win: 12.5 Staleness: 72 Complexity: 75 Confidence: 70 Support Request: 0

Issue body

### What needs to get done Make all final module files private (prefix with underscore) and make only the relevant items public using `__all__` entries in various `__init__.py` files. ### Why it needs to get done As more people use craft-parts, limiting the public API makes it easier to determine what are breaking changes.

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.8-27b
Impact: 50
Quick Win: 12.5
Staleness: 72
Complexity: 75
Confidence: 70
Support Request: 0
needs triage Maintainer-filed refactor to shrink craft-parts' public API by making module files private (underscore prefix) and exporting only relevant names via __all__. No comments or labels; __all__ exists in several packages but module files are still public, so work is incomplete.
qwen/qwen3.6-35b-a3b
Staleness: 90
Complexity: 35
Confidence: 80
Support Request: 10
needs triage Proposal to restrict the public API by prefixing internal modules with underscores and defining __all__ in __init__.py files. Untriaged, no maintainer comments, inactive for over two years.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 40
Confidence: 75
Support Request: 5
needs triage Refactor module visibility by prefixing files with underscores and defining __all__ in __init__.py to limit the public API. Unlabelled and inactive for over a year, awaiting maintainer assessment.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 20
Confidence: 70
Support Request: 0
needs triage Restrict the public API by prefixing module files with underscores and using __all__ in __init__.py. This clarifies breaking changes as the library grows. Open, no comments, needs triage and assignment.

Update history

No update history recorded yet.

Related work

  • Related To: canonical/craft-parts#142 (confidence 75%)

    PR #142 added py.typed and declared public API names via __all__ in several __init__.py files, partially addressing the 'make only relevant items public' half of this issue, but did not rename module files to be private.

Related issues

No related issues found above the similarity threshold.