in antlir/compiler/dep_graph.py [0:0]
def __init__(self, items: Set[ImageItem]) -> None:
self._item_reqs_provs = {}
self._path_item_reqs_provs = PathItemReqsProvs()
for item in items:
# pyre-fixme[16]: `ImageItem` has no attribute `requires`.
for req in item.requires():
if isinstance(req, RequirePath):
self._path_item_reqs_provs.add_requirement(req, item)
continue
self._get_item_reqs_provs(req).add_item_req(req, item)
# pyre-fixme[16]: `ImageItem` has no attribute `provides`.
for prov in item.provides():
if isinstance(prov, ProvidesPath):
self._path_item_reqs_provs.add_provider(prov, item)
continue
self._get_item_reqs_provs(prov.req).add_item_prov(prov, item)
# Validate that all requirements are satisfied.
self._path_item_reqs_provs.validate()
for irps in self._item_reqs_provs.values():
for item_req in irps.unfulfilled_item_reqs():
raise UserError(
f"{irps.item_provs} does not provide {item_req}"
)