Description: Get version from debian/changelog when metadata not available.
Author: Bas Couwenberg <sebastic@debian.org>
Forwarded: not-needed

--- a/mapproxy/version.py
+++ b/mapproxy/version.py
@@ -23,6 +23,34 @@ def version_string():
     """
     try:
         return importlib.metadata.version('mapproxy')
+    except importlib.metadata.PackageNotFoundError:
+        import os
+        import re
+        import subprocess
+
+        version = 'unknown_version'
+        changelog_file = os.path.join(
+            os.path.dirname(os.path.dirname(__file__)),
+            'debian',
+            'changelog',
+        )
+
+        if os.path.exists(changelog_file):
+            cmd = [
+                'dpkg-parsechangelog',
+                '-l', changelog_file,
+                '-S', 'Version'
+            ]
+
+            p = subprocess.run(cmd, capture_output=True)
+
+            if p.returncode == 0:
+                version = p.stdout.decode()
+                version = re.sub(r'^\d+:', '', version)
+                version = re.sub(r'\+\S+$', '', version)
+                version = re.sub(r'\~\S+$', '', version)
+
+        return version
     except KeyError:
         return 'unknown_version'
 
