)]}'
{"nova/objects/fields.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"962ec0855197232d1b6b2ec98c3658ae8f71788e","unresolved":false,"context_lines":[{"line_number":238,"context_line":"class String(FieldType):"},{"line_number":239,"context_line":"    def __init__(self, valid_values\u003dNone, **kwargs):"},{"line_number":240,"context_line":"        self._valid_values \u003d valid_values"},{"line_number":241,"context_line":"        super(String, self).__init__(**kwargs)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def coerce(self, obj, attr, value):"},{"line_number":244,"context_line":"        if self._valid_values and value not in self._valid_values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_4f4b522b","line":241,"updated":"2015-01-22 10:57:31.000000000","message":"I don\u0027t think we should be modifying the String/StringField classes.\n\nActually add Enum/EnumField classes which are subclassed from String/StringField.","commit_id":"4f19128337686585c9d61d25a4c667391bdee4f6"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"3e8795c32da1d76c277bc431da8df9e6bed360ba","unresolved":false,"context_lines":[{"line_number":238,"context_line":"class String(FieldType):"},{"line_number":239,"context_line":"    def __init__(self, valid_values\u003dNone, **kwargs):"},{"line_number":240,"context_line":"        self._valid_values \u003d valid_values"},{"line_number":241,"context_line":"        super(String, self).__init__(**kwargs)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def coerce(self, obj, attr, value):"},{"line_number":244,"context_line":"        if self._valid_values and value not in self._valid_values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_cc0ab020","line":241,"in_reply_to":"1a930d6b_4f4b522b","updated":"2015-01-23 17:48:40.000000000","message":"Sure, will do that way.","commit_id":"4f19128337686585c9d61d25a4c667391bdee4f6"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"67d1b3c0bfc14b626fae21c0fc46c71d969545d7","unresolved":false,"context_lines":[{"line_number":238,"context_line":"class String(FieldType):"},{"line_number":239,"context_line":"    def __init__(self, valid_values\u003dNone, **kwargs):"},{"line_number":240,"context_line":"        self._valid_values \u003d valid_values"},{"line_number":241,"context_line":"        super(String, self).__init__(**kwargs)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def coerce(self, obj, attr, value):"},{"line_number":244,"context_line":"        if self._valid_values and value not in self._valid_values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_e2cf5454","line":241,"in_reply_to":"1a930d6b_904432b8","updated":"2015-01-26 09:47:44.000000000","message":"It doesn\u0027t seem particularly difficult to add DictOfEnumField too IIUC.","commit_id":"4f19128337686585c9d61d25a4c667391bdee4f6"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"f8b60245f41be26634bf74ab6c69d41414581613","unresolved":false,"context_lines":[{"line_number":238,"context_line":"class String(FieldType):"},{"line_number":239,"context_line":"    def __init__(self, valid_values\u003dNone, **kwargs):"},{"line_number":240,"context_line":"        self._valid_values \u003d valid_values"},{"line_number":241,"context_line":"        super(String, self).__init__(**kwargs)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def coerce(self, obj, attr, value):"},{"line_number":244,"context_line":"        if self._valid_values and value not in self._valid_values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_904432b8","line":241,"in_reply_to":"1a930d6b_cc0ab020","updated":"2015-01-23 22:51:22.000000000","message":"Daniel, just one thing come to my mind is, I switch from Enum/EnumField in previous patchset to Sring field is, with changing the String Field, it will be easier to add such limitation to other String based field type like DictOfStringField etc. Your idea?","commit_id":"4f19128337686585c9d61d25a4c667391bdee4f6"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"0e8289ca08a7f8fd6adbf321a32b8cc4a0b0985b","unresolved":false,"context_lines":[{"line_number":238,"context_line":"class String(FieldType):"},{"line_number":239,"context_line":"    def __init__(self, valid_values\u003dNone, **kwargs):"},{"line_number":240,"context_line":"        self._valid_values \u003d valid_values"},{"line_number":241,"context_line":"        super(String, self).__init__(**kwargs)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def coerce(self, obj, attr, value):"},{"line_number":244,"context_line":"        if self._valid_values and value not in self._valid_values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_e2d6f5c4","line":241,"in_reply_to":"1a930d6b_e2cf5454","updated":"2015-01-28 06:46:50.000000000","message":"Yes, that\u0027s not difficult. I changed to enum type in new patchset.","commit_id":"4f19128337686585c9d61d25a4c667391bdee4f6"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"7388a24d509b02af93dfc786d0d491c7ee8e0498","unresolved":false,"context_lines":[{"line_number":578,"context_line":"class StringField(AutoTypedField):"},{"line_number":579,"context_line":"    def __init__(self, valid_values\u003dNone, **kwargs):"},{"line_number":580,"context_line":"        self.AUTO_TYPE \u003d String(valid_values\u003dvalid_values)"},{"line_number":581,"context_line":"        super(StringField, self).__init__( **kwargs)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    def __repr__(self):"},{"line_number":584,"context_line":"        valid_values \u003d self._type._valid_values"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_9e4bae58","line":581,"updated":"2015-01-22 09:21:54.000000000","message":"E201 whitespace after \u0027(\u0027","commit_id":"4f19128337686585c9d61d25a4c667391bdee4f6"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"3e8795c32da1d76c277bc431da8df9e6bed360ba","unresolved":false,"context_lines":[{"line_number":578,"context_line":"class StringField(AutoTypedField):"},{"line_number":579,"context_line":"    def __init__(self, valid_values\u003dNone, **kwargs):"},{"line_number":580,"context_line":"        self.AUTO_TYPE \u003d String(valid_values\u003dvalid_values)"},{"line_number":581,"context_line":"        super(StringField, self).__init__( **kwargs)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    def __repr__(self):"},{"line_number":584,"context_line":"        valid_values \u003d self._type._valid_values"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_ac2ac47b","line":581,"in_reply_to":"1a930d6b_9e4bae58","updated":"2015-01-23 17:48:40.000000000","message":"Aha, thanks for this. Should really not push code at midnight. :)","commit_id":"4f19128337686585c9d61d25a4c667391bdee4f6"}]}
