Some multipass dev versions are considered invalid
Metadata
Current evaluation
Fixed by merged PR #662 (commit d7cfb80), which handles semver-style Multipass development versions by truncating invalid PEP 440 suffixes before comparison.
Resolution: closed resolved
Reason: The bug was fixed by merged PR canonical/craft-providers#662. Commit d7cfb80 added parsing support for Multipass development version strings such as 1.15.0-dev.2929.pr661.
Evaluated by: mr-cal-bot
No scores available.
Issue body
### Bug Description
See: https://github.com/canonical/charmcraft/issues/1917
Using `packaging.version.parse` to parse the multipass version `'1.15.0-dev.2929.pr661'` raises an `InvalidVersion`, which isn't caught and bubbles up.
We might be able to work around this by replacing hyphens with periods, turning semver strings into [pypa compliant](https://packaging.python.org/en/latest/specifications/version-specifiers/) versions. Otherwise, we could truncate at the first hyphen and attempt to use that, perhaps with a warning.
Regardless, we should catch the `InvalidVersion` error and replace it with something nicer.
### To Reproduce
Use that version of multipass on a mac
### part yaml
```shell
n/a
```
### Relevant log output
```shell
2024-09-24 19:00:16.880 Executing on host: multipass version
2024-09-24 19:00:16.926 charmcraft internal error: InvalidVersion("Invalid version: '1.15.0-dev.2929.pr661'")
2024-09-24 19:00:16.928 Traceback (most recent call last):
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/craft_application/application.py", line 543, in run
2024-09-24 19:00:16.928 self.run_managed(platform, build_for)
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/charmcraft/application/main.py", line 154, in run_managed
2024-09-24 19:00:16.928 super().run_managed(platform, build_for)
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/craft_application/application.py", line 368, in run_managed
2024-09-24 19:00:16.928 with self.services.provider.instance(
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/lib/python3.10/contextlib.py", line 135, in __enter__
2024-09-24 19:00:16.928 return next(self.gen)
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/charmcraft/services/provider.py", line 119, in instance
2024-09-24 19:00:16.928 with super().instance(
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/lib/python3.10/contextlib.py", line 135, in __enter__
2024-09-24 19:00:16.928 return next(self.gen)
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/craft_application/services/provider.py", line 126, in instance
2024-09-24 19:00:16.928 provider.ensure_provider_is_available()
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/craft_providers/multipass/multipass_provider.py", line 165, in ensure_provider_is_available
2024-09-24 19:00:16.928 ensure_multipass_is_ready()
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/craft_providers/multipass/_ready.py", line 41, in ensure_multipass_is_ready
2024-09-24 19:00:16.928 if not multipass.is_supported_version():
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/craft_providers/multipass/multipass.py", line 161, in is_supported_version
2024-09-24 19:00:16.928 return packaging.version.parse(version) >= minimum_version
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/packaging/version.py", line 56, in parse
2024-09-24 19:00:16.928 return Version(version)
2024-09-24 19:00:16.928 File "/Users/X/.pyenv/versions/3.10.11/envs/charms/lib/python3.10/site-packages/packaging/version.py", line 202, in __init__
2024-09-24 19:00:16.928 raise InvalidVersion(f"Invalid version: '{version}'")
2024-09-24 19:00:16.928 packaging.version.InvalidVersion: Invalid version: '1.15.0-dev.2929.pr661'
2024-09-24 19:00:16.928 Full execution log: '/Users/X/Library/Logs/charmcraft/charmcraft-20240924-190016.856344.log'
```
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Fixed by merged PR #662 (commit d7cfb80), which handles semver-style Multipass development versions by truncating invalid PEP 440 suffixes before comparison. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed upstream by merged canonical/craft-providers#662 (commit d7cfb80), which added parsing support for development Multipass version strings. | |
| qwen/qwen3.6-35b-a3b | — | — | Parsing certain multipass dev versions triggers an unhandled InvalidVersion error. The report was closed without a fix, merge, or technical resolution. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed without resolution. The bug reported that packaging.version.parse fails on certain Multipass dev versions, raising an unhandled InvalidVersion error. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed without a public fix. Synced to internal Jira ticket CRAFT-3452. No code changes or pull requests were merged to resolve the InvalidVersion error for multipass dev versions. |
Update history
No update history recorded yet.
Related work
-
Likely Fixed By:
canonical/craft-providers#662
(confidence 100%)
Merged PR resolving #661 via commit d7cfb80.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #662 fix(multipass): parse dev multipass versions | craft-providers | merged | Merged PR #662 fixed #661 by parsing semver-style Multipass development versions and truncating invalid PEP 440 suffixes before comparison. |