Fix invalid PEP 440 version string from nRF51 bootloader dirty bit #591
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When the nRF51 bootloader reports a dirty build (bit 0x80 set in the version data), cflib constructed a version string ending in bare "+", e.g. "2024.1.0+". This is invalid PEP 440 and causes packaging.version.Version() to raise an error during flashing.
This likely started failing when the packaging library tightened its PEP 440 validation in a newer release.
Reproducible with any Crazyflie running custom-built nRF51 firmware (which sets the dirty bit). Fix changes the suffix from "+" to "+dirty" which is valid PEP 440.
Tested by flashing a Crazyflie with dirty nRF51 bootloader firmware.