From 86af05e8239bffeb87d3ceceb32164e4380d5068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Wed, 28 Feb 2018 12:42:27 +0100 Subject: [PATCH] Added recursion into library blend files. --- blender_asset_tracer/blendfile/__init__.py | 16 +++++ blender_asset_tracer/bpathlib.py | 3 + blender_asset_tracer/tracer/__init__.py | 38 +++++++++-- tests/abstract_test.py | 4 +- tests/blendfiles/doubly_linked.blend | Bin 0 -> 343176 bytes tests/blendfiles/linked_cube.blend | Bin 484100 -> 484396 bytes tests/test_tracer.py | 71 +++++++++++++++------ 7 files changed, 108 insertions(+), 24 deletions(-) create mode 100644 tests/blendfiles/doubly_linked.blend diff --git a/blender_asset_tracer/blendfile/__init__.py b/blender_asset_tracer/blendfile/__init__.py index 433bb58..7125e60 100644 --- a/blender_asset_tracer/blendfile/__init__.py +++ b/blender_asset_tracer/blendfile/__init__.py @@ -30,6 +30,7 @@ import tempfile import typing from . import exceptions, dna_io, dna, header +from blender_asset_tracer import bpathlib log = logging.getLogger(__name__) @@ -277,6 +278,21 @@ class BlendFile: return structs, sdna_index_from_id + def abspath(self, relpath: bpathlib.BlendPath) -> bpathlib.BlendPath: + """Construct an absolute path from a blendfile-relative path.""" + + if relpath.is_absolute(): + return relpath + + bfile_dir = self.filepath.absolute().parent + root = bpathlib.BlendPath(bfile_dir) + abspath = relpath.absolute(root) + + my_log = self.log.getChild('abspath') + my_log.info('Resolved %s relative to %s to %s', relpath, self.filepath, abspath) + + return abspath + class BlendFileBlock: """ diff --git a/blender_asset_tracer/bpathlib.py b/blender_asset_tracer/bpathlib.py index f31a4fb..c894a33 100644 --- a/blender_asset_tracer/bpathlib.py +++ b/blender_asset_tracer/bpathlib.py @@ -5,6 +5,7 @@ or vice versa. """ import os.path +import pathlib import string @@ -12,6 +13,8 @@ class BlendPath(bytes): """A path within Blender is always stored as bytes.""" def __new__(cls, path): + if isinstance(path, pathlib.Path): + path = str(path) # handle as string, which is encoded to bytes below. if isinstance(path, str): # As a convenience, when a string is given, interpret as UTF-8. return bytes.__new__(cls, path.encode('utf-8')) diff --git a/blender_asset_tracer/tracer/__init__.py b/blender_asset_tracer/tracer/__init__.py index 2fd3380..186f049 100644 --- a/blender_asset_tracer/tracer/__init__.py +++ b/blender_asset_tracer/tracer/__init__.py @@ -2,25 +2,53 @@ import logging import pathlib import typing -from blender_asset_tracer import blendfile +from blender_asset_tracer import blendfile, bpathlib from . import result, block_walkers log = logging.getLogger(__name__) codes_to_skip = { - b'ID', b'WM', b'SN', # These blocks never have external assets. + # These blocks never have external assets: + b'ID', b'WM', b'SN', + + # These blocks are skipped for now, until we have proof they point to + # assets otherwise missed: + b'GR', b'WO', b'BR', b'LS', } -def deps(bfilepath: pathlib.Path) -> typing.Iterator[result.BlockUsage]: - """Open the blend file and report its dependencies.""" +def deps(bfilepath: pathlib.Path, recursive=False) -> typing.Iterator[result.BlockUsage]: + """Open the blend file and report its dependencies. + + :param bfilepath: File to open. + :param recursive: Also report dependencies inside linked blend files. + """ log.info('Tracing %s', bfilepath) with blendfile.BlendFile(bfilepath) as bfile: for block in asset_holding_blocks(bfile): yield from block_walkers.from_block(block) - # TODO: handle library blocks for recursion. + if recursive and block.code == b'LI': + yield from _recurse_deps(block) + + +def _recurse_deps(lib_block: blendfile.BlendFileBlock) -> typing.Iterator[result.BlockUsage]: + """Call deps() on the file linked from the library block.""" + if lib_block.code != b'LI': + raise ValueError('Expected LI block, not %r' % lib_block) + + relpath = bpathlib.BlendPath(lib_block[b'name']) + abspath = lib_block.bfile.abspath(relpath) + + # Convert bytes to pathlib.Path object so we have a nice interface to work with. + # This assumes the path is encoded in UTF-8. + path = pathlib.Path(abspath.decode()) + if not path.exists(): + log.warning('Linked blend file %s (%s) does not exist; skipping.', relpath, path) + return + + yield from deps(path, recursive=True) def asset_holding_blocks(bfile: blendfile.BlendFile) -> typing.Iterator[blendfile.BlendFileBlock]: diff --git a/tests/abstract_test.py b/tests/abstract_test.py index 269b136..d9f4f60 100644 --- a/tests/abstract_test.py +++ b/tests/abstract_test.py @@ -7,7 +7,9 @@ class AbstractBlendFileTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.blendfiles = pathlib.Path(__file__).with_name('blendfiles') - logging.basicConfig(level=logging.INFO) + logging.basicConfig( + format='%(asctime)-15s %(levelname)8s %(name)s %(message)s', + level=logging.INFO) def setUp(self): self.bf = None diff --git a/tests/blendfiles/doubly_linked.blend b/tests/blendfiles/doubly_linked.blend new file mode 100644 index 0000000000000000000000000000000000000000..cbf54dd11d7aae9ad99c2a9575695b082f18fb8c GIT binary patch literal 343176 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 literal 0 HcmV?d00001 diff --git a/tests/blendfiles/linked_cube.blend b/tests/blendfiles/linked_cube.blend index e7baf3d494e4d05c7240a8e7d94a814eaeb8e396..9173341ef13c8f6efb394c3bcb422fa09fbb6319 100644 GIT binary patch delta 74873 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 delta 74770 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

--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 Xz{h88b=-fvv2$GWjh$OOJMjMjrhh8S diff --git a/tests/test_tracer.py b/tests/test_tracer.py index d638ebc..c20de51 100644 --- a/tests/test_tracer.py +++ b/tests/test_tracer.py @@ -1,7 +1,9 @@ import collections import logging +import typing from blender_asset_tracer import tracer, blendfile +from blender_asset_tracer.blendfile import dna from abstract_test import AbstractBlendFileTest # Mimicks a BlockUsage, but without having to set the block to an expected value. @@ -34,8 +36,8 @@ class AssetHoldingBlocksTest(AbstractTracerTest): # shouldn't be yielded. self.assertEqual(2, len(block.code)) - # Library blocks should not be yielded either. - self.assertNotEqual(b'LI', block.code) + # World blocks should not yielded either. + self.assertNotEqual(b'WO', block.code) # Do some arbitrary tests that convince us stuff is read well. if block.code == b'SC': @@ -57,27 +59,36 @@ class AssetHoldingBlocksTest(AbstractTracerTest): # The numbers here are taken from whatever the code does now; I didn't # count the actual blocks in the actual blend file. self.assertEqual(965, len(self.bf.blocks)) - self.assertEqual(37, blocks_seen) + self.assertEqual(4, blocks_seen) class DepsTest(AbstractTracerTest): + @staticmethod + def field_name(field: dna.Field) -> typing.Optional[str]: + if field is None: + return None + return field.name.name_full.decode() + + def assert_deps(self, blend_fname, expects: dict, recursive=False): + for dep in tracer.deps(self.blendfiles / blend_fname, recursive=recursive): + actual_type = dep.block.dna_type.dna_type_id.decode() + actual_full_field = self.field_name(dep.path_full_field) + actual_dirname = self.field_name(dep.path_dir_field) + actual_basename = self.field_name(dep.path_base_field) + + actual = Expect(actual_type, actual_full_field, actual_dirname, actual_basename, + dep.asset_path, dep.is_sequence) - def assert_deps(self, blend_fname, expects): - for dep in tracer.deps(self.blendfiles / blend_fname): exp = expects[dep.block_name] - self.assertEqual(exp.type, dep.block.dna_type.dna_type_id.decode()) - self.assertEqual(exp.asset_path, dep.asset_path) - self.assertEqual(exp.is_sequence, dep.is_sequence) - - if exp.full_field is not None: - self.assertEqual(exp.full_field, dep.path_full_field.name.name_full.decode()) - if exp.dirname_field is not None: - self.assertEqual(exp.dirname_field, dep.path_dir_field.name.name_full.decode()) - if exp.basename_field is not None: - self.assertEqual(exp.basename_field, dep.path_base_field.name.name_full.decode()) - - # Each expectation should be seen only once. - del expects[dep.block_name] + if isinstance(exp, set): + self.assertIn(actual, exp, msg='for block %s' % dep.block_name) + exp.discard(actual) + if not exp: + # Don't leave empty sets in expects. + del expects[dep.block_name] + else: + self.assertEqual(exp, actual, msg='for block %s' % dep.block_name) + del expects[dep.block_name] # All expected uses should have been seen. self.assertEqual({}, expects, 'Expected results were not seen.') @@ -161,3 +172,27 @@ class DepsTest(AbstractTracerTest): self.assert_deps('linked_cube.blend', { b'LILib': Expect('Library', 'name[1024]', None, None, b'//basic_file.blend', False), }) + + def test_deps_recursive(self): + self.assert_deps('doubly_linked.blend', { + b'LILib': { + # From doubly_linked.blend + Expect('Library', 'name[1024]', None, None, b'//linked_cube.blend', False), + + # From linked_cube.blend + Expect('Library', 'name[1024]', None, None, b'//basic_file.blend', False), + }, + b'LILib.002': Expect('Library', 'name[1024]', None, None, + b'//material_textures.blend', False), + + # From material_texture.blend + b'IMbrick_dotted_04-bump': Expect( + 'Image', 'name[1024]', None, None, + b'//textures/Bricks/brick_dotted_04-bump.jpg', False), + b'IMbrick_dotted_04-color': Expect( + 'Image', 'name[1024]', None, None, + b'//textures/Bricks/brick_dotted_04-color.jpg', False), + b'IMbuildings_roof_04-color': Expect( + 'Image', 'name[1024]', None, None, + b'//textures/Textures/Buildings/buildings_roof_04-color.png', False), + }, recursive=True)