code: def _unmarshal_parts(pkg_reader, package, part_factory):
          
          parts = {}
          for partname, content_type, reltype, blob in pkg_reader.iter_sparts():
              parts[partname] = part_factory(
                  partname, content_type, reltype, blob, package
              )
          return parts
docs: Return a dictionary of |Part| instances unmarshalled from
          *pkg_reader*, keyed by partname. Side-effect is that each part in
          *pkg_reader* is constructed using *part_factory*.