11from dataclasses import dataclass , field
22
33
4+ @dataclass
5+ class Variable :
6+ type : str | None = None
7+ docs : str = ""
8+ value : str = ""
9+
10+
411@dataclass
512class Template :
613 name : str = ""
714 path : str = ""
815 extends : str | None = None
916 blocks : list [str ] | None = None
10- context : dict = field (default_factory = dict )
17+ context : dict [ str , Variable ] = field (default_factory = dict )
1118
1219
1320@dataclass
@@ -22,7 +29,7 @@ class Tag:
2229 name : str = ""
2330 docs : str = ""
2431 source : str = ""
25- inner_tags : list [str ] = ""
32+ inner_tags : list [str ] = field ( default_factory = list )
2633 closing_tag : str = ""
2734
2835
@@ -44,12 +51,12 @@ class Library:
4451class WorkspaceIndex :
4552 src_path : str = ""
4653 env_path : str = ""
47- file_watcher_globs : [str ] = field (default_factory = list )
48- static_files : [str ] = field (default_factory = list )
54+ file_watcher_globs : list [str ] = field (default_factory = list )
55+ static_files : list [str ] = field (default_factory = list )
4956 urls : dict [str , Url ] = field (default_factory = dict )
5057 libraries : dict [str , Library ] = field (default_factory = dict )
5158 templates : dict [str , Template ] = field (default_factory = dict )
52- global_template_context : dict [str , str ] = field (default_factory = dict )
59+ global_template_context : dict [str , Variable ] = field (default_factory = dict )
5360
5461 def update (self , django_data : dict ):
5562 self .file_watcher_globs = django_data .get (
@@ -91,8 +98,26 @@ def update(self, django_data: dict):
9198 }
9299
93100 self .templates = {
94- name : Template (name = name , ** options )
101+ name : Template (
102+ name = name ,
103+ ** {
104+ ** options ,
105+ "context" : {
106+ var_name : (
107+ Variable (** type_ )
108+ if isinstance (type_ , dict )
109+ else Variable (type = type_ )
110+ )
111+ for var_name , type_ in options .get ("context" , {}).items ()
112+ },
113+ },
114+ )
95115 for name , options in django_data .get ("templates" , {}).items ()
96116 }
97117
98- self .global_template_context = django_data .get ("global_template_context" , {})
118+ self .global_template_context = {
119+ name : (
120+ Variable (** type_ ) if isinstance (type_ , dict ) else Variable (type = type_ )
121+ )
122+ for name , type_ in django_data .get ("global_template_context" , {}).items ()
123+ }
0 commit comments