Environment variable reader with prefix support.
Provides convenient access to environment variables with a common prefix,
useful for application-specific configuration namespacing.
Uses caching to improve performance for repeated name lookups.
Examples:
>>> app_env = EnvPrefix('MYAPP')
>>> app_env.get_bool('DEBUG') # Reads MYAPP_DEBUG
>>> app_env['database_url'] # Reads MYAPP_DATABASE_URL
Initialize with prefix.
Parameters:
| Name |
Type |
Description |
Default |
prefix
|
str
|
Prefix for all environment variables
|
required
|
separator
|
str
|
Separator between prefix and variable name
|
'_'
|
Source code in provide/foundation/utils/environment/prefix.py
| def __init__(self, prefix: str, separator: str = "_") -> None:
"""Initialize with prefix.
Args:
prefix: Prefix for all environment variables
separator: Separator between prefix and variable name
"""
self.prefix = prefix.upper()
self.separator = separator
self._name_cache = LRUCache(maxsize=128)
|
Functions
__contains__
__contains__(name: str) -> bool
Check if environment variable exists.
Source code in provide/foundation/utils/environment/prefix.py
| def __contains__(self, name: str) -> bool:
"""Check if environment variable exists."""
return self._make_name(name) in os.environ
|
__getitem__
__getitem__(name: str) -> str | None
Get environment variable using subscript notation.
Source code in provide/foundation/utils/environment/prefix.py
| def __getitem__(self, name: str) -> str | None:
"""Get environment variable using subscript notation."""
return self.get_str(name)
|
all_with_prefix
all_with_prefix() -> dict[str, str]
Get all environment variables with this prefix.
Returns:
| Type |
Description |
dict[str, str]
|
Dictionary of variable names (without prefix) to values
|
Source code in provide/foundation/utils/environment/prefix.py
| def all_with_prefix(self) -> dict[str, str]:
"""Get all environment variables with this prefix.
Returns:
Dictionary of variable names (without prefix) to values
"""
result = {}
prefix_with_sep = f"{self.prefix}{self.separator}"
for key, value in os.environ.items():
if key.startswith(prefix_with_sep):
# Remove prefix and add to result
var_name = key[len(prefix_with_sep) :]
result[var_name] = value
return result
|
get_bool
get_bool(
name: str, default: bool | None = None
) -> bool | None
Get boolean with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def get_bool(self, name: str, default: bool | None = None) -> bool | None:
"""Get boolean with prefix."""
return get_bool(self._make_name(name), default)
|
get_dict
get_dict(
name: str,
default: dict[str, str] | None = None,
item_separator: str = ",",
key_value_separator: str = "=",
) -> dict[str, str]
Get dictionary with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def get_dict(
self,
name: str,
default: dict[str, str] | None = None,
item_separator: str = ",",
key_value_separator: str = "=",
) -> dict[str, str]:
"""Get dictionary with prefix."""
return get_dict(self._make_name(name), default, item_separator, key_value_separator)
|
get_float
get_float(
name: str, default: float | None = None
) -> float | None
Get float with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def get_float(self, name: str, default: float | None = None) -> float | None:
"""Get float with prefix."""
return get_float(self._make_name(name), default)
|
get_int
get_int(
name: str, default: int | None = None
) -> int | None
Get integer with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def get_int(self, name: str, default: int | None = None) -> int | None:
"""Get integer with prefix."""
return get_int(self._make_name(name), default)
|
get_list
get_list(
name: str,
default: list[str] | None = None,
separator: str = ",",
) -> list[str]
Get list with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def get_list(self, name: str, default: list[str] | None = None, separator: str = ",") -> list[str]:
"""Get list with prefix."""
return get_list(self._make_name(name), default, separator)
|
get_path
get_path(
name: str, default: Path | str | None = None
) -> Path | None
Get path with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def get_path(self, name: str, default: Path | str | None = None) -> Path | None:
"""Get path with prefix."""
return get_path(self._make_name(name), default)
|
get_str
get_str(
name: str, default: str | None = None
) -> str | None
Get string with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def get_str(self, name: str, default: str | None = None) -> str | None:
"""Get string with prefix."""
return get_str(self._make_name(name), default)
|
require
require(name: str, type_hint: type[T] | None = None) -> Any
Require variable with prefix.
Source code in provide/foundation/utils/environment/prefix.py
| def require(self, name: str, type_hint: type[T] | None = None) -> Any:
"""Require variable with prefix."""
return require(self._make_name(name), type_hint)
|