HEX
Server: Apache
System: Linux beluga.o2switch.net 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP Thu May 7 23:17:13 UTC 2026 x86_64
User: sc3naki1272 (1113)
PHP: 8.3.33
Disabled: NONE
Upload Files
File: //opt/alt/python37/lib/python3.7/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