providers: refactor clean_project_environments
Metadata
Current evaluation
Merged a refactor to the craft-providers interface, removing get_instance_name() from clean_project_environments() and renaming is_provider_available() to is_provider_installed(). Aligns with rockcraft, passed CI, and increased coverage by 0.13%.
Suggested action: —
No scores available.
Issue body
- [X] Have you followed the [guidelines for contributing](https://github.com/snapcore/snapcraft/blob/master/CONTRIBUTING.md)?
- [X] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [X] Have you successfully run `make lint`?
- [X] Have you successfully run `pytest tests/unit`?
-----
Two changes to the `craft-providers()` interface:
1. Move the snapcraft-specific call `get_instance_name()` out of `clean_project_environments()`
2. Rename `is_provider_available()` to `is_provider_installed()`
These changes match what was done for [rockcraft](https://github.com/canonical/rockcraft/blob/5d7ed67646a10e5b35319c12d664df7b1e1a14b9/rockcraft/providers/_provider.py#L33).
(CRAFT-1396)
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged a refactor to the craft-providers interface, removing get_instance_name() from clean_project_environments() and renaming is_provider_available() to is_provider_installed(). Aligns with rockcraft, passed CI, and increased coverage by 0.13%. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged refactoring of clean_project_environments to extract get_instance_name() and rename is_provider_available() to is_provider_installed(), aligning with rockcraft. Successfully merged into main with 100% diff coverage and a 0.13% overall increase. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged into main. Refactored craft-providers by extracting get_instance_name() from clean_project_environments and renaming is_provider_available() to is_provider_installed(), aligning with rockcraft. Coverage increased by 0.13%. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #410 providers: introduce clean_project_environments() (CRAFT-314) | charmcraft | merged | Merged to introduce clean_project_environments(), providing an interface for an upcoming clean command that removes all environments for a given project. Approved by two reviewers, adding 106 lines across two files. | |
| #3932 providers: refactor `launched_environment()` | snapcraft | merged | Merged refactoring of launched_environment() to remove snapcraft-specific logic and align with rockcraft. Implemented standardized base translation for craft-providers. Approved and merged following successful CI checks. | |
| #3943 providers: use new craft-providers interface | snapcraft | merged | Merged to main. Replaced internal Provider classes with the craft-providers interface and consolidated the providers module. Approved after passing CI and spread tests. Coverage dropped 0.15% with 100% diff coverage; unrelated test failure tracked in PR #3944. | |
| #92 providers: refactor get_provider() | rockcraft | merged | Merged after approval and passing CI. Refactored and moved get_provider() from _get_provider.py to providers.py across seven files, reducing code by 25 lines. Resolves CRAFT-1375. | |
| #120 providers: use new craft-providers interface | rockcraft | merged | Merged after review and CI approval. Replaced custom Provider classes with the new craft-providers interface, relocated providers.py, and refactored 17 files. Reduced codebase by over 1200 lines, resolving CRAFT-1349. | |
| #899 providers: use new craft-providers interface | charmcraft | merged | Merged after replacing internal Provider classes with the new craft-providers interface. Refactored by moving providers.py to the package root, removing 1253 lines across 17 files. Resolved CRAFT-1279. | |
| #74 providers: move get_instance_name() to providers.py | rockcraft | merged | Merged after approval and passing CI. Moved the rockcraft-specific get_instance_name() function to providers.py, changing 8 files. Resolves CRAFT-1350. | |
| #110 providers: move lxd project name out of craft-providers interface | rockcraft | merged | Merged refactoring that moves rockcraft's project name from lxd.py to providers.py in the craft-providers interface. Approved by one reviewer, passed CI, and successfully integrated. | |
| #3434 build providers: clean environment if project directory is changed | snapcraft | merged | Merged into master. Fixes environment cleanup when project directories are relocated or reused. The build provider now tracks the directory path, verifies compatibility, and automatically cleans the environment on mismatch. Approved and passed CI. | |
| #24 requirements: update craft-providers | rockcraft | merged | Merged update to craft-providers 1.2.0, significantly improving warm-start performance for build instances. Approved by one reviewer, passed CI checks, and changed three files. |