← 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

Planned API cleanup remains open: internal modules are not consistently underscored, and eight __all__ declarations show the public surface is still being narrowed.

Suggested action: keep open

Reason: The maintainer-authored request remains a valid architectural goal: only eight __all__ declarations exist, most internal modules retain non-underscore names, and no resolution commit was found. It should stay open, but public/private classifications, compatibility strategy, import and documentation updates, and test coverage require planning.

Evaluated by: mr-cal-bot

Impact: 65 Quick Win: 5 Complexity: 85 Confidence: 78 Actionability: 55

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
stealth/space-bunny-alpha
Impact: 65
Quick Win: 5
Complexity: 85
Confidence: 78
Actionability: 55
keep open Planned API cleanup remains open: internal modules are not consistently underscored, and eight __all__ declarations show the public surface is still being narrowed.
qwen/qwen3.6-35b-a3b
Impact: 45
Quick Win: 9
Complexity: 65
Confidence: 70
Actionability: 60
needs triage Refactoring task to prefix internal modules with underscore and use __all__ to define public API. Open 801 days with no maintainer response or labels.
qwen/qwen3.8-27b
Impact: 50
Quick Win: 12
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.

Update history

No update history recorded yet.

Related issues

No related issues found above the similarity threshold.