class config: class setup: source_directory = "src" dist_directory = "dist" class formatting: article_preview_length = 200 datetime_format = "%d. %B %Y" fallback_language = "en" languages = { "af": { "flag": "🇿🇦", "name": "Afrikaans", "native_name": "Afrikaans" }, "am": { "flag": "🇪🇹", "name": "Amharic", "native_name": "አማርኛ" }, "an": { "flag": "🇪🇸", "name": "Aragonese", "native_name": "aragonés" }, "ar": { "flag": "🇸🇦", "name": "Arabic", "native_name": "العربية" }, "ar_ae": { "flag": "🇦🇪", "name": "Arabic (UAE)", "native_name": "العربية (الإمارات)" }, "ar_bh": { "flag": "🇧🇭", "name": "Arabic (Bahrain)", "native_name": "العربية (البحرين)" }, "ar_dz": { "flag": "🇩🇿", "name": "Arabic (Algeria)", "native_name": "العربية (الجزائر)" }, "ar_eg": { "flag": "🇪🇬", "name": "Arabic (Egypt)", "native_name": "العربية (مصر)" }, "ar_iq": { "flag": "🇮🇶", "name": "Arabic (Iraq)", "native_name": "العربية (العراق)" }, "ar_jo": { "flag": "🇯🇴", "name": "Arabic (Jordan)", "native_name": "العربية (الأردن)" }, "ar_kw": { "flag": "🇰🇼", "name": "Arabic (Kuwait)", "native_name": "العربية (الكويت)" }, "ar_lb": { "flag": "🇱🇧", "name": "Arabic (Lebanon)", "native_name": "العربية (لبنان)" }, "ar_ly": { "flag": "🇱🇾", "name": "Arabic (Libya)", "native_name": "العربية (ليبيا)" }, "ar_ma": { "flag": "🇲🇦", "name": "Arabic (Morocco)", "native_name": "العربية (المغرب)" }, "ar_om": { "flag": "🇴🇲", "name": "Arabic (Oman)", "native_name": "العربية (عُمان)" }, "ar_qa": { "flag": "🇶🇦", "name": "Arabic (Qatar)", "native_name": "العربية (قطر)" }, "ar_sa": { "flag": "🇸🇦", "name": "Arabic (Saudi Arabia)", "native_name": "العربية (السعودية)" }, "ar_sd": { "flag": "🇸🇩", "name": "Arabic (Sudan)", "native_name": "العربية (السودان)" }, "ar_sy": { "flag": "🇸🇾", "name": "Arabic (Syria)", "native_name": "العربية (سوريا)", }, "ar_tn": { "flag": "🇹🇳", "name": "Arabic (Tunisia)", "native_name": "العربية (تونس)" }, "ar_ye": { "flag": "🇾🇪", "name": "Arabic (Yemen)", "native_name": "العربية (اليمن)" }, "ars_ae": { "flag": "🇦🇪", "name": "Najdi Arabic (UAE)", "native_name": "نَجْدِيّ" }, "ars_arab_sa": { "flag": "🇸🇦", "name": "Najdi Arabic (Saudi Arabia, Arabic Script)", "native_name": "نَجْدِيّ" }, "ars_sa": { "flag": "🇸🇦", "name": "Najdi Arabic (Saudi Arabia)", "native_name": "نَجْدِيّ" }, "as": { "flag": "🇮🇳", "name": "Assamese", "native_name": "অসমীয়া" }, "az": { "flag": "🇦🇿", "name": "Azerbaijani", "native_name": "Azərbaycan" }, "be": { "flag": "🇧🇾", "name": "Belarusian", "native_name": "Беларуская" }, "bg": { "flag": "🇧🇬", "name": "Bulgarian", "native_name": "Български" }, "bm": { "flag": "🇲🇱", "name": "Bambara", "native_name": "bamanankan" }, "bn": { "flag": "🇧🇩", "name": "Bengali", "native_name": "বাংলা" }, "bn_in": { "flag": "🇮🇳", "name": "Bengali (India)", "native_name": "বাংলা (ভারত)" }, "br": { "flag": "🏴", "name": "Breton", "native_name": "brezhoneg" }, "bs": { "flag": "🇧🇦", "name": "Bosnian", "native_name": "Bosanski" }, "ca": { "flag": "🇪🇸", "name": "Catalan", "native_name": "Català" }, "crh": { "flag": "🇺🇦", "name": "Crimean Tatar", "native_name": "qırımtatarca" }, "cs": { "flag": "🇨🇿", "name": "Czech", "native_name": "Čeština" }, "cv": { "flag": "🇷🇺", "name": "Chuvash", "native_name": "чӑваш чӗлхи" }, "cy": { "flag": "🏴", "name": "Welsh", "native_name": "Cymraeg" }, "da": { "flag": "🇩🇰", "name": "Danish", "native_name": "Dansk" }, "de": { "flag": "🇩🇪", "name": "German", "native_name": "Deutsch", }, "de_at": { "flag": "🇦🇹", "name": "German (Austria)", "native_name": "Deutsch (Österreich)" }, "de_be": { "flag": "🇧🇪", "name": "German (Belgium)", "native_name": "Deutsch (Belgien)" }, "de_ch": { "flag": "🇨🇭", "name": "German (Switzerland)", "native_name": "Deutsch (Schweiz)" }, "dv": { "flag": "🇲🇻", "name": "Dhivehi", "native_name": "ދިވެހި" }, "dz": { "flag": "🇧🇹", "name": "Dzongkha", "native_name": "རྫོང་ཁ" }, "el": { "flag": "🇬🇷", "name": "Greek", "native_name": "Ελληνικά" }, "en": { "flag": "🇺🇸", "name": "English", "native_name": "English", }, "en_au": { "flag": "🇦🇺", "name": "English (Australia)", "native_name": "English (Australia)" }, "en_ca": { "flag": "🇨🇦", "name": "English (Canada)", "native_name": "English (Canada)" }, "en_gb": { "flag": "🇬🇧", "name": "English (UK)", "native_name": "English (UK)", }, "en_ie": { "flag": "🇮🇪", "name": "English (Ireland)", "native_name": "English (Ireland)" }, "en_in": { "flag": "🇮🇳", "name": "English (India)", "native_name": "English (India)" }, "en_nz": { "flag": "🇳🇿", "name": "English (New Zealand)", "native_name": "English (New Zealand)" }, "en_us": { "flag": "🇺🇸", "name": "English (US)", "native_name": "English (US)", }, "es": { "flag": "🇪🇸", "name": "Spanish", "native_name": "Español" }, "es_ar": { "flag": "🇦🇷", "name": "Spanish (Argentina)", "native_name": "Español (Argentina)" }, "es_mx": { "flag": "🇲🇽", "name": "Spanish (Mexico)", "native_name": "Español (México)" }, "et": { "flag": "🇪🇪", "name": "Estonian", "native_name": "Eesti" }, "fa": { "flag": "🇮🇷", "name": "Persian", "native_name": "فارسی" }, "ff": { "flag": "🌍", "name": "Fula", "native_name": "Fulfulde" }, "fi": { "flag": "🇫🇮", "name": "Finnish", "native_name": "Suomi" }, "fo": { "flag": "🇫🇴", "name": "Faroese", "native_name": "føroyskt" }, "fr": { "flag": "🇫🇷", "name": "French", "native_name": "Français" }, "fr_ca": { "flag": "🇨🇦", "name": "French (Canada)", "native_name": "Français (Canada)" }, "fr_ch": { "flag": "🇨🇭", "name": "French (Switzerland)", "native_name": "Français (Suisse)" }, "ga": { "flag": "🇮🇪", "name": "Irish", "native_name": "Gaeilge" }, "gl": { "flag": "🇪🇸", "name": "Galician", "native_name": "Galego" }, "gn": { "flag": "🇵🇾", "name": "Guarani", "native_name": "Avañe'ẽ" }, "gu": { "flag": "🇮🇳", "name": "Gujarati", "native_name": "ગુજરાતી" }, "ha": { "flag": "🇳🇬", "name": "Hausa", "native_name": "هَوُسَ" }, "he": { "flag": "🇮🇱", "name": "Hebrew", "native_name": "עברית" }, "hi": { "flag": "🇮🇳", "name": "Hindi", "native_name": "हिन्दी" }, "hr": { "flag": "🇭🇷", "name": "Croatian", "native_name": "Hrvatski" }, "ht": { "flag": "🇭🇹", "name": "Haitian Creole", "native_name": "Kreyòl ayisyen" }, "hu": { "flag": "🇭🇺", "name": "Hungarian", "native_name": "Magyar" }, "id": { "flag": "🇮🇩", "name": "Indonesian", "native_name": "Bahasa Indonesia" }, "io": { "flag": "🌍", "name": "Ido", "native_name": "Ido" }, "is": { "flag": "🇮🇸", "name": "Icelandic", "native_name": "Íslenska" }, "it": { "flag": "🇮🇹", "name": "Italian", "native_name": "Italiano" }, "ja": { "flag": "🇯🇵", "name": "Japanese", "native_name": "日本語" }, "jv_id": { "flag": "🇮🇩", "name": "Javanese (Indonesia)", "native_name": "basa jawa" }, "ka": { "flag": "🇬🇪", "name": "Georgian", "native_name": "ქართული" }, "kg": { "flag": "🇨🇬", "name": "Kongo", "native_name": "KiKongo" }, "kj": { "flag": "🇳🇦", "name": "Kuanyama", "native_name": "Oshikwanyama" }, "kk": { "flag": "🇰🇿", "name": "Kazakh", "native_name": "Қазақ" }, "kl": { "flag": "🇬🇱", "name": "Kalaallisut", "native_name": "kalaallisut" }, "km": { "flag": "🇰🇭", "name": "Khmer", "native_name": "ខ្មែរ" }, "ko": { "flag": "🇰🇷", "name": "Korean", "native_name": "한국어" }, "ks": { "flag": "🇮🇳", "name": "Kashmiri", "native_name": "کٲشُر" }, "ku": { "flag": "🇮🇶", "name": "Kurdish", "native_name": "Kurdî", }, "lo": { "flag": "🇱🇦", "name": "Lao", "native_name": "ລາວ" }, "lt": { "flag": "🇱🇹", "name": "Lithuanian", "native_name": "Lietuvių" }, "lv": { "flag": "🇱🇻", "name": "Latvian", "native_name": "Latviešu" }, "mg": { "flag": "🇲🇬", "name": "Malagasy", "native_name": "Malagasy" }, "mg_mg": { "flag": "🇲🇬", "name": "Malagasy (Madagascar)", "native_name": "malagasy" }, "mh": { "flag": "🇲🇭", "name": "Marshallese", "native_name": "Kajin M̧ajeļ" }, "mk": { "flag": "🇲🇰", "name": "Macedonian", "native_name": "Македонски" }, "mn_mn": { "flag": "🇲🇳", "name": "Mongolian (Mongolia)", "native_name": "Монгол хэл" }, "mr_in": { "flag": "🇮🇳", "name": "Marathi (India)", "native_name": "मराठी" }, "ms": { "flag": "🇲🇾", "name": "Malay", "native_name": "Bahasa Melayu" }, "my": { "flag": "🇲🇲", "name": "Burmese", "native_name": "မြန်မာဘာသာ" }, "na": { "flag": "🇳🇷", "name": "Nauruan", "native_name": "Dorerin Naoero" }, "nb": { "flag": "🇳🇴", "name": "Norwegian Bokmål", "native_name": "Norsk Bokmål" }, "ng": { "flag": "🇳🇦", "name": "Ndonga", "native_name": "Oshindonga" }, "nl": { "flag": "🇳🇱", "name": "Dutch", "native_name": "Nederlands" }, "om": { "flag": "🇪🇹", "name": "Oromo", "native_name": "Afaan Oromoo" }, "os": { "flag": "🇷🇺", "name": "Ossetian", "native_name": "ирон æвзаг" }, "pl": { "flag": "🇵🇱", "name": "Polish", "native_name": "Polski" }, "pt": { "flag": "🇵🇹", "name": "Portuguese", "native_name": "Português" }, "pt_br": { "flag": "🇧🇷", "name": "Portuguese (Brazil)", "native_name": "Português (Brasil)" }, "qu": { "flag": "🇵🇪", "name": "Quechua", "native_name": "Runa Simi" }, "ro": { "flag": "🇷🇴", "name": "Romanian", "native_name": "Română" }, "ru": { "flag": "🇷🇺", "name": "Russian", "native_name": "Русский" }, "rw": { "flag": "🇷🇼", "name": "Kinyarwanda", "native_name": "Ikinyarwanda" }, "sc": { "flag": "🇮🇹", "name": "Sardinian", "native_name": "sardu" }, "sg": { "flag": "🇨🇫", "name": "Sango", "native_name": "yângâ tî sängö" }, "sk": { "flag": "🇸🇰", "name": "Slovak", "native_name": "Slovenčina" }, "sl": { "flag": "🇸🇮", "name": "Slovenian", "native_name": "Slovenščina" }, "sm": { "flag": "🇼🇸", "name": "Samoan", "native_name": "Gagana Samoa" }, "sn": { "flag": "🇿🇼", "name": "Shona", "native_name": "chiShona" }, "so": { "flag": "🇸🇴", "name": "Somali", "native_name": "Soomaaliga" }, "sr": { "flag": "🇷🇸", "name": "Serbian", "native_name": "Српски" }, "ss": { "flag": "🇸🇿", "name": "Swati", "native_name": "SiSwati" }, "st": { "flag": "🇱🇸", "name": "Southern Sotho", "native_name": "Sesotho" }, "su_id": { "flag": "🇮🇩", "name": "Sundanese (Indonesia)", "native_name": "basa sunda" }, "sv": { "flag": "🇸🇪", "name": "Swedish", "native_name": "Svenska" }, "th": { "flag": "🇹🇭", "name": "Thai", "native_name": "ไทย" }, "tk": { "flag": "🇹🇲", "name": "Turkmen", "native_name": "Türkmen" }, "tn": { "flag": "🇧🇼", "name": "Tswana", "native_name": "Setswana" }, "to": { "flag": "🇹🇴", "name": "Tongan", "native_name": "faka-Tonga" }, "tr": { "flag": "🇹🇷", "name": "Turkish", "native_name": "Türkçe", }, "ts": { "flag": "🇿🇦", "name": "Tsonga", "native_name": "Xitsonga" }, "ts_zw": { "flag": "🇿🇼", "name": "Tsonga (Zimbabwe)", "native_name": "xitsonga" }, "ty": { "flag": "🇵🇫", "name": "Tahitian", "native_name": "Reo Tahiti" }, "uk": { "flag": "🇺🇦", "name": "Ukrainian", "native_name": "Українська" }, "ur": { "flag": "🇵🇰", "name": "Urdu", "native_name": "اردو" }, "uz": { "flag": "🇺🇿", "name": "Uzbek", "native_name": "oʻzbek" }, "ve": { "flag": "🇿🇦", "name": "Venda", "native_name": "Tshivenda" }, "vi": { "flag": "🇻🇳", "name": "Vietnamese", "native_name": "Tiếng Việt" }, "vo": { "flag": "🌍", "name": "Volapük", "native_name": "Volapük" }, "wa": { "flag": "🇧🇪", "name": "Walloon", "native_name": "walon" }, "xh": { "flag": "🇿🇦", "name": "Xhosa", "native_name": "isiXhosa" }, "yi": { "flag": "🌍", "name": "Yiddish", "native_name": "ייִדיש" }, "yo": { "flag": "🇳🇬", "name": "Yoruba", "native_name": "Yorùbá" }, "zh": { "flag": "🇨🇳", "name": "Chinese", "native_name": "中文" }, "zh_hk": { "flag": "🇭🇰", "name": "Chinese (Hong Kong)", "native_name": "中文(香港)" }, "zh_tw": { "flag": "🇹🇼", "name": "Chinese (Taiwan)", "native_name": "中文(台灣)" }, "zu": { "flag": "🇿🇦", "name": "Zulu", "native_name": "isiZulu" } } if True: import toml from pathlib import Path def process_data_dict(data: dict, existing: dict): for key, value in data.items(): if key not in existing: existing[key] = value continue if isinstance(value, dict): if isinstance(existing[key], dict): process_data_dict(value, existing[key]) continue existing[key] = value def process_data(data: dict, obj): for key, value in data.items(): if not hasattr(obj, key): continue existing = getattr(obj, key) if isinstance(existing, dict): process_data_dict(value, existing) continue if isinstance(value, dict): process_data(value, getattr(obj, key)) continue setattr(obj, key, value) config_file = Path("stsg.toml") if config_file.exists() and config_file.is_file(): with config_file.open("r") as f: process_data(toml.loads(f.read()), config)