)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"524e479d81e3acfe8f3b1d2c0da87a71f1697982","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to JSON the traits attribute has been a list of Trait objects."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"At no point in the processing of that attribute does any caller want"},{"line_number":13,"context_line":"it to be a Trait. They are stored as TraitS but used as strings."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Therefore, this change makes it so it is a list of strings, avoiding"},{"line_number":16,"context_line":"a few different instances of translating one way or the other, keeping"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bfb3d3c7_d3726c7b","line":13,"range":{"start_line":13,"start_character":37,"end_line":13,"end_character":43},"updated":"2019-05-25 10:04:03.000000000","message":"what is S?","commit_id":"5f4da5e04099b4eb7da32c57993e8fb187ebe56a"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"89507afbbf7aef63f2f5e303386efacdf4422b06","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to JSON the traits attribute has been a list of Trait objects."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"At no point in the processing of that attribute does any caller want"},{"line_number":13,"context_line":"it to be a Trait. They are stored as TraitS but used as strings."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Therefore, this change makes it so it is a list of strings, avoiding"},{"line_number":16,"context_line":"a few different instances of translating one way or the other, keeping"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bfb3d3c7_52a2cbfd","line":13,"range":{"start_line":13,"start_character":37,"end_line":13,"end_character":43},"in_reply_to":"bfb3d3c7_60adc4e7","updated":"2019-05-29 08:34:13.000000000","message":"Oh yeah, sorry, that is what I was doing. It\u0027s a holdover from a time when I worked on Java quite a bit and amongst the people I was working with the class name was a \"token\" and it was important to be visual distinct about pluralizing. It would be sort of like saying EricS and TetsuroS","commit_id":"5f4da5e04099b4eb7da32c57993e8fb187ebe56a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9f3fa448a8871610b440e21545e6799d70f7addb","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to JSON the traits attribute has been a list of Trait objects."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"At no point in the processing of that attribute does any caller want"},{"line_number":13,"context_line":"it to be a Trait. They are stored as TraitS but used as strings."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Therefore, this change makes it so it is a list of strings, avoiding"},{"line_number":16,"context_line":"a few different instances of translating one way or the other, keeping"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bfb3d3c7_60adc4e7","line":13,"range":{"start_line":13,"start_character":37,"end_line":13,"end_character":43},"in_reply_to":"bfb3d3c7_d3726c7b","updated":"2019-05-28 20:07:54.000000000","message":"I think this is Chris\u0027s way of pluralizing Trait while preserving the token-ness of its name. As in \"multiple instances of the Trait class\" verses \"multiple traits (lowercase t, no semantic/pythonic meaning intended)\".\n\nAre you less confused now? :P","commit_id":"5f4da5e04099b4eb7da32c57993e8fb187ebe56a"}],"placement/objects/allocation_candidate.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9f3fa448a8871610b440e21545e6799d70f7addb","unresolved":false,"context_lines":[{"line_number":625,"context_line":"    for res_req in res_requests:"},{"line_number":626,"context_line":"        rp_id \u003d res_req.resource_provider.id"},{"line_number":627,"context_line":"        rp_summary \u003d summaries[rp_id]"},{"line_number":628,"context_line":"        rp_traits \u003d set(rp_summary.traits)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        # Check if there are forbidden_traits"},{"line_number":631,"context_line":"        conflict_traits \u003d set(forbidden_traits) \u0026 set(rp_traits)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_60f704d5","line":628,"range":{"start_line":628,"start_character":20,"end_line":628,"end_character":42},"updated":"2019-05-28 20:07:54.000000000","message":"note for future cleanup: we could make ProviderSummary.traits a set to begin with.","commit_id":"5f4da5e04099b4eb7da32c57993e8fb187ebe56a"}]}
