diff --git a/spatialmath/__init__.py b/spatialmath/__init__.py index 551481e1..97922905 100644 --- a/spatialmath/__init__.py +++ b/spatialmath/__init__.py @@ -51,5 +51,8 @@ import importlib.metadata __version__ = importlib.metadata.version("spatialmath-python") -except: - pass +except importlib.metadata.PackageNotFoundError: + # running from a source checkout without an installed/editable + # spatialmath-python distribution -- e.g. importing straight from + # the repo root + __version__ = "unknown" diff --git a/tests/test_version.py b/tests/test_version.py new file mode 100644 index 00000000..e8590bb6 --- /dev/null +++ b/tests/test_version.py @@ -0,0 +1,22 @@ +import re +import unittest +from pathlib import Path + +import spatialmath + + +class TestVersion(unittest.TestCase): + def test_version_is_a_non_empty_string(self): + self.assertIsInstance(spatialmath.__version__, str) + self.assertTrue(spatialmath.__version__) + + def test_version_matches_pyproject(self): + pyproject = Path(__file__).parent.parent / "pyproject.toml" + match = re.search(r'^version\s*=\s*"([^"]+)"', pyproject.read_text(), re.MULTILINE) + self.assertIsNotNone(match, f"couldn't find a version in {pyproject}") + self.assertEqual(spatialmath.__version__, match.group(1)) + + +# ---------------------------------------------------------------------------------------# +if __name__ == "__main__": + unittest.main()