1#!/usr/bin/env python3 2__package__ = 'configurator.pyodide' 3 4from pathlib import Path 5from tempfile import TemporaryDirectory 6 7from scenario_config.default_populator import DefaultValuePopulatingStage 8from scenario_config.pipeline import PipelineObject, PipelineEngine 9from scenario_config.validator import ValidatorConstructionByFileStage, SyntacticValidationStage 10from scenario_config.xml_loader import XMLLoadStage 11 12from .pyodide import ( 13 convert_result, write_temp_file, 14 nuc11_scenario, schema_dir 15) 16 17 18def main(scenario): 19 pipeline = PipelineEngine(["scenario_path", "schema_path", "datachecks_path"]) 20 pipeline.add_stages([ 21 ValidatorConstructionByFileStage(), 22 XMLLoadStage("schema"), 23 XMLLoadStage("scenario"), 24 DefaultValuePopulatingStage(), 25 SyntacticValidationStage(), 26 ]) 27 28 try: 29 with TemporaryDirectory() as tmpdir: 30 write_temp_file(tmpdir, { 31 'scenario.xml': scenario 32 }) 33 scenario_file_path = Path(tmpdir) / 'scenario.xml' 34 35 obj = PipelineObject( 36 scenario_path=scenario_file_path, 37 schema_path=schema_dir / 'scenario_structure.xsd', 38 datachecks_path=None 39 ) 40 pipeline.run(obj) 41 42 validate_result = obj.get("syntactic_errors") 43 return "\n\n".join(map(lambda x: x["message"], validate_result)) 44 except Exception as e: 45 return str(e) 46 47 48def test(): 49 print(main(nuc11_scenario)) 50 51 52if __name__ == '__main__': 53 test() 54