11
2+ from logging import Logger
3+ from logging import getLogger
24
3- import logging
5+ from os import sep as osSep
46
5- import configparser
67from configparser import ConfigParser
8+ from configparser import SectionProxy
79
810from ast import literal_eval as make_tuple
911
10- from pkg_resources import resource_filename
11-
1212from albow .themes .Theme import Theme
1313
1414
1515class ThemeLoader :
1616
17- DEFAULT_PKG = "albow.themes.resources"
18- DEFAULT_THEME_FILENAME = "default-theme.ini"
19- ROOT_THEME_NAME = "root"
17+ DEFAULT_THEME_FILENAME : str = "default-theme.ini"
2018
21- def __init__ ( self , themePkg : str = DEFAULT_PKG , themeFilename : str = DEFAULT_THEME_FILENAME ):
22- "" "
19+ DEFAULT_PKG : str = "resources"
20+ ROOT_THEME_NAME : str = "root "
2321
22+ def __init__ (self , themePkg : str = DEFAULT_PKG , themeFilename : str = DEFAULT_THEME_FILENAME ):
23+ """
2424 """
25- self .logger = logging .getLogger (__name__ )
25+ self .logger : Logger = getLogger (__name__ )
26+
27+ self .themePkg : str = themePkg
28+ self .themeFilename : str = themeFilename
2629
27- self .themePkg = themePkg
28- self .themeFilename = themeFilename
29- self .themeFullFilename = self .findThemeFile ()
3030 self .topLevelClassThemes = []
3131 self .themeRoot = None
3232
3333 def load (self ):
3434
35- config = configparser .ConfigParser ()
36- config .read (self .themeFullFilename )
35+ config = ConfigParser ()
3736
38- self .themeRoot = self .loadAClass (config [ThemeLoader .ROOT_THEME_NAME ])
37+ import pkgutil
38+
39+ bThemeData = pkgutil .get_data (__name__ , f"{ self .themePkg } { osSep } { self .themeFilename } " )
40+ themeData = bThemeData .decode ('ascii' )
3941
40- self .logger .debug (f"Initial themeRoot: { self .themeRoot } " )
42+ self .logger .debug (f"{ themeData = } " )
43+
44+ config .read_string (themeData )
45+
46+ self .themeRoot = self .loadAClass (config [ThemeLoader .ROOT_THEME_NAME ])
4147
4248 self .extractThemeInstances (config )
4349 self .augmentInstancesWithBase ()
@@ -56,13 +62,7 @@ def augmentInstancesWithBase(self):
5662 setattr (embeddedTheme , "base" , baseTheme )
5763 self .logger .debug (f"Theme { embeddedTheme } has new base { baseTheme } " )
5864
59- def findThemeFile (self ):
60-
61- fileName = resource_filename (self .themePkg , self .themeFilename )
62-
63- return fileName
64-
65- def loadAClass (self , classDict : dict ) -> Theme :
65+ def loadAClass (self , classDict : SectionProxy ) -> Theme :
6666
6767 themeName = classDict ["name" ]
6868
0 commit comments