Generate a 4-tuple `(partname, blob, reltype, srels)` for each of the parts in `phys_reader` by walking the relationship graph rooted at srels.
(phys_reader, srels, visited_partnames=None)
| 63 | |
| 64 | @staticmethod |
| 65 | def _walk_phys_parts(phys_reader, srels, visited_partnames=None): |
| 66 | """Generate a 4-tuple `(partname, blob, reltype, srels)` for each of the parts |
| 67 | in `phys_reader` by walking the relationship graph rooted at srels.""" |
| 68 | if visited_partnames is None: |
| 69 | visited_partnames = [] |
| 70 | for srel in srels: |
| 71 | if srel.is_external: |
| 72 | continue |
| 73 | partname = srel.target_partname |
| 74 | if partname in visited_partnames: |
| 75 | continue |
| 76 | visited_partnames.append(partname) |
| 77 | reltype = srel.reltype |
| 78 | part_srels = PackageReader._srels_for(phys_reader, partname) |
| 79 | blob = phys_reader.blob_for(partname) |
| 80 | yield (partname, blob, reltype, part_srels) |
| 81 | next_walker = PackageReader._walk_phys_parts(phys_reader, part_srels, visited_partnames) |
| 82 | for partname, blob, reltype, srels in next_walker: |
| 83 | yield (partname, blob, reltype, srels) |
| 84 | |
| 85 | |
| 86 | class _ContentTypeMap: |
no test coverage detected