diff --git a/CHANGES.rst b/CHANGES.rst index 3e416b5..bc967dc 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,7 +5,8 @@ Changelog 2.0.3 (unreleased) ------------------ -- Nothing changed yet. +- Fix ``ModuleNotFoundError`` when trying to import ``safe_name`` from ``setuptools`` 80.2.0 or higher. + [maurits] 2.0.2 (2024-04-24) diff --git a/src/mr/developer/extension.py b/src/mr/developer/extension.py index d37594a..4e285ae 100644 --- a/src/mr/developer/extension.py +++ b/src/mr/developer/extension.py @@ -1,5 +1,4 @@ from mr.developer.common import memoize, WorkingCopies, Config, get_workingcopytypes -from setuptools.package_index import safe_name import logging import os import re @@ -11,6 +10,17 @@ logger = logging.getLogger("mr.developer") +def safe_name(name: str) -> str: + """Convert an arbitrary string to a standard distribution name + + Any runs of non-alphanumeric/. characters are replaced with a single '-'. + + This is copied from pkg_resources.safe_name. + (formerly setuptools.package_index.safe_name) + """ + return re.sub('[^A-Za-z0-9.]+', '-', name) + + class Source(dict): def exists(self): return os.path.exists(self['path'])