From 934a8e210e37f75d7c72403a02457dfe1a1efd69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 23 Feb 2018 12:23:59 +0100 Subject: [PATCH] Clarified type refinement, simplified API, custom exception for get_pointer Type refinement is now only done with BlendFileBlock.refine_type(), and no longer with sdna_index_refine parameters to various functions. This simplifies the API at the expense of having to call two simple functions instead of one more complex one. --- blender_asset_tracer/blendfile/__init__.py | 87 +++++++++---------- blender_asset_tracer/blendfile/exceptions.py | 9 ++ blender_asset_tracer/blendfile/iterators.py | 9 ++ tests/blendfiles/with_sequencer.blend | Bin 0 -> 421784 bytes tests/test_blendfile_loading.py | 67 +++++++++++++- 5 files changed, 123 insertions(+), 49 deletions(-) create mode 100644 blender_asset_tracer/blendfile/iterators.py create mode 100644 tests/blendfiles/with_sequencer.blend diff --git a/blender_asset_tracer/blendfile/__init__.py b/blender_asset_tracer/blendfile/__init__.py index 91c041b..db27905 100644 --- a/blender_asset_tracer/blendfile/__init__.py +++ b/blender_asset_tracer/blendfile/__init__.py @@ -315,15 +315,30 @@ class BlendFileBlock: def dna_type_name(self) -> str: return self.dna_type.dna_type_id.decode('ascii') - def refine_type_from_index(self, sdna_index_next): # TODO(Sybren): port to BAT - assert (type(sdna_index_next) is int) - sdna_index_curr = self.sdna_index - self.bfile.ensure_subtype_smaller(sdna_index_curr, sdna_index_next) - self.sdna_index = sdna_index_next + def refine_type_from_index(self, sdna_index: int): + """Change the DNA Struct associated with this block. - def refine_type(self, dna_type_id): # TODO(Sybren): port to BAT - assert (type(dna_type_id) is bytes) - self.refine_type_from_index(self.bfile.sdna_index_from_id[dna_type_id]) + Use to make a block type more specific, for example when you have a + modifier but need to access it as SubSurfModifier. + + :param sdna_index: the SDNA index of the DNA type. + """ + assert type(sdna_index) is int + sdna_index_curr = self.sdna_index + self.bfile.ensure_subtype_smaller(sdna_index_curr, sdna_index) + self.sdna_index = sdna_index + + def refine_type(self, dna_type_id: bytes): + """Change the DNA Struct associated with this block. + + Use to make a block type more specific, for example when you have a + modifier but need to access it as SubSurfModifier. + + :param dna_type_id: the name of the DNA type. + """ + assert isinstance(dna_type_id, bytes) + sdna_index = self.bfile.sdna_index_from_id[dna_type_id] + self.refine_type_from_index(sdna_index) def get_file_offset(self, path: bytes) -> (int, int): # TODO(Sybren): port to BAT """Return (offset, length)""" @@ -338,7 +353,6 @@ class BlendFileBlock: def get(self, path: dna.FieldPath, default=..., - sdna_index_refine=None, null_terminated=True, as_str=True, base_index=0, @@ -365,30 +379,17 @@ class BlendFileBlock: ofs += (self.size // self.count) * base_index self.bfile.fileobj.seek(ofs, os.SEEK_SET) - dna_struct = self._get_struct(sdna_index_refine) + dna_struct = self.bfile.structs[self.sdna_index] return dna_struct.field_get( self.bfile.header, self.bfile.fileobj, path, default=default, null_terminated=null_terminated, as_str=as_str, ) - def _get_struct(self, sdna_index_refine) -> dna.Struct: - """Gets the (possibly refined) struct for this block.""" - - if sdna_index_refine is None: - index = self.sdna_index - else: - self.bfile.ensure_subtype_smaller(self.sdna_index, sdna_index_refine) - index = sdna_index_refine - - dna_struct = self.bfile.structs[index] - return dna_struct - def get_recursive_iter(self, path: dna.FieldPath, path_root: dna.FieldPath = b'', default=..., - sdna_index_refine=None, null_terminated=True, as_str=True, base_index=0, @@ -408,8 +409,7 @@ class BlendFileBlock: try: # Try accessing as simple property yield (path_full, - self.get(path_full, default, sdna_index_refine, null_terminated, as_str, - base_index)) + self.get(path_full, default, null_terminated, as_str, base_index)) except exceptions.NoReaderImplemented as ex: # This was not a simple property, so recurse into its DNA Struct. dna_type = ex.dna_type @@ -451,38 +451,31 @@ class BlendFileBlock: return dna_struct.field_set( self.bfile.header, self.bfile.handle, path, value) - # --------------- - # Utility get/set - # - # avoid inline pointer casting def get_pointer( - self, path, + self, path: dna.FieldPath, default=..., - sdna_index_refine=None, base_index=0, - ): - if sdna_index_refine is None: - sdna_index_refine = self.sdna_index - result = self.get(path, default, sdna_index_refine=sdna_index_refine, base_index=base_index) + ) -> typing.Union[None, 'BlendFileBlock', typing.Any]: + """Same as get() but dereferences a pointer. - # default + :raises exceptions.SegmentationFault: when there is no datablock with + the pointed-to address. + """ + result = self.get(path, default=default, base_index=base_index) + + # If it's not an integer, we have no pointer to follow and this may + # actually be a non-pointer property. if type(result) is not int: return result - assert (self.bfile.structs[sdna_index_refine].field_from_path( - self.bfile.header, self.bfile.handle, path).dna_name.is_pointer) - if result != 0: - # possible (but unlikely) - # that this fails and returns None - # maybe we want to raise some exception in this case - return self.bfile.find_block_from_offset(result) - else: + if result == 0: return None - # ---------------------- - # Python convenience API + try: + return self.bfile.block_from_addr[result] + except KeyError: + raise exceptions.SegmentationFault('address does not exist', path, result) - # dict like access def __getitem__(self, path: dna.FieldPath): return self.get(path, as_str=False) diff --git a/blender_asset_tracer/blendfile/exceptions.py b/blender_asset_tracer/blendfile/exceptions.py index 8721671..e23e566 100644 --- a/blender_asset_tracer/blendfile/exceptions.py +++ b/blender_asset_tracer/blendfile/exceptions.py @@ -52,3 +52,12 @@ class NoReaderImplemented(NotImplementedError): super().__init__(message) self.dna_name = dna_name self.dna_type = dna_type + + +class SegmentationFault(Exception): + """Raised when a pointer to a non-existant datablock was dereferenced.""" + + def __init__(self, message: str, field_path, address: int): + super().__init__(message) + self.field_path = field_path + self.address = address diff --git a/blender_asset_tracer/blendfile/iterators.py b/blender_asset_tracer/blendfile/iterators.py new file mode 100644 index 0000000..3e0c775 --- /dev/null +++ b/blender_asset_tracer/blendfile/iterators.py @@ -0,0 +1,9 @@ +from . import BlendFileBlock + + +def listbase(block: BlendFileBlock) -> BlendFileBlock: + """Generator, yields all blocks in the ListBase linked list.""" + while block: + yield block + next_ptr = block[b'next'] + block = block.bfile.find_block_from_address(next_ptr) diff --git a/tests/blendfiles/with_sequencer.blend b/tests/blendfiles/with_sequencer.blend new file mode 100644 index 0000000000000000000000000000000000000000..31701d7f6bae88aa470f658e84a85ecbd19621b7 GIT binary patch literal 421784 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 literal 0 HcmV?d00001 diff --git a/tests/test_blendfile_loading.py b/tests/test_blendfile_loading.py index 9415cbe..039eb33 100644 --- a/tests/test_blendfile_loading.py +++ b/tests/test_blendfile_loading.py @@ -4,20 +4,26 @@ import unittest import os from blender_asset_tracer import blendfile +from blender_asset_tracer.blendfile import iterators -class BlendFileBlockTest(unittest.TestCase): +class AbstractBlendFileTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.blendfiles = pathlib.Path(__file__).with_name('blendfiles') def setUp(self): - self.bf = blendfile.BlendFile(self.blendfiles / 'basic_file.blend') + self.bf = None def tearDown(self): if self.bf: self.bf.close() + +class BlendFileBlockTest(AbstractBlendFileTest): + def setUp(self): + self.bf = blendfile.BlendFile(self.blendfiles / 'basic_file.blend') + def test_loading(self): self.assertFalse(self.bf.is_compressed) @@ -148,3 +154,60 @@ class BlendFileBlockTest(unittest.TestCase): ob = self.bf.code_index[b'OB'][0] assert isinstance(ob, blendfile.BlendFileBlock) self.assertEqual('OBümlaut', ob[b'id', b'name'].decode()) + + +class PointerTest(AbstractBlendFileTest): + def setUp(self): + self.bf = blendfile.BlendFile(self.blendfiles / 'with_sequencer.blend') + + def test_get_pointer_and_listbase(self): + scenes = self.bf.code_index[b'SC'] + self.assertEqual(1, len(scenes), 'expecting 1 scene') + scene = scenes[0] + self.assertEqual(b'SCScene', scene[b'id', b'name']) + + ed_ptr = scene[b'ed'] + self.assertEqual(140051431100936, ed_ptr) + + ed = scene.get_pointer(b'ed') + self.assertEqual(140051431100936, ed.addr_old) + + seqbase = ed.get_pointer((b'seqbase', b'first')) + self.assertIsNotNone(seqbase) + + types = { + b'SQBlack': 28, + b'SQCross': 8, + b'SQPink': 28, + } + seq = None + for seq in iterators.listbase(seqbase): + seq.refine_type(b'Sequence') + name = seq[b'name'] + expected_type = types[name] + self.assertEqual(expected_type, seq[b'type']) + + # The last 'seq' from the loop should be the last in the list. + seq_next = seq.get_pointer(b'next') + self.assertIsNone(seq_next) + + def test_refine_sdna_by_name(self): + scene = self.bf.code_index[b'SC'][0] + ed = scene.get_pointer(b'ed') + + seq = ed.get_pointer((b'seqbase', b'first')) + + # This is very clear to me: + seq.refine_type(b'Sequence') + self.assertEqual(b'SQBlack', seq[b'name']) + self.assertEqual(28, seq[b'type']) + + def test_refine_sdna_by_idx(self): + scene = self.bf.code_index[b'SC'][0] + ed = scene.get_pointer(b'ed') + seq = ed.get_pointer((b'seqbase', b'first')) + + sdna_idx_sequence = self.bf.sdna_index_from_id[b'Sequence'] + seq.refine_type_from_index(sdna_idx_sequence) + self.assertEqual(b'SQBlack', seq[b'name']) + self.assertEqual(28, seq[b'type'])