Files
OpenBB/openbb_terminal/core/session/env_handler.py
Igor Radovanovic 77716b2081 Merge
2023-08-25 00:17:56 +02:00

60 lines
1.4 KiB
Python

# IMPORTS STANDARD
import sys
from typing import Any, Dict, Optional
# IMPORTS THIRDPARTY
from dotenv import dotenv_values, set_key
# IMPORTS INTERNAL
from openbb_terminal.core.config.paths import (
PACKAGE_ENV_FILE,
REPOSITORY_ENV_FILE,
SETTINGS_ENV_FILE,
)
DEFAULT_ORDER = [SETTINGS_ENV_FILE, PACKAGE_ENV_FILE, REPOSITORY_ENV_FILE]
def get_reading_order() -> list:
"""Get order of .env files. If we are on frozen app, we reverse the order to
read the SETTINGS_ENV_FILE last.
Returns
-------
list
List of .env files.
"""
local_order = DEFAULT_ORDER.copy()
if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"):
local_order.reverse()
return local_order
def read_env() -> Dict[str, Any]:
__env_dict: Dict[str, Optional[str]] = {}
for env_file in get_reading_order():
if env_file.exists():
__env_dict.update(**dotenv_values(env_file))
__env_dict_filtered = {
k[len("OPENBBB_") - 1 :]: v
for k, v in __env_dict.items()
if k.startswith("OPENBB_")
}
return __env_dict_filtered
def write_to_dotenv(name: str, value: str) -> None:
"""Write to .env file.
Parameters
----------
name : str
Name of the variable.
value : str
Value of the variable.
"""
set_key(str(SETTINGS_ENV_FILE), name, str(value))