import os
import logging
class EnvVarWrapper:
"""
Wraps environment variable access for testing purposes,
providing a consistent interface and support for older Python versions.
"""
def __init__(self, var_name, default_value=None):
"""
Initializes the wrapper for a specific environment variable.
Args:
var_name (str): The name of the environment variable.
default_value (any, optional): The default value to use if the environment variable is not set. Defaults to None.
"""
self.var_name = var_name
self.default_value = default_value
self.value = os.environ.get(var_name, self.default_value) # Get env var, use default if missing
self.is_set = bool(self.value) #track if variable is set
def get(self):
"""
Returns the value of the environment variable.
Returns:
any: The value of the environment variable.
"""
return self.value
def is_enabled(self):
"""
Returns True if the environment variable is set and not empty, False otherwise.
"""
return self.is_set
def set_default(self, new_default):
"""
Updates the default value of the environment variable.
"""
self.default_value = new_default
self.value = os.environ.get(self.var_name, self.default_value)
self.is_set = bool(self.value)
if __name__ == '__main__':
# Example Usage
logging.basicConfig(level=logging.INFO)
# Create a wrapper for a variable
db_host = EnvVarWrapper("DB_HOST", "localhost")
db_port = EnvVarWrapper("DB_PORT", "5432")
debug_mode = EnvVarWrapper("DEBUG", False)
# Get the values
host = db_host.get()
port = db_port.get()
debug = debug_mode.get()
print(f"DB Host: {host}")
print(f"DB Port: {port}")
print(f"Debug Mode: {debug}")
#Check if variable is set
print(f"DB Host is enabled: {db_host.is_enabled()}")
print(f"Debug Mode is enabled: {debug_mode.is_enabled()}")
#Set new default value
db_port.set_default(5433)
print(f"DB Port after setting new default: {db_port.get()}")
Add your comment