1
1
2
+ from logging import Logger
3
+ from logging import getLogger
2
4
3
- import logging
5
+ from os import sep as osSep
4
6
5
- import configparser
6
7
from configparser import ConfigParser
8
+ from configparser import SectionProxy
7
9
8
10
from ast import literal_eval as make_tuple
9
11
10
- from pkg_resources import resource_filename
11
-
12
12
from albow .themes .Theme import Theme
13
13
14
14
15
15
class ThemeLoader :
16
16
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"
20
18
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 "
23
21
22
+ def __init__ (self , themePkg : str = DEFAULT_PKG , themeFilename : str = DEFAULT_THEME_FILENAME ):
23
+ """
24
24
"""
25
- self .logger = logging .getLogger (__name__ )
25
+ self .logger : Logger = getLogger (__name__ )
26
+
27
+ self .themePkg : str = themePkg
28
+ self .themeFilename : str = themeFilename
26
29
27
- self .themePkg = themePkg
28
- self .themeFilename = themeFilename
29
- self .themeFullFilename = self .findThemeFile ()
30
30
self .topLevelClassThemes = []
31
31
self .themeRoot = None
32
32
33
33
def load (self ):
34
34
35
- config = configparser .ConfigParser ()
36
- config .read (self .themeFullFilename )
35
+ config = ConfigParser ()
37
36
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' )
39
41
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 ])
41
47
42
48
self .extractThemeInstances (config )
43
49
self .augmentInstancesWithBase ()
@@ -56,13 +62,7 @@ def augmentInstancesWithBase(self):
56
62
setattr (embeddedTheme , "base" , baseTheme )
57
63
self .logger .debug (f"Theme { embeddedTheme } has new base { baseTheme } " )
58
64
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 :
66
66
67
67
themeName = classDict ["name" ]
68
68
0 commit comments