)]}'
{"oslo_versionedobjects/fields.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"810823529cdee515ef9c4056ee9b9bf671b24072","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"class MACAddress(FieldType):"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    _REGEX \u003d re.compile(r\u0027[0-9a-f]{2}([:-]?[0-9a-f]{2}){5}$\u0027)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    @staticmethod"},{"line_number":316,"context_line":"    def coerce(obj, attr, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_dcd80c82","line":313,"updated":"2015-11-14 19:50:09.000000000","message":"This will allow a mix of colons and dashes as octal separators. Do you want to allow that?","commit_id":"30cfaaeac891290276fac50f0b4e4109265ad363"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1826dd3381f0e5e330de3eebd8c51de7a3f82bdc","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"class MACAddress(FieldType):"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    _REGEX \u003d re.compile(r\u0027[0-9a-f]{2}([:-]?[0-9a-f]{2}){5}$\u0027)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    @staticmethod"},{"line_number":316,"context_line":"    def coerce(obj, attr, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_3c8fd824","line":313,"in_reply_to":"da85f559_dcd80c82","updated":"2015-11-14 20:18:37.000000000","message":"Good call, I missed that dashes were allowed.\n\nLet\u0027s just use netaddr for coercion like we do for L3 addresses, okay?","commit_id":"30cfaaeac891290276fac50f0b4e4109265ad363"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"810823529cdee515ef9c4056ee9b9bf671b24072","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    @staticmethod"},{"line_number":316,"context_line":"    def coerce(obj, attr, value):"},{"line_number":317,"context_line":"        lowered \u003d value.lower()"},{"line_number":318,"context_line":"        if (not isinstance(value, six.string_types) or"},{"line_number":319,"context_line":"                not MACAddress._REGEX.match(lowered)):"},{"line_number":320,"context_line":"            raise ValueError(_LE(\"Malformed MAC %s\"), value)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_5cd3bc5f","line":317,"updated":"2015-11-14 19:50:09.000000000","message":"Do you also want to convert to a standardized separator (colon or dash)?","commit_id":"30cfaaeac891290276fac50f0b4e4109265ad363"}],"oslo_versionedobjects/tests/test_fields.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"810823529cdee515ef9c4056ee9b9bf671b24072","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self.field \u003d fields.MACAddressField()"},{"line_number":149,"context_line":"        self.coerce_good_values \u003d ["},{"line_number":150,"context_line":"            (\u0027C6:DF:11:A5:C8:5D\u0027, \u0027c6:df:11:a5:c8:5d\u0027),"},{"line_number":151,"context_line":"            (\u0027C6-DF-11-A5-C8-5D\u0027, \u0027c6:df:11:a5:c8:5d\u0027),"},{"line_number":152,"context_line":"        ]"},{"line_number":153,"context_line":"        self.coerce_bad_values \u003d ["},{"line_number":154,"context_line":"            \u0027C6:DF:11:A5:C8\u0027,  # Too short"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_dcbfacfa","line":151,"updated":"2015-11-14 19:50:09.000000000","message":"This won\u0027t work unless you coerce dashes to colons.","commit_id":"30cfaaeac891290276fac50f0b4e4109265ad363"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"810823529cdee515ef9c4056ee9b9bf671b24072","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        self.coerce_bad_values \u003d ["},{"line_number":154,"context_line":"            \u0027C6:DF:11:A5:C8\u0027,  # Too short"},{"line_number":155,"context_line":"            \u0027C6:DF:11:A5:C8:5D:D7\u0027,  # Too long"},{"line_number":156,"context_line":"            \u0027C6:DF:11:A5:C8:KD\u0027,  # Bad octal"},{"line_number":157,"context_line":"        ]"},{"line_number":158,"context_line":"        self.to_primitive_values \u003d self.coerce_good_values[0:1]"},{"line_number":159,"context_line":"        self.from_primitive_values \u003d self.coerce_good_values[0:1]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_01ddcd41","line":156,"updated":"2015-11-14 19:50:09.000000000","message":"Perhaps also test for required leading zeros? e.g. \u00276:DF:11:A5:C8:5D\u0027 or \u0027C6:DF:11:5:C8:5D\u0027 or something. How about correct length but too many octals, e.g. \u00276:DF:11:5:C8:D:33\u0027. I am just making stuff up since you need to respin anyway.","commit_id":"30cfaaeac891290276fac50f0b4e4109265ad363"}]}
