From fcfef3102dede8dc3510e5b7cc8bed8beb1ea9be Mon Sep 17 00:00:00 2001 From: Maximilian Linhoff Date: Fri, 19 Jul 2024 11:02:45 +0200 Subject: [PATCH] Fix deprecation warning in provenance, fixes #2592 --- src/ctapipe/core/provenance.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ctapipe/core/provenance.py b/src/ctapipe/core/provenance.py index b30886317d4..2dc6527af3a 100644 --- a/src/ctapipe/core/provenance.py +++ b/src/ctapipe/core/provenance.py @@ -304,9 +304,17 @@ def provenance(self): def _get_python_packages(): + def _sortkey(dist): + """Sort packages by name, case insensitive""" + # get is needed to avoid errors / deprecation warning + # in case packages with broken metadata are in the system + # see e.g. https://github.com/pypa/setuptools/issues/4482 + return dist.metadata.get("Name", "").lower() + return [ - {"name": p.name, "version": p.version} - for p in sorted(distributions(), key=lambda d: (d.name or "").lower()) + {"name": p.name, "version": p.metadata.get("Version", "")} + for p in sorted(distributions(), key=_sortkey) + if p.metadata.get("Name") is not None ]