)]}'
{"nova/objects/fields.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"447eeccf6825d3a290d8a578b72a0d9af7e6a0bd","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"# FIXME(sbauza): Remove this after oslo.versionedobjects releases it"},{"line_number":694,"context_line":"class DictOfListOfStringsField(AutoTypedField):"},{"line_number":695,"context_line":"    AUTO_TYPE \u003d Dict(List(fields.String()))"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_4a9ceb69","line":694,"updated":"2015-07-28 12:56:17.000000000","message":"I won\u0027t -1 but at some point we have to realise individually enumerating every possible type is insane. Maybe someone has already automated a system for composing and checking types?","commit_id":"497d48487b6d50422983fd42ecb0630e4b7f7c55"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"f42b69a73a3e4dd09516be320fd07315fda84093","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"# FIXME(sbauza): Remove this after oslo.versionedobjects releases it"},{"line_number":694,"context_line":"class DictOfListOfStringsField(AutoTypedField):"},{"line_number":695,"context_line":"    AUTO_TYPE \u003d Dict(List(fields.String()))"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_cae31bd7","line":694,"in_reply_to":"3a50d1a3_4a9ceb69","updated":"2015-07-28 12:58:02.000000000","message":"OTOH maybe I should just submit a patch for the DictOfEitherListOfStringsOrListOfNonNegativeIntegersField I need","commit_id":"497d48487b6d50422983fd42ecb0630e4b7f7c55"}],"nova/tests/unit/objects/test_fields.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"2acdcbed8d028dc391717dc25cf82bd7a769da18","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        uuid1 \u003d str(uuid.uuid4())"},{"line_number":811,"context_line":"        uuid2 \u003d str(uuid.uuid4())"},{"line_number":812,"context_line":"        self.coerce_good_values \u003d [([uuid1, uuid2], [uuid1, uuid2]),"},{"line_number":813,"context_line":"                                   ([1, 2], [\u00271\u0027, \u00272\u0027])]"},{"line_number":814,"context_line":"        self.coerce_bad_values \u003d [[None, None]]"},{"line_number":815,"context_line":"        self.to_primitive_values \u003d [([uuid1], [uuid1])]"},{"line_number":816,"context_line":"        self.from_primitive_values \u003d [([uuid1], [uuid1])]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_c560fba7","line":813,"updated":"2015-07-22 09:28:35.000000000","message":"This seems a little odd as \"good values\" since \u00271\u0027 and \u00272\u0027 are not valid UUIDs.","commit_id":"4e225bf32802e0f532a5c30625d7bd0fd1421026"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e1ddbb32b180fffaff2797e8d70a077b3736f92e","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        uuid1 \u003d str(uuid.uuid4())"},{"line_number":811,"context_line":"        uuid2 \u003d str(uuid.uuid4())"},{"line_number":812,"context_line":"        self.coerce_good_values \u003d [([uuid1, uuid2], [uuid1, uuid2]),"},{"line_number":813,"context_line":"                                   ([1, 2], [\u00271\u0027, \u00272\u0027])]"},{"line_number":814,"context_line":"        self.coerce_bad_values \u003d [[None, None]]"},{"line_number":815,"context_line":"        self.to_primitive_values \u003d [([uuid1], [uuid1])]"},{"line_number":816,"context_line":"        self.from_primitive_values \u003d [([uuid1], [uuid1])]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_cd4b3286","line":813,"in_reply_to":"3a50d1a3_b7a7130a","updated":"2015-07-22 14:32:32.000000000","message":"Yep this should be good but as danpb mentioned to me on IRC perhaps we have to be sure that will not create problems with historical values used as UUID which are not valid.","commit_id":"4e225bf32802e0f532a5c30625d7bd0fd1421026"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"472e92e2d2d3c413109171965cffdbe50f47bcd9","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        uuid1 \u003d str(uuid.uuid4())"},{"line_number":811,"context_line":"        uuid2 \u003d str(uuid.uuid4())"},{"line_number":812,"context_line":"        self.coerce_good_values \u003d [([uuid1, uuid2], [uuid1, uuid2]),"},{"line_number":813,"context_line":"                                   ([1, 2], [\u00271\u0027, \u00272\u0027])]"},{"line_number":814,"context_line":"        self.coerce_bad_values \u003d [[None, None]]"},{"line_number":815,"context_line":"        self.to_primitive_values \u003d [([uuid1], [uuid1])]"},{"line_number":816,"context_line":"        self.from_primitive_values \u003d [([uuid1], [uuid1])]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_f4b7e337","line":813,"in_reply_to":"3a50d1a3_c560fba7","updated":"2015-07-22 10:52:21.000000000","message":"The own field UUIDField is odd since it does not check the validity of UUID.","commit_id":"4e225bf32802e0f532a5c30625d7bd0fd1421026"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"baf7eff3e812c98d4e2030c7c0a69def9bd3f4a3","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        uuid1 \u003d str(uuid.uuid4())"},{"line_number":811,"context_line":"        uuid2 \u003d str(uuid.uuid4())"},{"line_number":812,"context_line":"        self.coerce_good_values \u003d [([uuid1, uuid2], [uuid1, uuid2]),"},{"line_number":813,"context_line":"                                   ([1, 2], [\u00271\u0027, \u00272\u0027])]"},{"line_number":814,"context_line":"        self.coerce_bad_values \u003d [[None, None]]"},{"line_number":815,"context_line":"        self.to_primitive_values \u003d [([uuid1], [uuid1])]"},{"line_number":816,"context_line":"        self.from_primitive_values \u003d [([uuid1], [uuid1])]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_a2fa6173","line":813,"in_reply_to":"3a50d1a3_cd4b3286","updated":"2015-07-22 19:57:19.000000000","message":"Sylvain is going to make these real UUIDs.","commit_id":"4e225bf32802e0f532a5c30625d7bd0fd1421026"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9cba365d84e1d378811d37b782ff767294b6e207","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        uuid1 \u003d str(uuid.uuid4())"},{"line_number":811,"context_line":"        uuid2 \u003d str(uuid.uuid4())"},{"line_number":812,"context_line":"        self.coerce_good_values \u003d [([uuid1, uuid2], [uuid1, uuid2]),"},{"line_number":813,"context_line":"                                   ([1, 2], [\u00271\u0027, \u00272\u0027])]"},{"line_number":814,"context_line":"        self.coerce_bad_values \u003d [[None, None]]"},{"line_number":815,"context_line":"        self.to_primitive_values \u003d [([uuid1], [uuid1])]"},{"line_number":816,"context_line":"        self.from_primitive_values \u003d [([uuid1], [uuid1])]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_b7a7130a","line":813,"in_reply_to":"3a50d1a3_f4b7e337","updated":"2015-07-22 13:59:49.000000000","message":"Maybe I should help with coercing UUID correctly :-)","commit_id":"4e225bf32802e0f532a5c30625d7bd0fd1421026"}]}
