Source code for pylasu.astruntime

import contextlib

from .model.naming import ReferenceByName
from .model.position import Point, Position
from .validation.validation import Result, Issue, IssueType, IssueSeverity


[docs] def unserialize_result(json_result, root_unserializer) -> Result: result = Result(root=root_unserializer(json_result['root']) if 'root' in json_result else None) result.issues = [unserialize_issue(issue) for issue in json_result['issues']] if 'issues' in json_result else [] return result
[docs] def unserialize_issue(json_issue) -> Issue: return Issue( type=unserialize_issue_type(json_issue['type']) if json_issue['type'] else None, message=json_issue['message'] if json_issue['message'] else None, severity=unserialize_issue_severity(json_issue['severity']) if json_issue['severity'] else None, position=unserialize_position(json_issue['position']) if json_issue['position'] else None )
[docs] def unserialize_issue_type(json_issue_type) -> IssueType or None: with contextlib.suppress(Exception): return IssueType[json_issue_type]
[docs] def unserialize_issue_severity(json_issue_severity) -> IssueSeverity: with contextlib.suppress(Exception): return IssueSeverity[json_issue_severity]
[docs] def check_type(json, expected_type): if "#type" not in json: raise Exception("type not specified, expected %s" % expected_type) if json["#type"] != expected_type: raise Exception("unexpected type, expected %s but found %s" % (expected_type, json["#type"]))
[docs] def unserialize_point(json_point): return Point( line=json_point['line'] if 'line' in json_point else None, column=json_point['column'] if 'column' in json_point else None, )
[docs] def unserialize_position(json_position): return Position( start=unserialize_point(json_position['start']) if 'start' in json_position else None, end=unserialize_point(json_position['end']) if 'end' in json_position else None )
[docs] def unserialize_reference_by_name(json_reference_by_name): return ReferenceByName( name=json_reference_by_name['name'] if 'name' in json_reference_by_name else None )
[docs] def unserialize_long(json): return json