mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 05:42:54 +00:00 
			
		
		
		
	Use power of LazyInitialise to murder TFW/TAOENV global state
This commit is contained in:
		@@ -4,9 +4,20 @@
 | 
			
		||||
from collections import namedtuple
 | 
			
		||||
from os import environ
 | 
			
		||||
 | 
			
		||||
from tfw.decorators import LazyInitialise
 | 
			
		||||
 | 
			
		||||
def prefixed_envvars_to_namedtuple(prefix: str, tuple_name: str):
 | 
			
		||||
    envvars = {envvar.replace(prefix, '', 1): environ.get(envvar)
 | 
			
		||||
               for envvar in environ.keys()
 | 
			
		||||
               if envvar.startswith(prefix)}
 | 
			
		||||
    return namedtuple(tuple_name, envvars)(**envvars)
 | 
			
		||||
 | 
			
		||||
class LazyEnvironment:
 | 
			
		||||
    def __init__(self, prefix, tuple_name):
 | 
			
		||||
        self._prefix = prefix
 | 
			
		||||
        self._tuple_name = tuple_name
 | 
			
		||||
 | 
			
		||||
    @LazyInitialise
 | 
			
		||||
    def environment(self):
 | 
			
		||||
        return self.prefixed_envvars_to_namedtuple()
 | 
			
		||||
 | 
			
		||||
    def prefixed_envvars_to_namedtuple(self):
 | 
			
		||||
        envvars = {envvar.replace(self._prefix, '', 1): environ.get(envvar)
 | 
			
		||||
                   for envvar in environ.keys()
 | 
			
		||||
                   if envvar.startswith(self._prefix)}
 | 
			
		||||
        return namedtuple(self._tuple_name, envvars)(**envvars)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user