-
Notifications
You must be signed in to change notification settings - Fork 900
/
parsers.py
40 lines (35 loc) · 1.43 KB
/
parsers.py
1
2
3
4
5
6
7
8
9
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
import importlib
from utils.config import ZONES_CONFIG, EXCHANGES_CONFIG
# Prepare all parsers
CONSUMPTION_PARSERS = {}
PRODUCTION_PARSERS = {}
PRODUCTION_PER_MODE_FORECAST_PARSERS = {}
PRODUCTION_PER_UNIT_PARSERS = {}
EXCHANGE_PARSERS = {}
PRICE_PARSERS = {}
CONSUMPTION_FORECAST_PARSERS = {}
GENERATION_FORECAST_PARSERS = {}
EXCHANGE_FORECAST_PARSERS = {}
PARSER_KEY_TO_DICT = {
'consumption': CONSUMPTION_PARSERS,
'production': PRODUCTION_PARSERS,
'productionPerUnit': PRODUCTION_PER_UNIT_PARSERS,
'productionPerModeForecast': PRODUCTION_PER_MODE_FORECAST_PARSERS,
'exchange': EXCHANGE_PARSERS,
'price': PRICE_PARSERS,
'consumptionForecast': CONSUMPTION_FORECAST_PARSERS,
'generationForecast': GENERATION_FORECAST_PARSERS,
'exchangeForecast': EXCHANGE_FORECAST_PARSERS,
}
# Read all zones
for zone_id, zone_config in ZONES_CONFIG.items():
for parser_key, v in zone_config.get('parsers', {}).items():
mod_name, fun_name = v.split('.')
mod = importlib.import_module('parsers.%s' % mod_name)
PARSER_KEY_TO_DICT[parser_key][zone_id] = getattr(mod, fun_name)
# Read all exchanges
for exchange_id, exchange_config in EXCHANGES_CONFIG.items():
for parser_key, v in exchange_config.get('parsers', {}).items():
mod_name, fun_name = v.split('.')
mod = importlib.import_module('parsers.%s' % mod_name)
PARSER_KEY_TO_DICT[parser_key][exchange_id] = getattr(mod, fun_name)