consolidator

Форк
0
/
debugHandlers.py 
62 строки · 2.4 Кб
1
import os
2
from typing import Any
3
import pandas as pd
4
from MyLogger import MyLogger
5
from MyConfig import MyConfig
6
from MainConsolidator import MainConsolidator
7
import sys
8

9
cur_path = os.path.dirname(os.path.realpath(__file__))
10
conf = f"{cur_path}\\consolidation.json"
11
logger = MyLogger(name="debug",log_file="debug.log",outStream=sys.stdout,mode="w")
12
cfg = MyConfig(conf)
13
hlist:list = cfg.get("handlers",None)
14
# hdict:dict = cfg.get("level2 handlers",None)
15
hdict={}
16
for item in hlist:
17
    hdict[item["key"]]=item["module"]
18
compiled_handlers={}
19
modules = ["Рулон"]
20

21
def handler_cc(rec:pd.Series,consolidator:MainConsolidator)->pd.Series:
22
    try:
23
        result:pd.Series={"f1":0}
24
        module_name=f"__{hdict[rec['Производство2']]}__"
25
        # logger.info(f"module {module_name}")
26
        namespace={"consolidator":consolidator , "record":rec, "result":result,"__name__":module_name}
27
        cc=compiled_handlers[rec["Производство2"]]
28
        exec(cc,namespace)
29
        return namespace["result"]
30
    except Exception as exp: 
31
        logger.error("handler2 error",exc_info=True)
32

33
def get_compiled(key:str)->Any:
34
    cc=None
35
    try:
36
        with open(f"{cur_path}\\handlers2\\{hdict[key]}.py",mode="r",encoding="utf-8") as f:
37
                code=f.read()
38
                f.close()
39
                cc = compile(code,"","exec")
40
                logger.debug(f"handler '{key}' compiled")
41
        return cc
42
    except: raise
43

44

45
if __name__=="__main__":   
46
    try:
47
        # module = "Рулон"
48
        code:str=None
49
        df = pd.read_excel(f"{cur_path}\\output\\input_data.xlsx",sheet_name="Sheet1")
50
        cols=df.columns.to_list()+["Продукт УП","error","Время укрупнения"]
51
        modules_df = df[["Производство2"]].drop_duplicates().to_dict("list")
52
        for key in modules_df["Производство2"]: compiled_handlers[key]=get_compiled(key)
53
        # df = df[df["Производство2"]==module]
54
        logger.info("input data loaded")
55
        consolidator = MainConsolidator(f"{cur_path}\\debug.log",logStream=sys.stdout)
56
        consolidator.load_guids("D:\\work\\Укрупнение\\current\\справочники2")
57
        df = df.apply(lambda row: handler_cc(row,consolidator), axis=1)
58
        logger.info("handlers applied")
59
        df[cols].to_excel(f"{cur_path}\\output\\debug_data1.xlsx",index=False)
60
        logger.info("file saved")
61
    except:
62
        logger.error("error",exc_info=True)
63

64
    
65

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.