)]}'
{"placement/objects/allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"285b664076c088e19b7b6f31f7a3c49ad791a123","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        summary \u003d summaries.get(rp_id)"},{"line_number":483,"context_line":"        if not summary:"},{"line_number":484,"context_line":"            pids \u003d provider_ids[rp_id]"},{"line_number":485,"context_line":"            parent_id \u003d pids.parent_id"},{"line_number":486,"context_line":"            parent_uuid \u003d provider_ids[parent_id].uuid if parent_id else None"},{"line_number":487,"context_line":"            summary \u003d ProviderSummary("},{"line_number":488,"context_line":"                resource_provider\u003drp_obj.ResourceProvider("}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_19420d3f","line":485,"updated":"2019-08-06 15:37:13.000000000","message":"You\u0027ve explained this in the commit message, but I don\u0027t love how tightly coupled this is. I think this is a good change, but it would be worth clarifying above (L472) that \"all providers involved in our operation\" includes all tree members around a given provider that\u0027s materially (resource/trait) involved in the operation), and adding a comment here explaining why we can count on provider_ids[parent_id] being present in the provider_ids dict.","commit_id":"34b2d381273c76076f4b1a2d3cd405da92aff33c"}],"placement/objects/research_context.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"285b664076c088e19b7b6f31f7a3c49ad791a123","unresolved":false,"context_lines":[{"line_number":301,"context_line":"def provider_ids_from_rp_ids(context, rp_ids):"},{"line_number":302,"context_line":"    \"\"\"Given an iterable of internal resource provider IDs, returns a dict,"},{"line_number":303,"context_line":"    keyed by internal provider Id, of sqla objects describing those providers."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    :returns: dict, keyed by internal provider Id, of sqla objects"},{"line_number":306,"context_line":"    :param rp_ids: iterable of internal provider IDs to look up"},{"line_number":307,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_b99f39b2","line":304,"updated":"2019-08-06 15:37:13.000000000","message":"It also wouldn\u0027t hurt my feelings if this docstring explicitly called out the structure of the returned dict, listing the actual fields, and highlighting that only the parent\u0027s *internal* ID is present in a given record.","commit_id":"34b2d381273c76076f4b1a2d3cd405da92aff33c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e22816a06eee4802bbc3093250b7f8c6aabd37f9","unresolved":false,"context_lines":[{"line_number":301,"context_line":"def provider_ids_from_rp_ids(context, rp_ids):"},{"line_number":302,"context_line":"    \"\"\"Given an iterable of internal resource provider IDs, returns a dict,"},{"line_number":303,"context_line":"    keyed by internal provider Id, of sqla objects describing those providers."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    :returns: dict, keyed by internal provider Id, of sqla objects"},{"line_number":306,"context_line":"    :param rp_ids: iterable of internal provider IDs to look up"},{"line_number":307,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_1a966d40","line":304,"in_reply_to":"7faddb67_b99f39b2","updated":"2019-08-07 10:27:01.000000000","message":"Done","commit_id":"34b2d381273c76076f4b1a2d3cd405da92aff33c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"41e1ff403fd52e1a8ef3975ce12a9fae256dcfb4","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        me.c.parent_provider_id.label(\u0027parent_id\u0027),"},{"line_number":321,"context_line":"        me.c.root_provider_id.label(\u0027root_id\u0027),"},{"line_number":322,"context_line":"    ]"},{"line_number":323,"context_line":"    sel \u003d sa.select(cols).where(me.c.id.in_(rp_ids))"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    ret \u003d {}"},{"line_number":326,"context_line":"    for r in context.session.execute(sel, {\u0027rps\u0027: list(rp_ids)}):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_9ecebcb2","line":323,"updated":"2019-08-08 09:18:21.000000000","message":"This shouldn\u0027t have happened, it was a rebase mistake. I\u0027ll fix it in: https://review.opendev.org/#/c/675084/","commit_id":"8da825efc93b4379a4cd2edcff54acfad88f76d3"}]}
