Repository navigation
Report invalid distributions in diagnose instead of crashing - #549
Merged
Merged
Conversation
An empty metadata directory is still discovered as a distribution, but it cannot name itself, so the diagnostic died on the very condition it exists to surface. Describe such distributions by the location of their metadata instead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Closes #548.
diagnose.inspectbuilt its report with', '.join(dist.name for dist in dists). An empty metadata directory (a barefoo-1.0.dist-infoleft behind by a partial install) is still discovered as aPathDistribution, but it cannot name itself, so the diagnostic died on the very condition it exists to surface.The failure mode has shifted since #532 but the crash remains:
MetadataNotFoundNamefield →KeyError: 'Name'(from_adapters.Message.__getitem__)Both are now caught by a new
describe, which falls back to the location of the distribution's metadata:_locatereads_pathdefensively so a non-path provider degrades to its repr rather than raising in turn.The duplicate-metadata condition from the original python/cpython#100666 discussion is not addressed here;
diagnosealready survives it (listing the name twice), so flagging it would be a separate enhancement.Note for downstream:
diagnose.pyandtests/test_main.pyare both shared with CPython, so this needs porting toimportlib.metadata.🤖 Generated with Claude Code