diff --git a/logilab/common/deprecation.py b/logilab/common/deprecation.py index fe2b89c102e2fd8ca4b998bb3c7575b2a2fb2eb4..31d821fb1a9ce332e2bdd07800075ee3f4ead1ce 100644 --- a/logilab/common/deprecation.py +++ b/logilab/common/deprecation.py @@ -169,17 +169,17 @@ def _get_package_name(python_object) -> Optional[str]: # instantiate abstract class 'Distribution' with abstract attributes # 'locate_file' and 'read_text' for distribution in importlib_metadata.Distribution().discover(): # type: ignore - if distribution.files: + # sometime distribution has a "name" attribute, sometime not + if distribution.files and hasattr(distribution, "name"): for file in distribution.files: - # sometime distribution has a "name" attribute, sometime not - if hasattr(distribution, "name"): - _cached_path_to_package[ - str(distribution.locate_file(file)) - ] = distribution.name - elif "name" in distribution.metadata: - _cached_path_to_package[ - str(distribution.locate_file(file)) - ] = distribution.metadata["name"] + _cached_path_to_package[str(distribution.locate_file(file))] = distribution.name + continue + + if distribution.files and "name" in distribution.metadata: + for file in distribution.files: + _cached_path_to_package[ + str(distribution.locate_file(file)) + ] = distribution.metadata["name"] try: return _cached_path_to_package.get(