@@ -34,6 +34,7 @@ def grade_from_tree(
3434 submission_language = None ,
3535 locale : str = "en" ,
3636 pre_computed_results : Optional [Dict [str , TestResult ]] = None ,
37+ structural_analysis = None ,
3738 ) -> ResultTree :
3839 """Traverse the generic built criteria tree to resolve inputs, grades and report to ResultTree."""
3940 base_result = self .process_category (
@@ -43,6 +44,7 @@ def grade_from_tree(
4344 submission_language = submission_language ,
4445 locale = locale ,
4546 pre_computed_results = pre_computed_results ,
47+ structural_analysis = structural_analysis ,
4648 )
4749 root = RootResultNode (name = "root" , base = base_result )
4850
@@ -54,6 +56,7 @@ def grade_from_tree(
5456 submission_language = submission_language ,
5557 locale = locale ,
5658 pre_computed_results = pre_computed_results ,
59+ structural_analysis = structural_analysis ,
5760 )
5861 root .bonus = bonus_result
5962
@@ -65,6 +68,7 @@ def grade_from_tree(
6568 submission_language = submission_language ,
6669 locale = locale ,
6770 pre_computed_results = pre_computed_results ,
71+ structural_analysis = structural_analysis ,
6872 )
6973 root .penalty = penalty_result
7074
@@ -104,6 +108,7 @@ def __process_holder(
104108 submission_language = None ,
105109 locale : str = "en" ,
106110 pre_computed_results : Optional [Dict [str , TestResult ]] = None ,
111+ structural_analysis = None ,
107112 ) -> CategoryResultNode | SubjectResultNode :
108113 """Process a category or subject node and create corresponding result node."""
109114
@@ -128,6 +133,7 @@ def __process_holder(
128133 submission_language = submission_language ,
129134 locale = locale ,
130135 pre_computed_results = pre_computed_results ,
136+ structural_analysis = structural_analysis ,
131137 )
132138 for inner_subject in holder .subjects
133139 ]
@@ -144,6 +150,7 @@ def __process_holder(
144150 submission_language = submission_language ,
145151 locale = locale ,
146152 pre_computed_results = pre_computed_results ,
153+ structural_analysis = structural_analysis ,
147154 )
148155 for test in holder .tests
149156 ]
@@ -174,6 +181,7 @@ def process_subject(
174181 submission_language = None ,
175182 locale : str = "en" ,
176183 pre_computed_results : Optional [Dict [str , TestResult ]] = None ,
184+ structural_analysis = None ,
177185 ) -> SubjectResultNode :
178186 """Process a subject node from criteria tree and create result node."""
179187 return self .__process_holder (
@@ -183,6 +191,7 @@ def process_subject(
183191 submission_language = submission_language ,
184192 locale = locale ,
185193 pre_computed_results = pre_computed_results ,
194+ structural_analysis = structural_analysis ,
186195 )
187196
188197 def process_test (
@@ -193,6 +202,7 @@ def process_test(
193202 submission_language = None ,
194203 locale : str = "en" ,
195204 pre_computed_results : Optional [Dict [str , TestResult ]] = None ,
205+ structural_analysis = None ,
196206 ) -> TestResultNode :
197207 """Execute a test and create a test result node.
198208
@@ -230,6 +240,8 @@ def process_test(
230240 sandbox = sandbox ,
231241 locale = locale ,
232242 pre_computed_results = pre_computed_results ,
243+ structural_analysis = structural_analysis ,
244+ submission_language = submission_language ,
233245 ** test_params ,
234246 )
235247 return TestResultNode (
@@ -274,6 +286,7 @@ def process_category(
274286 submission_language = None ,
275287 locale : str = "en" ,
276288 pre_computed_results : Optional [Dict [str , TestResult ]] = None ,
289+ structural_analysis = None ,
277290 ) -> CategoryResultNode :
278291 """Process a category node from criteria tree and create result node."""
279292 return self .__process_holder (
@@ -283,4 +296,5 @@ def process_category(
283296 submission_language = submission_language ,
284297 locale = locale ,
285298 pre_computed_results = pre_computed_results ,
299+ structural_analysis = structural_analysis ,
286300 )
0 commit comments