|
1 | 1 | # This file was generated by jschema_to_python version 1.2.3.
|
2 | 2 |
|
| 3 | +import json |
| 4 | +from typing import Dict |
| 5 | +from attrs import has, fields |
| 6 | +from cattrs import Converter |
| 7 | +from cattrs.gen import make_dict_unstructure_fn, make_dict_structure_fn, override |
| 8 | + |
3 | 9 | from ._sarif_log import SarifLog
|
4 | 10 | from ._address import Address
|
5 | 11 | from ._artifact import Artifact
|
|
53 | 59 | from ._version_control_details import VersionControlDetails
|
54 | 60 | from ._web_request import WebRequest
|
55 | 61 | from ._web_response import WebResponse
|
| 62 | + |
| 63 | + |
| 64 | +def _generate_sarif_report_cattrs_converter() -> Converter: |
| 65 | + converter = Converter() |
| 66 | + |
| 67 | + def _unstructure(cls): |
| 68 | + return make_dict_unstructure_fn( |
| 69 | + cls, |
| 70 | + converter, |
| 71 | + **{ |
| 72 | + a.name: override( |
| 73 | + rename=a.metadata["schema_property_name"], |
| 74 | + omit_if_default=True, |
| 75 | + ) |
| 76 | + for a in fields(cls) |
| 77 | + }, |
| 78 | + ) |
| 79 | + |
| 80 | + def _structure(cls): |
| 81 | + return make_dict_structure_fn( |
| 82 | + cls, |
| 83 | + converter, |
| 84 | + **{ |
| 85 | + a.name: override( |
| 86 | + rename=a.metadata["schema_property_name"], |
| 87 | + ) |
| 88 | + for a in fields(cls) |
| 89 | + }, |
| 90 | + ) |
| 91 | + |
| 92 | + converter.register_unstructure_hook_factory(has, _unstructure) |
| 93 | + converter.register_structure_hook_factory(has, _structure) |
| 94 | + return converter |
| 95 | + |
| 96 | + |
| 97 | +_converter = _generate_sarif_report_cattrs_converter() |
| 98 | + |
| 99 | + |
| 100 | +def to_dict(sarif_log: SarifLog) -> Dict: |
| 101 | + return _converter.unstructure(sarif_log, SarifLog) |
| 102 | + |
| 103 | + |
| 104 | +def to_json(sarif_log: SarifLog, indent=2) -> str: |
| 105 | + obj = to_dict(sarif_log) |
| 106 | + return json.dumps(obj, indent=indent) |
| 107 | + |
| 108 | + |
| 109 | +def from_dict(data: Dict) -> SarifLog: |
| 110 | + return _converter.structure(data, SarifLog) |
| 111 | + |
| 112 | + |
| 113 | +def from_json(data: str) -> SarifLog: |
| 114 | + return from_dict(json.loads(data)) |
0 commit comments