build.app   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 29
dl 0
loc 49
rs 10
c 0
b 0
f 0
wmc 6

4 Functions

Rating   Name   Duplication   Size   Complexity  
A register_extensions() 0 4 1
A create_app() 0 22 3
A register_views() 0 4 1
A register_hooks() 0 6 1
1
from flask import Flask
2
from werkzeug.exceptions import HTTPException
3
4
from app.misc.log import log
5
6
7
def register_extensions(flask_app: Flask):
8
    from app import extensions
9
10
    extensions.cors.init_app(flask_app)
11
12
13
def register_views(flask_app: Flask):
14
    from app.views import route
15
16
    route(flask_app)
17
18
19
def register_hooks(flask_app: Flask):
20
    from app.hooks.error import broad_exception_handler
21
    from app.hooks.request_context import after_request
22
23
    flask_app.after_request(after_request)
24
    flask_app.register_error_handler(Exception, broad_exception_handler)
25
26
27
def create_app(*config_cls) -> Flask:
28
    config_cls = [
29
        config() if isinstance(config, type) else config for config in config_cls
30
    ]
31
32
    log(
33
        message="Flask application initialized with {}".format(
34
            ", ".join([config.__class__.__name__ for config in config_cls])
35
        ),
36
        keyword="INFO",
37
    )
38
39
    flask_app = Flask(__name__)
40
41
    for config in config_cls:
42
        flask_app.config.from_object(config)
43
44
    register_extensions(flask_app)
45
    register_views(flask_app)
46
    register_hooks(flask_app)
47
48
    return flask_app
49