Skip to content

Commit

Permalink
Merge pull request #184 from Geoplateforme/al_debug_config
Browse files Browse the repository at this point in the history
debug lecture Config
  • Loading branch information
vsasyan-ignf authored Sep 25, 2024
2 parents 7006494 + f4a29c6 commit 49c066e
Showing 1 changed file with 19 additions and 18 deletions.
37 changes: 19 additions & 18 deletions sdk_entrepot_gpf/io/Config.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def __init__(self) -> None:
if not Config.ini_file_path.exists():
raise ConfigReaderError(f"Fichier de configuration par défaut {Config.ini_file_path} non trouvé.")

self.__config: Dict[str, Dict[str, Any]] = {}
self.__config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())
self.read(Config.ini_file_path)

# Définition du niveau de log pour l'OutputManager par défaut
Expand Down Expand Up @@ -61,33 +61,26 @@ def read(self, filenames: Union[str, Path, Iterable[Union[str, Path]]]) -> List[
"""
if isinstance(filenames, (str, bytes, os.PathLike)):
filenames = [filenames]
# Ouverture des fichiers existants
l_configs = []
# liste des fichiers lus
l_read_files = []
# Ouverture des fichiers existants
for p_file in filenames:
if os.path.exists(p_file):
s_ext = pathlib.Path(p_file).suffix
if s_ext == ".ini":
# Fichier ini
o_config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())
o_config.read(p_file, encoding="utf-8")
try:
d_config = {s: dict(o_config.items(s)) for s in o_config.sections()}
except configparser.InterpolationSyntaxError as e_err:
raise ConfigReaderError(f"Veuillez vérifier la config, les caractères spéciaux doivent être doublés. ({e_err.message}) ") from e_err
l_configs.append(d_config)
# Lecture du fichier ini
self.__config.read(p_file, encoding="utf-8")
# on met à jour la liste des fichiers lus
l_read_files.append(str(p_file))
elif s_ext == ".toml":
# Fichier toml
# Lecture du fichier toml
d_config = toml.load(p_file)
l_configs.append(d_config)
self.__config.read_dict(d_config, str(p_file))
# on met à jour la liste des fichiers lus
l_read_files.append(str(p_file))
else:
# Fichier non géré
raise ValueError(f"L'extension {s_ext} n'est pas gérée par la classe Config.")
# Fusion des configurations
for d_config in l_configs:
self.__config = Config.merge(self.__config, d_config)

return l_read_files

Expand Down Expand Up @@ -127,7 +120,11 @@ def get_config(self) -> Dict[str, Dict[str, Any]]:
Returns:
Dict[str, Dict[str, Any]]: la full config
"""
return self.__config
try:
d_config = {s: dict(self.__config.items(s)) for s in self.__config.sections()}
except configparser.InterpolationSyntaxError as e_err:
raise ConfigReaderError(f"Veuillez vérifier la config, les caractères spéciaux doivent être doublés. ({e_err.message}) ") from e_err
return d_config

def get(self, section: str, option: str, fallback: Optional[Any] = None) -> Optional[str]:
"""Récupère la valeur associée au paramètre demandé.
Expand All @@ -141,7 +138,11 @@ def get(self, section: str, option: str, fallback: Optional[Any] = None) -> Opti
Optional[str]: la valeur du paramètre
"""
s_fallback = str(fallback) if fallback is not None else fallback
s_ret = self.__config.get(section, {option: s_fallback}).get(option, s_fallback)
try:
s_ret = self.__config.get(section, option, fallback=s_fallback)
except configparser.InterpolationSyntaxError as e_err:
raise ConfigReaderError(f"Veuillez vérifier la config, les caractères spéciaux doivent être doublés. ({e_err.message}) ") from e_err

if s_ret is None:
return None
return str(s_ret)
Expand Down

0 comments on commit 49c066e

Please sign in to comment.