← Back to issue list

Create an inner class for LXD variables

View original Github issue

Metadata

Project
craft-providers
Number
#792
Type
issue
State
open
Author
bepri
Labels
Type: Enhancement
Created
Updated
Closed
—

Current evaluation

Maintainer-filed enhancement to group LXD launcher variables into an inner class/dataclass to shrink launch()'s long parameter lists; still open, approach under discussion.

Suggested action: keep open

Reason: The code still exhibits the exact problem described: craft_providers/lxd/launcher.py:713 `launch()` and :379 `_launch_existing_instance()` both carry `# noqa: PLR0913, too many arguments`, and `_create_instance()` takes 13 keyword arguments passed through from `launch()` twice. The issue is labeled 'Type: Enhancement', authored by a maintainer, and has an active maintainer comment from @cmatsuoka (2026-08-28) proposing an alternative 'launcher context dataclass instead of using a wrapper class', so it is triaged and valid, not stale. Git log for launcher.py shows no commit implementing it (noqas are still present), so it is not resolved. It cannot be closed, but actionability is only moderate because the two design options (inner class vs dataclass) remain undecided and the internal helpers are heavily mocked in tests/unit/lxd/test_launcher.py, so signature changes ripple into the test suite.

Evaluated by: mr-cal-bot

Impact: 28 Quick Win: 8 Complexity: 48 Confidence: 76 Actionability: 58

Issue body

### What needs to get done An inner class to store some of the nitty-gritty LXD variables should be made in the `lxd` module. ### Why it needs to get done A few methods (in particular, `craft_providers/lxd/launcher.py:launch`) have enormous parameter lists. A wrapper class to store a lot of the related variables and reduce the number of parameters passed around between internal function calls would improve code clarity.

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 28
Quick Win: 8
Complexity: 48
Confidence: 76
Actionability: 58
keep open Maintainer-filed enhancement to group LXD launcher variables into an inner class/dataclass to shrink launch()'s long parameter lists; still open, approach under discussion.
stealth/space-bunny-alpha
Impact: 27
Quick Win: 9
Complexity: 46
Confidence: 76
Actionability: 61
keep open Maintainer-proposed LXD refactor to group launcher-related variables in an inner class or context dataclass, reducing long parameter lists; implementation approach remains under discussion.
qwen3.6-35b-a3b-mtp-q6
Impact: 50
Quick Win: 32
Staleness: 65
Complexity: 35
Confidence: 70
Support Request: 0
keep open Enhancement to create an inner class or dataclass for LXD variables to reduce parameter lists in launcher.py methods
qwen/qwen3.8-27b
Impact: 25
Quick Win: 14
Staleness: 5
Complexity: 45
Confidence: 85
Support Request: 0
keep open Enhancement to add an inner class (or launcher context dataclass) in the lxd module to consolidate the huge parameter lists of launcher.launch() and related internal calls. Still unimplemented; recent maintainer comment proposes a dataclass approach.
qwen/qwen3.6-35b-a3b
Staleness: 90
Complexity: 25
Confidence: 85
Support Request: 0
needs triage Enhancement to group LXD variables into an inner class in the lxd module, reducing large parameter lists in internal methods. Unassigned, no maintainer comments, inactive for over a year.
qwen3.6-35b-a3b-mtp-q6
Staleness: 90
Complexity: 20
Confidence: 80
Support Request: 0
needs triage Refactoring task to group LXD-related variables into an inner class to reduce parameter lists in internal methods. Unassigned, no maintainer comments, and inactive for over a year.

Update history

Date Change
updated

Related work

  • Related To: craft-providers#802 (confidence 30%)

    Commit d9eae71 'style: add typing and remove noqas (#802)' touched the same launcher functions but only for typing/lint cleanup; it did not introduce a context class or reduce parameter lists.

Related issues

No related issues found above the similarity threshold.