def read(stream: BinaryIO, errors: str = 'surrogateescape') -> Tuple['Drawing', 'Auditor']: """ Read a DXF document from a binary-stream similar to :func:`ezdxf.read`, but this function will detect the text encoding automatically and repair as much flaws as possible, runs the required audit process afterwards and returns the DXF document and the :class:`Auditor`. Args: stream: data stream to load in binary read mode errors: specify decoding error handler - "surrogateescape" to preserve possible binary data (default) - "ignore" to use the replacement char U+FFFD "\ufffd" for invalid data - "strict" to raise an :class:`UnicodeDecodeError` exception for invalid data Raises: DXFStructureError: for invalid or corrupted DXF structures UnicodeDecodeError: if `errors` is "strict" and a decoding error occurs """ from ezdxf.document import Drawing recover_tool = Recover.run(stream, errors=errors) doc = Drawing() doc._load_section_dict(recover_tool.section_dict) auditor = Auditor(doc) for code, msg in recover_tool.errors: auditor.add_error(code, msg) for code, msg in recover_tool.fixes: auditor.fixed_error(code, msg) auditor.run() return doc, auditor
def _load_and_audit_document(recover_tool) -> Tuple['Drawing', 'Auditor']: from ezdxf.document import Drawing doc = Drawing() doc._load_section_dict(recover_tool.section_dict) auditor = Auditor(doc) for code, msg in recover_tool.errors: auditor.add_error(code, msg) for code, msg in recover_tool.fixes: auditor.fixed_error(code, msg) auditor.run() return doc, auditor