28 lines
805 B
Python
28 lines
805 B
Python
# Copyright (c) 2022, Manfred Moitzi
|
|
# License: MIT License
|
|
from typing import NamedTuple, Union
|
|
import os
|
|
from ezdxf.lldxf import const
|
|
|
|
|
|
class DWGInfo(NamedTuple):
|
|
version: str = "unknown"
|
|
release: str = "unknown"
|
|
|
|
|
|
def dwg_info(data: bytes) -> DWGInfo:
|
|
"""Returns the version and release name of a DWG file."""
|
|
if len(data) < 6:
|
|
return DWGInfo("invalid", "invalid")
|
|
version = data[:6].decode(errors="ignore")
|
|
if version[:4] != "AC10":
|
|
return DWGInfo("invalid", "invalid")
|
|
release = const.acad_release.get(version, "unknown")
|
|
return DWGInfo(version, release)
|
|
|
|
|
|
def dwg_file_info(file: Union[str, os.PathLike]) -> DWGInfo:
|
|
"""Returns the version and release name of a DWG file."""
|
|
with open(file, "rb") as fp:
|
|
return dwg_info(fp.read(6))
|