ÿØÿàJFIFHHÿá .
BSA HACKER
Logo of a company Server : Apache
System : Linux nusantara.hosteko.com 4.18.0-553.16.1.lve.el8.x86_64 #1 SMP Tue Aug 13 17:45:03 UTC 2024 x86_64
User : koperas1 ( 1254)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /opt/cloudlinux/venv/lib64/python3.11/site-packages/setoptconf/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/setoptconf/manager.py
from copy import deepcopy

from .config import Configuration
from .setting import Setting
from .source.base import Source


__all__ = ("ConfigurationManager",)


class ConfigurationManager(object):
    def __init__(self, name):
        self.name = name
        self.settings = []

    def add(self, setting):
        if isinstance(setting, Setting):
            self.settings.append(setting)
        else:
            raise TypeError("Can only add objects of type Setting")

    def retrieve(self, *sources):
        to_process = []
        for source in reversed(sources):
            if isinstance(source, Source):
                to_process.append(source)
            elif isinstance(source, type) and issubclass(source, Source):
                to_process.append(source())
            else:
                raise TypeError("All sources must be a Source")

        config = Configuration(settings=self.settings)
        for source in to_process:
            config = source.get_config(
                deepcopy(self.settings), manager=self, parent=config
            )

        config.validate()

        return config