fix: __version__ guard catches everything and leaves it unset on failure - #206
Open
petercorke wants to merge 1 commit into
Open
fix: __version__ guard catches everything and leaves it unset on failure#206petercorke wants to merge 1 commit into
petercorke wants to merge 1 commit into
Conversation
Bare except: pass means any exception during the importlib.metadata lookup gets silently swallowed (not just PackageNotFoundError for "not installed"), and __version__ never gets set at all in that case -- spatialmath.__version__ raises AttributeError instead of giving something to print. Narrow the except to PackageNotFoundError and fall back to an explicit "unknown" so the attribute always exists.
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
spatialmath/__init__.py's__version__lookup used a bareexcept: pass, which has two problems:importlib.metadata.version()call, not just the "package isn't installed" case (PackageNotFoundError) -- masking anything else that might go wrong there.__version__never gets set at all --spatialmath.__version__raisesAttributeErrorrather than giving something to print, in e.g. a source checkout without an installed/editable distribution.Narrowed the
excepttoPackageNotFoundErrorand added an explicit"unknown"fallback so the attribute always exists.Test plan
import spatialmath; spatialmath.__version__still resolves to the installed version (1.1.16locally)importlib.metadata.versionto raisePackageNotFoundErrorand confirmed__version__falls back to"unknown"instead of being unsettests/test_version.py: asserts it's a non-empty string and matchespyproject.toml'sversion