﻿class Config:
    """
    Centralna klasa konfiguracyjna aplikacji.
    Służy jako globalne repozytorium ustawień. Nigdy nie jest instancjonowana.
    """
    
    # Globalne atrybuty klasy, reprezentujące stan aplikacji
    version = "1.0"
    debug_mode = False

    @classmethod
    def set_debug(cls, status: bool):
        """
        Metoda klasowa zmieniająca tryb debugowania w całym systemie.
        
        :param cls: Klasa Config
        :param status: Nowa wartość trybu debugowania (True / False)
        """
        # Modyfikujemy atrybut klasy, co wpływa na wszystkie ewentualne 
        # odwołania do Config w całej aplikacji
        cls.debug_mode = status

    @classmethod
    def get_info(cls):
        """
        Metoda klasowa zwracająca pełne informacje o aktualnej konfiguracji.
        """
        # Używamy parametru cls do odczytu danych bezpośrednio z definicji klasy
        print(f"Wersja: {cls.version}, Debug: {cls.debug_mode}")


# --- Sekcja testowa ---
if __name__ == "__main__":
    # Testujemy aplikację nie tworząc żadnych obiektów (np. c = Config())
    # Zamiast tego odwołujemy się bezpośrednio do klasy.
    print("Początkowy stan konfiguracji:")
    Config.get_info()
    
    # Odczyt bezpośrednio z klasy bez użycia metody
    print(f"\nBezpośredni odczyt wersji: {Config.version}")
    
    print("\nZmiana trybu debugowania na włączony (True)...")
    Config.set_debug(True)
    
    print("\nStan konfiguracji po zmianie:")
    Config.get_info()
