diff configmix/variables.py @ 697:57fe110c50c8

Implement a new "SYS" namespace with "prefix", "base_prefix" and "platform"
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 14 Jun 2023 01:11:01 +0200
parents f454889e41fa
children 3a9d661d33b5
line wrap: on
line diff
--- a/configmix/variables.py	Mon Jun 12 09:28:36 2023 +0200
+++ b/configmix/variables.py	Wed Jun 14 01:11:01 2023 +0200
@@ -15,6 +15,7 @@
 
 import os
 import platform
+import sys
 from functools import wraps
 
 from .compat import PY2, native_os_str_to_text, text_to_native_os_str, u
@@ -48,6 +49,27 @@
             return default
 
 
+def _syslookup(name, default=_MARKER):
+    """Lookup some variables from Python's :mod:`sys` module"""
+    if name == "prefix":
+        return native_os_str_to_text(sys.prefix)
+    elif name == "base_prefix":
+        val = getattr(sys, name, _MARKER)
+        if val is _MARKER:
+            if default is _MARKER:
+                raise KeyError("key %r not found in the namespace" % name)
+            else:
+                return default
+        return native_os_str_to_text(val)
+    elif name == "platform":
+        return native_os_str_to_text(sys.platform)
+    else:
+        if default is _MARKER:
+            raise KeyError("key %r not found in the namespace" % name)
+        else:
+            return default
+
+
 def _pylookup(name, default=_MARKER):
     """Lookup Python specific information"""
     if name == "version":
@@ -270,6 +292,7 @@
 add_varns("ENV", _envlookup)
 add_varns("OS", _oslookup)
 add_varns("PY", _pylookup)
+add_varns("SYS", _syslookup)
 try:
     from .extras import aws
 except ImportError: