config.py 1.23 KB
Newer Older
崔为之's avatar
崔为之 committed
1 2 3 4 5 6 7 8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
# @Version     : Python 3.11.4
# @Software    : Sublime Text 4
# @Author      : StudentCWZ
# @Email       : StudentCWZ@outlook.com
# @Date        : 2023/11/3 19:43
崔为之's avatar
崔为之 committed
9
# @File        : universal.py
崔为之's avatar
崔为之 committed
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
# @Description :
"""


from typing import Any

from flask import Flask
from loguru import logger

from application.libs import ConfigKeyError


class ConfigHelper:
    """
    The ConfigHelper class is a utility for fetching configuration values
    from a Flask application.

    :param app: The Flask application instance from which to fetch configuration values.
    """

    def __init__(self, app: Flask):
        self.app = app

    def __getattr__(self, name: str) -> Any:
        """
        Get a config value as an attribute.

        :param name: The name of the config key.
        :return: The value for the provided key, or None if it does not exist.
        """
        try:
            return self.app.config[name]
        except KeyError:
            logger.error(f'Key {name} not found in configuration')
            raise ConfigKeyError(name)

    def __repr__(self):
        return f"<ConfigHelper with app {self.app}>"

    def __str__(self):
        return f"ConfigHelper for app {self.app}"