From 0c4dc8269c86bc9599c82de95b0a5c11908bad65 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Tue, 24 Jun 2025 16:56:02 +0300 Subject: [PATCH] cob dash --- core/config.py | 22 +++++++++++++++++++--- web/enhanced_cob_dashboard.html | Bin 3298 -> 14896 bytes 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/core/config.py b/core/config.py index f86b26f..a95d8f0 100644 --- a/core/config.py +++ b/core/config.py @@ -1,9 +1,7 @@ -""" Central Configuration Management This module handles all configuration for the trading system. It loads settings from config.yaml and provides easy access to all components. -""" import os import yaml @@ -236,6 +234,15 @@ def get_config(config_path: str = "config.yaml") -> Config: _config_instance = Config(config_path) return _config_instance +def load_config(config_path: str = "config.yaml") -> Dict[str, Any]: + """Load configuration from YAML file""" + try: + config = get_config(config_path) + return config._config + except Exception as e: + logger.error(f"Error loading configuration: {e}") + return {} + def setup_logging(config: Optional[Config] = None): """Setup logging based on configuration""" if config is None: @@ -257,4 +264,13 @@ def setup_logging(config: Optional[Config] = None): ] ) - logger.info("Logging configured successfully") \ No newline at end of file + logger.info("Logging configured successfully") + +def load_config(config_path: str = "config.yaml") -> Dict[str, Any]: + """Load configuration from YAML file""" + try: + config = get_config(config_path) + return config._config + except Exception as e: + logger.error(f"Error loading configuration: {e}") + return {} diff --git a/web/enhanced_cob_dashboard.html b/web/enhanced_cob_dashboard.html index 04f29eb749facedd018170654db25b7e7295f179..712bffbd7eca98caa71a6b4da38c9db64b62c52b 100644 GIT binary patch literal 14896 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 literal 3298 zcmchaZA%+L6ov0+q5olMIu)9XB_}AM$XC~vu zWZgz6Maa(1%zZoO%-!+#ua-TxUHfQlJG9TXZ*MHJQ!DJ;&TPx(tabkuG1IZWo!F)| ztjDNvzoW-W;@%?c_1D5f4?i8oU3_#bv)s+d`V-OKTGL*Sd{kNWv5^n$A6m-j$_93U zpMn{AyzdHrhF6}u9~r@ST1%c{$>IkvKhWr{`0zLW@Otmf>}NU>Hdw&kg;w6}0O zwm_)w>ghY*3H}ajkKZ;Z?(jS$L!qH4C%o_SmSb^5zCs}Znap5|$0_lHid&AY z#BL@ut*nNQmx48~mkCzFUPXCZ8=L3;!X% zIhLW`fn!2lqU;ula+KI^Lqi(^YHUG4NiAJeM{60)wvQpEWlowOF$@LPZy=> zE1(`96HmSEjmsd+?x2kKcu^(~)wzI$&b~TgX7A|CA6%#21oK8kU)G8Acn-0MIEkUR z?^og-5!Zi#PFUBe@SMrY_mUgpR8=-zt9rWkSALmN`|0vHa+(y^<+rq`z$-AMFNf;5 z=BZkrj$^gzg{Nnr4Ku#-YvKs`)fyg!{}p+ZCun|@pZeZyMI}K2I`sprb(R~jE;f6N z7He$$x1{52>U@V7y44)v^$hhW&R6?Z>p$3qIQ~`>Y-foWJd}}reNvgfvD8->?87r; z@|5g@t!^c{ljwwqRh`Rhg!c>AJrla4Z(SMI8{b#Id-#l@ogjIU^ z>S(lPYi_iR=2qwrjT**7Eq5?CeX`2cI@MgDvv7Vrm$NXbE}Ubj(~!fR`i592sQQv| zUBr;rIS5GC`mXA^?L79}2{~ZSXC<$?KS-ss`7Lj?v)2=H^7oTlV(Mg^jPfe%3vc4{ lVK$N7)!-g{*6pcUyPNnbRNYxMCk2O_n!m?||6ZPv)gLn=&+q^M