After watching ArjanCodes video on dataclasses,
I've been trying to add variables to a python dataclass from a json config file to format the font style of a print function printT in Jupyterlab.
I use ANSI escapes for the formatting which doesn't work anymore if I import the variables to the dataclass. Instead of formatting the text, the ANSI code get's printed out.
# config.json
{
    "lb" : "\n",
    "solid_line"  : "'___'*20 + config.lb",
    "dotted_line" : "'---'*20 + config.lb",
    
    "BOLD" : "\\033[1m",
    "END" : "\\033[0m"
}
# config.py
from dataclasses import dataclass
import json
@dataclass
class PrintConfig:
    lb : str
    solid_line  : str 
    dotted_line : str 
    BOLD : str
    END : str 
        
def read_config(config_file : str) -> PrintConfig:
 
    with open(config_file, 'r') as file:      
        data = json.load(file)      
        return(PrintConfig(**data))
# helper.py
from config import read_config
config = read_config('config.json')
def printT(title,linebreak= True,addLine = True, lineType = config.solid_line,toDisplay = None):
    '''
    Prints a line break, the input text and a solid line.
        
    Inputs:
    title     = as string 
    linebreak = True(default) or False; Adds a line break before printing the title 
    addLine   = True(default) or False; Adds a line after printing the title
    lineType  = solid_line(default) or dotted_line; Defines line type 
    toDisplay = displays input, doesnt work with df.info(),because info executes during input
    '''
    if linebreak:
        print(config.lb)
    print(config.BOLD + title + config.END)
    if addLine:
        print(lineType)
    if toDisplay is not None:
        display(toDisplay)
# test.ipynb
from helper import printT
printT('Hello World')
Output
\033[1mHello World\033[0m
'___'*20 + config.lb
Desired result
Hello World
It works if I use eval if addLine: print(eval(lineType)) but I'd like to get deeper insights into the mechanics here. Is there a way of getting it to work without eval?
Also this part "solid_line"  : "'___'*20 + config.lb" feels wrong.
 
     
     
    