)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f05d281f5a21ac14f10ce023b709b8ce10a71706","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7670f236_8c26d91e","updated":"2022-02-08 03:00:38.000000000","message":"Inline things can be in a followup.","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2fdaf1a3a4bca554eb00cfac068dbdbfa76624a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b3889dbb_ab20fcf5","updated":"2022-02-08 01:25:43.000000000","message":"Looks good, good testing, found only typos.","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7d9accb0c517aebec03bb308cd2d7096fd284f88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"94be52eb_6ba97da1","updated":"2022-02-08 21:42:56.000000000","message":"LGTM","commit_id":"47c93f09eb73075cc9da48694888f358dee7bdbe"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b2fc0c054fc87f1e8a7981ac5d9f595f66107cf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"83f77688_f4c5112a","updated":"2022-02-21 19:09:28.000000000","message":"+1 mainly because I am too tired to review this properly.\n\nI had planned to review the rest of this series today but ill try and do it tomorrow when\nI\u0027m less tired.\n\n\nI don\u0027t see anything a miss with this patch so ill likely upgrade to +2 when I take a look again tomorrow","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e9109d8a6ff4b6ce5b72ce5d8e2f64b3c65a841","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"817dcfa8_ece4afbe","updated":"2022-02-22 17:43:16.000000000","message":"i would still prefer to have a stricert validation personally but that might\nbe a premature optimaisation to require that \n(T1 or T2) and not T2 be simplfied to jsut \"T1\"\n\nit kind of feels like a premature optimisation to block\n(t1 or t2) and NOT t1 and not t2 however instead of just haveing the db reject it but\nwe can see if there is a perfroamce issue or not.\n\nas agreed on irc im upgrading my vote ot +2+w and we will revisit this if the performance\ndoes not meet our expectations later based on feedback from operators and testing.\n","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"}],"placement/lib.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f852b2b591e2234306263173324d392619150ced","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        self.in_tree \u003d in_tree"},{"line_number":81,"context_line":"        self.forbidden_aggs \u003d forbidden_aggs or set()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def __str__(self):"},{"line_number":84,"context_line":"        ret \u003d \u0027RequestGroup(use_same_provider\u003d%s\u0027 % str(self.use_same_provider)"},{"line_number":85,"context_line":"        ret +\u003d \u0027, resources\u003d{%s}\u0027 % \u0027, \u0027.join("},{"line_number":86,"context_line":"            \u0027%s:%d\u0027 % (rc, amount)"}],"source_content_type":"text/x-python","patch_set":8,"id":"cdd18018_007d023d","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":15},"updated":"2022-02-22 13:57:08.000000000","message":"this is why i did not +2 this last night.\ni spent 20 mins trying to figure out what this function did before i realised it was just a to string function and i realised i was way to tired to make any meaning full review of this code.\n\nthis moring this is still a to string function but i can actully recongnise that 😂","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f852b2b591e2234306263173324d392619150ced","unresolved":true,"context_lines":[{"line_number":216,"context_line":"        for suff, group in by_suffix.items():"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            for any_traits in group.required_traits:"},{"line_number":219,"context_line":"                if all("},{"line_number":220,"context_line":"                        trait in group.forbidden_traits"},{"line_number":221,"context_line":"                        for trait in any_traits"},{"line_number":222,"context_line":"                ):"}],"source_content_type":"text/x-python","patch_set":8,"id":"a837181a_1a9ee13c","line":219,"range":{"start_line":219,"start_character":19,"end_line":219,"end_character":22},"updated":"2022-02-22 13:57:08.000000000","message":"all or any?\nif any trait conflict we know its an issue and dont need to check the rest.\nwith the current mesage format we woudl just append the entire set of traits.\n\ni actully think you dont want  either all or any  and something like this would be better\n\n\nconflicts \u003d set(any_traits) \u0026 set(group.forbidden_traits)\nif conflicts: \n  conflicting_traits.append(\n      \u0027required%s: (%s)\u0027 % (suff, \u0027, \u0027.join(conflicts))\n\n...\n\ni dont know if ^ makes sense but i feel like we really just need to retrun the set of conflicting traits and we shoudl not need to check all of them one by one we should be abel to d a set intersection on them.\n\nif there is an intersetion between required and forbiden then we know its an error so we reprot the conflicts\n\nrather than the end user figuring that out we can tell tehm explcitly.","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e9109d8a6ff4b6ce5b72ce5d8e2f64b3c65a841","unresolved":true,"context_lines":[{"line_number":216,"context_line":"        for suff, group in by_suffix.items():"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            for any_traits in group.required_traits:"},{"line_number":219,"context_line":"                if all("},{"line_number":220,"context_line":"                        trait in group.forbidden_traits"},{"line_number":221,"context_line":"                        for trait in any_traits"},{"line_number":222,"context_line":"                ):"}],"source_content_type":"text/x-python","patch_set":8,"id":"04b264db_492cd257","line":219,"range":{"start_line":219,"start_character":19,"end_line":219,"end_character":22},"in_reply_to":"a837181a_1a9ee13c","updated":"2022-02-22 17:43:16.000000000","message":"we spoke about this on irc\n\ni had tought the intent was to block\n\n(T1 or T2) and not T2\n\nwhich coudl be simplifed to just T1 but that is not the case\nwe do not want to elimiate any overlap between forbiden traits and requrie traits\nwe want to block\n\n(t1 or t2) and NOT t1 and not t2\n\nin this case all option in the \"any trait\" group are blocked by the forbiden traits\n\nwe only want to allow cases were at least one of the required traits are not blocked by the forbiden traits. e.g. each group must have at least one allowable required trait for the group to be considerd satisfied.","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b2fc0c054fc87f1e8a7981ac5d9f595f66107cf3","unresolved":true,"context_lines":[{"line_number":289,"context_line":"                      \"DISK_GB\" 50,"},{"line_number":290,"context_line":"                  },"},{"line_number":291,"context_line":"                  required_traits\u003d["},{"line_number":292,"context_line":"                      {\"HW_CPU_X86_VMX\"},"},{"line_number":293,"context_line":"                      {\"CUSTOM_STORAGE_RAID\"},"},{"line_number":294,"context_line":"                  ],"},{"line_number":295,"context_line":"                  member_of\u003d["}],"source_content_type":"text/x-python","patch_set":8,"id":"40f5e308_5223cc22","line":292,"range":{"start_line":292,"start_character":22,"end_line":292,"end_character":41},"updated":"2022-02-21 19:09:28.000000000","message":"ack so we now expect normal traits request to be modelled as a list of sets of one element instead of a list of strings","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b2fc0c054fc87f1e8a7981ac5d9f595f66107cf3","unresolved":true,"context_lines":[{"line_number":316,"context_line":"                  },"},{"line_number":317,"context_line":"                  required_traits\u003d["},{"line_number":318,"context_line":"                      {\"CUSTOM_GOLD\"},"},{"line_number":319,"context_line":"                      {\"CUSTOM_FOO\", \"CUSTOM_BAR\"},"},{"line_number":320,"context_line":"                  forbidden_traits\u003d["},{"line_number":321,"context_line":"                      \"CUSTOM_PHYSNET_PUBLIC\","},{"line_number":322,"context_line":"                  ],"}],"source_content_type":"text/x-python","patch_set":8,"id":"ea8cb25d_7c8ba77a","line":319,"range":{"start_line":319,"start_character":22,"end_line":319,"end_character":51},"updated":"2022-02-21 19:09:28.000000000","message":"and the in: traits are translated to a set of traits.","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"}],"placement/objects/allocation_candidate.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2fdaf1a3a4bca554eb00cfac068dbdbfa76624a9","unresolved":true,"context_lines":[{"line_number":598,"context_line":"                      resource providers involved in the overall request"},{"line_number":599,"context_line":"    :param required_traits: A list of set of trait names where traits"},{"line_number":600,"context_line":"                            in the sets are in OR relationship while traits in"},{"line_number":601,"context_line":"                            two different sets are in AND relationship. Each"},{"line_number":602,"context_line":"                            *allocation request\u0027s set of providers* must"},{"line_number":603,"context_line":"                            *collectively* fulfill this trait expression."},{"line_number":604,"context_line":"    :param forbidden_traits: A set of trait names that a resource provider must"}],"source_content_type":"text/x-python","patch_set":6,"id":"0e63c542_9c6c5415","line":601,"range":{"start_line":601,"start_character":51,"end_line":601,"end_character":53},"updated":"2022-02-08 01:25:43.000000000","message":"an?","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4656c3e866c95113d32578c047462020d395beb","unresolved":true,"context_lines":[{"line_number":598,"context_line":"                      resource providers involved in the overall request"},{"line_number":599,"context_line":"    :param required_traits: A list of set of trait names where traits"},{"line_number":600,"context_line":"                            in the sets are in OR relationship while traits in"},{"line_number":601,"context_line":"                            two different sets are in AND relationship. Each"},{"line_number":602,"context_line":"                            *allocation request\u0027s set of providers* must"},{"line_number":603,"context_line":"                            *collectively* fulfill this trait expression."},{"line_number":604,"context_line":"    :param forbidden_traits: A set of trait names that a resource provider must"}],"source_content_type":"text/x-python","patch_set":6,"id":"a821c986_2c69d40a","line":601,"range":{"start_line":601,"start_character":51,"end_line":601,"end_character":53},"in_reply_to":"0e63c542_9c6c5415","updated":"2022-02-08 14:51:28.000000000","message":"hm, I believe it is \u0027in\u0027. I want to say what is the relationship between the different pieces.","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7d9accb0c517aebec03bb308cd2d7096fd284f88","unresolved":false,"context_lines":[{"line_number":598,"context_line":"                      resource providers involved in the overall request"},{"line_number":599,"context_line":"    :param required_traits: A list of set of trait names where traits"},{"line_number":600,"context_line":"                            in the sets are in OR relationship while traits in"},{"line_number":601,"context_line":"                            two different sets are in AND relationship. Each"},{"line_number":602,"context_line":"                            *allocation request\u0027s set of providers* must"},{"line_number":603,"context_line":"                            *collectively* fulfill this trait expression."},{"line_number":604,"context_line":"    :param forbidden_traits: A set of trait names that a resource provider must"}],"source_content_type":"text/x-python","patch_set":6,"id":"879ff2cc_ca827fd4","line":601,"range":{"start_line":601,"start_character":51,"end_line":601,"end_character":53},"in_reply_to":"a821c986_2c69d40a","updated":"2022-02-08 21:42:56.000000000","message":"OK, I see now.","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2fdaf1a3a4bca554eb00cfac068dbdbfa76624a9","unresolved":true,"context_lines":[{"line_number":630,"context_line":"    trait_matches \u003d ["},{"line_number":631,"context_line":"        any_traits.intersection(all_traits) for any_traits in required_traits]"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    # if some internal sets does not match to the provided traits then we have"},{"line_number":634,"context_line":"    # missing trait (trait set)"},{"line_number":635,"context_line":"    if not all(trait_matches):"},{"line_number":636,"context_line":"        missing_traits \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"6d46361f_19678d66","line":633,"range":{"start_line":633,"start_character":28,"end_line":633,"end_character":32},"updated":"2022-02-08 01:25:43.000000000","message":"do","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4656c3e866c95113d32578c047462020d395beb","unresolved":false,"context_lines":[{"line_number":630,"context_line":"    trait_matches \u003d ["},{"line_number":631,"context_line":"        any_traits.intersection(all_traits) for any_traits in required_traits]"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    # if some internal sets does not match to the provided traits then we have"},{"line_number":634,"context_line":"    # missing trait (trait set)"},{"line_number":635,"context_line":"    if not all(trait_matches):"},{"line_number":636,"context_line":"        missing_traits \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"66f8805c_b45f70dd","line":633,"range":{"start_line":633,"start_character":28,"end_line":633,"end_character":32},"in_reply_to":"6d46361f_19678d66","updated":"2022-02-08 14:51:28.000000000","message":"Done","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b2fc0c054fc87f1e8a7981ac5d9f595f66107cf3","unresolved":true,"context_lines":[{"line_number":104,"context_line":"                # NOTE(gibi): this optimization works by flattening the"},{"line_number":105,"context_line":"                # required_trait nested list. So if the request contains"},{"line_number":106,"context_line":"                # ((A or B) and C) trait request then we check if there is any"},{"line_number":107,"context_line":"                # RP with either A, B or C. If none then we know that there is"},{"line_number":108,"context_line":"                # no RP that can satisfy the original query either."},{"line_number":109,"context_line":"                trait_rps \u003d res_ctx.get_provider_ids_having_any_trait("},{"line_number":110,"context_line":"                    rg_ctx.context,"},{"line_number":111,"context_line":"                    {"}],"source_content_type":"text/x-python","patch_set":8,"id":"c690a5f0_ef3fac91","line":108,"range":{"start_line":107,"start_character":44,"end_line":108,"end_character":67},"updated":"2022-02-21 19:09:28.000000000","message":"this is only an optimisation if we don\u0027t have in: really\n\nsince we are doing more work by doing 2 separate queries.\n\nare we sure this optimisation pays of in the general case.","commit_id":"87e56f749bc62dfea0ed754232d07a96fd8780d7"}],"placement/objects/research_context.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2fdaf1a3a4bca554eb00cfac068dbdbfa76624a9","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.required_trait_names \u003d group.required_traits"},{"line_number":100,"context_line":"        # let\u0027s map the trait names to internal IDs this is useful for DB calls"},{"line_number":101,"context_line":"        # expecting trait IDs"},{"line_number":102,"context_line":"        self.required_traits \u003d []"},{"line_number":103,"context_line":"        # forbidden_traits is a dict mapping trait names to trait internal IDs"},{"line_number":104,"context_line":"        self.forbidden_traits \u003d {}"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e8d11029_42bf5bcb","line":102,"updated":"2022-02-08 01:25:43.000000000","message":"Note to self: this is the list of sets of required traits needed by _get_trees_with_traits().","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4656c3e866c95113d32578c047462020d395beb","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.required_trait_names \u003d group.required_traits"},{"line_number":100,"context_line":"        # let\u0027s map the trait names to internal IDs this is useful for DB calls"},{"line_number":101,"context_line":"        # expecting trait IDs"},{"line_number":102,"context_line":"        self.required_traits \u003d []"},{"line_number":103,"context_line":"        # forbidden_traits is a dict mapping trait names to trait internal IDs"},{"line_number":104,"context_line":"        self.forbidden_traits \u003d {}"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2ca0314a_de7e7b4a","line":102,"in_reply_to":"e8d11029_42bf5bcb","updated":"2022-02-08 14:51:28.000000000","message":"correct. I noted this in the comment now.","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"}],"placement/tests/functional/db/test_allocation_candidates.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"add4500218b7ce2cc75f00c6a46fef8d3ec50564","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3d80a96d_33f745f7","updated":"2022-01-26 17:02:11.000000000","message":"I need to add test coverage for the any-trait queries here to ProviderDBHelperTestCase and ProviderTreeDBHelperTestCase sets. That will cover the rest of the a_c code path including the changes for the research_context module","commit_id":"3c61226fef9cd114ff165b43dfa02fa3b269eda0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"48c6cf03303ca32448ac73bdfbff41f2eb6f05da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2a025f0e_f1b8b072","in_reply_to":"3d80a96d_33f745f7","updated":"2022-02-02 16:43:44.000000000","message":"Done","commit_id":"3c61226fef9cd114ff165b43dfa02fa3b269eda0"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2fdaf1a3a4bca554eb00cfac068dbdbfa76624a9","unresolved":true,"context_lines":[{"line_number":1866,"context_line":""},{"line_number":1867,"context_line":"        # Add disk to cn1, forbid sharing, and require the AVX2 trait."},{"line_number":1868,"context_line":"        # This should result in getting only cn1."},{"line_number":1869,"context_line":"        tb.add_inventory(cn1, orc.DISK_GB, 2048, allocation_ratio\u003d1.5)"},{"line_number":1870,"context_line":"        alloc_cands \u003d self._get_allocation_candidates("},{"line_number":1871,"context_line":"            {\u0027\u0027: placement_lib.RequestGroup("},{"line_number":1872,"context_line":"                use_same_provider\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":6,"id":"59bf49a4_ffe520b5","line":1869,"updated":"2022-02-08 01:25:43.000000000","message":"Note to self: this is where local disk inventory is added to cn1.","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4656c3e866c95113d32578c047462020d395beb","unresolved":false,"context_lines":[{"line_number":1866,"context_line":""},{"line_number":1867,"context_line":"        # Add disk to cn1, forbid sharing, and require the AVX2 trait."},{"line_number":1868,"context_line":"        # This should result in getting only cn1."},{"line_number":1869,"context_line":"        tb.add_inventory(cn1, orc.DISK_GB, 2048, allocation_ratio\u003d1.5)"},{"line_number":1870,"context_line":"        alloc_cands \u003d self._get_allocation_candidates("},{"line_number":1871,"context_line":"            {\u0027\u0027: placement_lib.RequestGroup("},{"line_number":1872,"context_line":"                use_same_provider\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":6,"id":"b1f25d35_b4fc4108","line":1869,"in_reply_to":"59bf49a4_ffe520b5","updated":"2022-02-08 14:51:28.000000000","message":"Ack","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2fdaf1a3a4bca554eb00cfac068dbdbfa76624a9","unresolved":true,"context_lines":[{"line_number":1896,"context_line":"            )}"},{"line_number":1897,"context_line":"        )"},{"line_number":1898,"context_line":""},{"line_number":1899,"context_line":"        # We have not yet associated the AVX2 trait to any provider, so we"},{"line_number":1900,"context_line":"        # should get zero allocation candidates"},{"line_number":1901,"context_line":"        p_sums \u003d alloc_cands.provider_summaries"},{"line_number":1902,"context_line":"        self.assertEqual([], alloc_cands.allocation_requests)"}],"source_content_type":"text/x-python","patch_set":6,"id":"51831b81_416e5801","line":1899,"range":{"start_line":1899,"start_character":41,"end_line":1899,"end_character":45},"updated":"2022-02-08 01:25:43.000000000","message":"SSE or SSE2?","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4656c3e866c95113d32578c047462020d395beb","unresolved":false,"context_lines":[{"line_number":1896,"context_line":"            )}"},{"line_number":1897,"context_line":"        )"},{"line_number":1898,"context_line":""},{"line_number":1899,"context_line":"        # We have not yet associated the AVX2 trait to any provider, so we"},{"line_number":1900,"context_line":"        # should get zero allocation candidates"},{"line_number":1901,"context_line":"        p_sums \u003d alloc_cands.provider_summaries"},{"line_number":1902,"context_line":"        self.assertEqual([], alloc_cands.allocation_requests)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fbbe3ac_2be16196","line":1899,"range":{"start_line":1899,"start_character":41,"end_line":1899,"end_character":45},"in_reply_to":"51831b81_416e5801","updated":"2022-02-08 14:51:28.000000000","message":"you are right. fixed.","commit_id":"09d7413e7c6d3308a60ba57a0e7a5bfd019962f1"}]}
