mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2025-06-28 14:35:11 +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