skppy.parser_legacy.schema¶
Represent product versions and per-file class schemas for legacy SKP.
Every pre-ZIP file carries a CVersionMap. ArchiveSchema keeps its
ordered entries and provides contextual lookup errors, while
require_verified_schema() rejects strict-layout classes before their
unknown bytes can disturb archive alignment.
Example
version = SketchUpFormatVersion.parse("{8.0.1}")
assert version.is_pre_zip
assert str(version) == "8.0.1"
- class skppy.parser_legacy.schema.ArchiveClassSchema[source]
Bases:
objectOne runtime-class schema declared by a CVersionMap.
- __init__(class_name: str, version: int) None
- class skppy.parser_legacy.schema.ArchiveSchema[source]
Bases:
objectImmutable per-file runtime-class schema lookup.
- __init__(file_version: SketchUpFormatVersion, entries: tuple[ArchiveClassSchema, ...]) None
- classmethod from_pairs(file_version: SketchUpFormatVersion, entries: Iterable[tuple[str, int]]) ArchiveSchema[source]
Create a schema from ordered CVersionMap class/version pairs.
- version_for(class_name: str) int[source]
Return one runtime-class schema or raise a contextual missing error.
- property versions: dict[str, int]
Return runtime-class schemas keyed by class name.
- skppy.parser_legacy.schema.LEGACY_CLASS_SCHEMAS: dict[str, int] = {'CArcCurve': 1, 'CAttribute': 0, 'CAttributeContainer': 0, 'CAttributeNamed': 1, 'CBackgroundImage': 10, 'CCamera': 5, 'CComponent': 11, 'CComponentBehavior': 5, 'CComponentDefinition': 10, 'CComponentInstance': 4, 'CConstructionGeometry': 0, 'CConstructionLine': 1, 'CConstructionPoint': 0, 'CCurve': 4, 'CDefinitionList': 0, 'CDib': 3, 'CDimension': 1, 'CDimensionLinear': 6, 'CDimensionRadial': 2, 'CDimensionStyle': 4, 'CDrawingElement': 9, 'CEdge': 2, 'CEdgeUse': 1, 'CEntity': 3, 'CFace': 3, 'CFaceTextureCoords': 4, 'CFontManager': 0, 'CGroup': 1, 'CImage': 1, 'CLayer': 2, 'CLayerManager': 4, 'CLoop': 1, 'CMaterial': 12, 'CMaterialManager': 4, 'CPageList': 1, 'CPolyline3d': 0, 'CRelationship': 0, 'CRelationshipMap': 0, 'CRenderingOptions': 36, 'CSectionPlane': 2, 'CShadowInfo': 7, 'CSkFont': 1, 'CSketchCS': 0, 'CSketchUpModel': 22, 'CSketchUpPage': 1, 'CSkpStyle': 1, 'CSkpStyleManager': 2, 'CText': 9, 'CTextStyle': 5, 'CTexture': 6, 'CThumbnail': 1, 'CVertex': 0, 'CViewPage': 12, 'CWatermark': 1, 'CWatermarkManager': 2}
Complete class schema map observed in SketchUp 8 archives.
- class skppy.parser_legacy.schema.SketchUpFormatVersion[source]
Bases:
objectParsed SketchUp product version from a legacy file envelope.
- __init__(major: int, minor: int = 0, build: int = 0) None
- property is_pre_zip: bool
Return whether this is a known MFC/CArchive-era SketchUp version.
- classmethod parse(value: str) SketchUpFormatVersion[source]
Parse a product version such as
"{8.0.1}".
- skppy.parser_legacy.schema.require_verified_schema(class_name: str, schema: int, *, file_version: str, offset: int, object_index: int | None) None[source]
Reject a known strict-layout class before consuming its payload.