From d46c0202b338c647daaa68a497459850f2af2d9d Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Tue, 15 Oct 2024 12:45:15 +0200 Subject: [PATCH] Get rid of hidden python 3.7 dependency --- src/argus/site/views.py | 22 +++++++++++++++------- tests/site/test_misc.py | 10 ++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 tests/site/test_misc.py diff --git a/src/argus/site/views.py b/src/argus/site/views.py index 2e94e82f6..4f8f97142 100644 --- a/src/argus/site/views.py +++ b/src/argus/site/views.py @@ -1,4 +1,5 @@ import logging +from importlib.metadata import version, PackageNotFoundError from django.conf import settings from django.http import ( @@ -84,6 +85,19 @@ def render_error_page(code, reason) -> bytes: # fmt: on +def get_version(): + try: + from argus.version import __version__ + + return __version__ + except (ModuleNotFoundError, ImportError): + pass + try: + return version("argus-server") + except PackageNotFoundError as e: + return e + + @extend_schema_view(get=extend_schema(responses=MetadataSerializer)) class MetadataView(APIView): http_method_names = ["get", "head", "options", "trace"] @@ -92,15 +106,9 @@ class MetadataView(APIView): login_required = False def get(self, request, format=None): - try: - from argus.version import __version__ - except (ModuleNotFoundError, ImportError): - import pkg_resources - - __version__ = pkg_resources.get_distribution("argus-server").version metadata = { - "server-version": __version__, + "server-version": get_version(), "api-version": { "stable": "v1", "unstable": "v2", diff --git a/tests/site/test_misc.py b/tests/site/test_misc.py new file mode 100644 index 000000000..83bf7a25e --- /dev/null +++ b/tests/site/test_misc.py @@ -0,0 +1,10 @@ +import unittest + +from argus.site.views import get_version + + +class GetVersionTest(unittest.TestCase): + + def test_get_version_never_fails(self): + version = get_version() + self.assertTrue(isinstance(version, str))