From d30e1086f3767bfe29923829629e000f1f9b7812 Mon Sep 17 00:00:00 2001 From: Yusur Princeps Date: Wed, 30 Jul 2025 13:00:41 +0200 Subject: [PATCH] add BabelTowerError --- CHANGELOG.md | 2 +- src/suou/exceptions.py | 7 +++++++ src/suou/i18n.py | 6 +++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8510622..b89014a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ + Add module `calendar` with `want_*` date type conversion utilities and `age_and_days()` + Move obsolete stuff to `obsolete` package (includes configparse 0.3 as of now) + Add `redact` module with `redact_url_password()` -+ Add more exceptions: `NotFoundError()` ++ Add more exceptions: `NotFoundError()`, `BabelTowerError()` ## 0.4.0 diff --git a/src/suou/exceptions.py b/src/suou/exceptions.py index c1fe496..7952bc7 100644 --- a/src/suou/exceptions.py +++ b/src/suou/exceptions.py @@ -45,6 +45,13 @@ class NotFoundError(LookupError): """ The requested item was not found. """ + # Werkzeug et al. + code = 404 + +class BabelTowerError(NotFoundError): + """ + The user requested a language that cannot be understood. + """ __all__ = ( 'MissingConfigError', 'MissingConfigWarning', 'LexError', 'InconsistencyError', 'NotFoundError' diff --git a/src/suou/i18n.py b/src/suou/i18n.py index 7080019..254c104 100644 --- a/src/suou/i18n.py +++ b/src/suou/i18n.py @@ -23,6 +23,7 @@ import os import toml from typing import Mapping +from .exceptions import BabelTowerError class IdentityLang: ''' @@ -81,7 +82,10 @@ class I18n(metaclass=ABCMeta): def load_lang(self, name: str, filename: str | None = None) -> I18nLang: if not filename: filename = self.filename_tmpl.format(lang=name, ext=self.EXT) - data = self.load_file(filename) + try: + data = self.load_file(filename) + except OSError as e: + raise BabelTowerError(f'unknown language: {name}') from e l = self.langs.setdefault(name, I18nLang()) l.update(data[name] if name in data else data) if name != self.default_lang: