Application   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 20
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A _initialize_settings() 0 9 2
A __init__() 0 3 1
1
from typing import Type
2
3
import mountapi.core
4
from mountapi.core.exceptions import InvalidRunner
5
from mountapi.core.settings import AbstractSettings
6
from mountapi.runners import AbstractRunner
7
from mountapi.schema import AbstractSchema
8
9
10
class Application:
11
    def __init__(self, settings: Type[AbstractSettings], routes: list) -> None:
12
        self._settings = settings
13
        self._initialize_settings(routes)
14
15
    def _initialize_settings(self, routes: list):
16
        self._settings.init_resource('schema', routes=routes)
17
        self._settings.init_resource('router', schema=self._settings.schema)
18
        self._settings.init_resource('runner', router=self._settings.router)
19
20
        mountapi.core.settings = self._settings
21
22
        if isinstance(self._settings.schema, AbstractSchema):
23
            self._settings.schema.build()
24
25
    def run(self) -> None:
26
        if isinstance(self._settings.runner, AbstractRunner):
27
            self._settings.runner.run(self._settings)
28
        else:
29
            raise InvalidRunner()
30