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: object

One runtime-class schema declared by a CVersionMap.

__init__(class_name: str, version: int) None
class skppy.parser_legacy.schema.ArchiveSchema[source]

Bases: object

Immutable 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: object

Parsed 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.