config.py 1.16 KB
Newer Older
崔为之's avatar
崔为之 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/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
# @File        : config.py
# @Description :
"""


from typing import Any

from flask import Flask
崔为之's avatar
崔为之 committed
17
from loguru import logger
崔为之's avatar
崔为之 committed
18 19 20 21 22 23 24 25 26 27 28 29 30


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

崔为之's avatar
崔为之 committed
31
    def __getattr__(self, name):
崔为之's avatar
崔为之 committed
32
        """
崔为之's avatar
崔为之 committed
33
        Get a config value as an attribute.
崔为之's avatar
崔为之 committed
34

崔为之's avatar
崔为之 committed
35 36
        :param name: The name of the config key.
        :return: The value for the provided key, or None if it does not exist.
崔为之's avatar
崔为之 committed
37
        """
崔为之's avatar
崔为之 committed
38 39 40 41 42
        try:
            return self.app.config[name]
        except KeyError:
            logger.error(f'Key {name} error')
            raise KeyError(f'Key {name} error')
崔为之's avatar
崔为之 committed
43 44 45 46 47 48

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

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