def _read_lockfile_dict(self, d): """Read a lockfile dictionary into this environment.""" roots = d['roots'] self.concretized_user_specs = [Spec(r['spec']) for r in roots] self.concretized_order = [r['hash'] for r in roots] json_specs_by_hash = d['concrete_specs'] root_hashes = set(self.concretized_order) specs_by_hash = {} for dag_hash, node_dict in json_specs_by_hash.items(): specs_by_hash[dag_hash] = Spec.from_node_dict(node_dict) for dag_hash, node_dict in json_specs_by_hash.items(): for dep_name, dep_hash, deptypes in ( Spec.dependencies_from_node_dict(node_dict)): specs_by_hash[dag_hash]._add_dependency( specs_by_hash[dep_hash], deptypes) self.specs_by_hash = dict( (x, y) for x, y in specs_by_hash.items() if x in root_hashes)
def _read_lockfile_dict(self, d): """Read a lockfile dictionary into this environment.""" roots = d['roots'] self.concretized_user_specs = [Spec(r['spec']) for r in roots] self.concretized_order = [r['hash'] for r in roots] json_specs_by_hash = d['concrete_specs'] root_hashes = set(self.concretized_order) specs_by_hash = {} for dag_hash, node_dict in json_specs_by_hash.items(): specs_by_hash[dag_hash] = Spec.from_node_dict(node_dict) for dag_hash, node_dict in json_specs_by_hash.items(): for dep_name, dep_hash, deptypes in ( Spec.dependencies_from_node_dict(node_dict)): specs_by_hash[dag_hash]._add_dependency( specs_by_hash[dep_hash], deptypes) self.specs_by_hash = dict( (x, y) for x, y in specs_by_hash.items() if x in root_hashes)
def _read_lockfile_dict(self, d): """Read a lockfile dictionary into this environment.""" roots = d['roots'] self.concretized_user_specs = [Spec(r['spec']) for r in roots] self.concretized_order = [r['hash'] for r in roots] json_specs_by_hash = d['concrete_specs'] root_hashes = set(self.concretized_order) specs_by_hash = {} for dag_hash, node_dict in json_specs_by_hash.items(): specs_by_hash[dag_hash] = Spec.from_node_dict(node_dict) for dag_hash, node_dict in json_specs_by_hash.items(): for dep_name, dep_hash, deptypes in ( Spec.dependencies_from_node_dict(node_dict)): specs_by_hash[dag_hash]._add_dependency( specs_by_hash[dep_hash], deptypes) # If we are reading an older lockfile format (which uses dag hashes # that exclude build deps), we use this to convert the old # concretized_order to the full hashes (preserving the order) old_hash_to_new = {} self.specs_by_hash = {} for _, spec in specs_by_hash.items(): dag_hash = spec.dag_hash() build_hash = spec.build_hash() if dag_hash in root_hashes: old_hash_to_new[dag_hash] = build_hash if (dag_hash in root_hashes or build_hash in root_hashes): self.specs_by_hash[build_hash] = spec if old_hash_to_new: # Replace any older hashes in concretized_order with hashes # that include build deps self.concretized_order = [ old_hash_to_new.get(h, h) for h in self.concretized_order ]