)]}'
{"oslo_config/tests/test_cfg.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e058b51f6096ad64e4a3c3967197d0d2b174374a","unresolved":false,"context_lines":[{"line_number":1161,"context_line":"        self.assertRaises(cfg.ConfigFileValueError, self.conf._get, \u0027foo\u0027)"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def test_conf_file_float_min_greater_max(self):"},{"line_number":1164,"context_line":"        self.assertRaises(ValueError, cfg.FloatOpt, \u0027foo\u0027, min\u003d5.5, max\u003d1.5)"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def test_conf_file_list_default(self):"},{"line_number":1167,"context_line":"        self.conf.register_opt(cfg.ListOpt(\u0027foo\u0027, default\u003d[\u0027bar\u0027]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_339965c5","line":1164,"updated":"2016-07-20 14:03:51.000000000","message":"please could we also have tests where the value is \u003c min and within the range?","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"0ed391d7f846707414b4ff9f7ba911fe7f9aaefd","unresolved":false,"context_lines":[{"line_number":1161,"context_line":"        self.assertRaises(cfg.ConfigFileValueError, self.conf._get, \u0027foo\u0027)"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def test_conf_file_float_min_greater_max(self):"},{"line_number":1164,"context_line":"        self.assertRaises(ValueError, cfg.FloatOpt, \u0027foo\u0027, min\u003d5.5, max\u003d1.5)"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def test_conf_file_list_default(self):"},{"line_number":1167,"context_line":"        self.conf.register_opt(cfg.ListOpt(\u0027foo\u0027, default\u003d[\u0027bar\u0027]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_d1a7fdba","line":1164,"in_reply_to":"dada55a8_339965c5","updated":"2016-07-21 05:44:21.000000000","message":"Done","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"}],"oslo_config/tests/test_types.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e058b51f6096ad64e4a3c3967197d0d2b174374a","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def test_equal_with_same_min_and_max(self):"},{"line_number":420,"context_line":"        t1 \u003d types.Float(min\u003d1.1, max\u003d2.2)"},{"line_number":421,"context_line":"        t2 \u003d types.Float(min\u003d1.1, max\u003d2.2)"},{"line_number":422,"context_line":"        self.assertTrue(t1 \u003d\u003d t2)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_min_greater_max(self):"},{"line_number":425,"context_line":"        self.assertRaises(ValueError,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_9365b1b6","line":422,"updated":"2016-07-20 14:03:51.000000000","message":"please can we test that if either min or max is different, two types are not equal?","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"0ed391d7f846707414b4ff9f7ba911fe7f9aaefd","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def test_equal_with_same_min_and_max(self):"},{"line_number":420,"context_line":"        t1 \u003d types.Float(min\u003d1.1, max\u003d2.2)"},{"line_number":421,"context_line":"        t2 \u003d types.Float(min\u003d1.1, max\u003d2.2)"},{"line_number":422,"context_line":"        self.assertTrue(t1 \u003d\u003d t2)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_min_greater_max(self):"},{"line_number":425,"context_line":"        self.assertRaises(ValueError,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_31a93991","line":422,"in_reply_to":"dada55a8_9365b1b6","updated":"2016-07-21 05:44:21.000000000","message":"Done","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"ffd7bb159d3b7564b62544de02a05e303b458d0b","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        t(300)"},{"line_number":444,"context_line":"        t(456.0)"},{"line_number":445,"context_line":"        self.assertRaises(ValueError, t, 0)"},{"line_number":446,"context_line":"        self.assertRaises(ValueError, t, 800.5)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"class ListTypeTests(TypeTestHelper, unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_2929f2e6","line":446,"range":{"start_line":446,"start_character":46,"end_line":446,"end_character":47},"updated":"2016-07-20 14:09:19.000000000","message":"how about follow the same max\u0026min test framework in IntegerTypeTests? have more tests.","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"0ed391d7f846707414b4ff9f7ba911fe7f9aaefd","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        t(300)"},{"line_number":444,"context_line":"        t(456.0)"},{"line_number":445,"context_line":"        self.assertRaises(ValueError, t, 0)"},{"line_number":446,"context_line":"        self.assertRaises(ValueError, t, 800.5)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"class ListTypeTests(TypeTestHelper, unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_5194ad41","line":446,"range":{"start_line":446,"start_character":46,"end_line":446,"end_character":47},"in_reply_to":"dada55a8_2929f2e6","updated":"2016-07-21 05:44:21.000000000","message":"Done","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"}],"oslo_config/types.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e058b51f6096ad64e4a3c3967197d0d2b174374a","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        return str(value)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class Float(ConfigType):"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    \"\"\"Float type."},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_2970d20a","line":343,"updated":"2016-07-20 14:03:51.000000000","message":"I\u0027m wondering if Float and Integer should just inherit from a common parent, accepting a type as a parameter.","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"0ed391d7f846707414b4ff9f7ba911fe7f9aaefd","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        return str(value)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class Float(ConfigType):"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    \"\"\"Float type."},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_919aa56c","line":343,"in_reply_to":"dada55a8_2038c53c","updated":"2016-07-21 05:44:21.000000000","message":"Done","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"29ca156ac67eaaccc021ae58ab0f3428ed9f6223","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        return str(value)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class Float(ConfigType):"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    \"\"\"Float type."},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_2038c53c","line":343,"in_reply_to":"dada55a8_2970d20a","updated":"2016-07-21 03:35:02.000000000","message":"Agree, seems like a lot of duplication.  Maybe a base class called Number","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e058b51f6096ad64e4a3c3967197d0d2b174374a","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        if isinstance(value, float):"},{"line_number":369,"context_line":"            fixed_val \u003d value"},{"line_number":370,"context_line":"        else:"},{"line_number":371,"context_line":"            fixed_val \u003d float(value)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        if fixed_val is not None:"},{"line_number":374,"context_line":"            self._check_range(fixed_val)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_73c3dd38","line":371,"updated":"2016-07-20 14:03:51.000000000","message":"Looking at Integer, what about:\n\n  if not isinstance(value, float):\n      s \u003d str(value).strip()\n      value \u003d None if s \u003d\u003d \u0027\u0027 else float(value)\n\n  if value is not None:\n      self._check_range(value)\n\n  return value","commit_id":"edc38da9c4ac57dd59d9e772b2f09dd788899920"},{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"fa7703dff4a7911d209c2e19bf67428bc3a33d71","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                Mutually exclusive with \u0027choices\u0027."},{"line_number":254,"context_line":"    :param type_name: Type name to be used in the sample config file."},{"line_number":255,"context_line":"    :param choices: Optional sequence of valid values. Mutually exclusive"},{"line_number":256,"context_line":"                    with \u0027min/max\u0027."},{"line_number":257,"context_line":"    \"\"\""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, choices\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_d11edd6e","line":256,"range":{"start_line":256,"start_character":33,"end_line":256,"end_character":35},"updated":"2016-07-21 06:08:26.000000000","message":"missing printable_type and num_type?","commit_id":"7dadfea14731a25577030749e230085c977c9226"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7e5a382df64e00064637fe49f9e3ff582b0af134","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"class Number(ConfigType):"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    \"\"\"Number class, base for Integer and Float"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    :param min: Optional check that value is greater than or equal to min."},{"line_number":251,"context_line":"                Mutually exclusive with \u0027choices\u0027."}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_d9b276e4","line":248,"updated":"2016-07-21 11:02:57.000000000","message":"nit trailing dot","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"5970bfd0c0c87a57133f65f44daceea752121fa1","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"class Number(ConfigType):"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    \"\"\"Number class, base for Integer and Float"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    :param min: Optional check that value is greater than or equal to min."},{"line_number":251,"context_line":"                Mutually exclusive with \u0027choices\u0027."}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_0f7b1c29","line":248,"in_reply_to":"dada55a8_d9b276e4","updated":"2016-07-21 11:36:55.000000000","message":"Done","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7e5a382df64e00064637fe49f9e3ff582b0af134","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    :param type_name: Type name to be used in the sample config file."},{"line_number":255,"context_line":"    :param choices: Optional sequence of valid values. Mutually exclusive"},{"line_number":256,"context_line":"                    with \u0027min/max\u0027."},{"line_number":257,"context_line":"    :param num_type: the type of number used for casting (i.e int, float)"},{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, choices\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_59d686f1","line":257,"updated":"2016-07-21 11:02:57.000000000","message":"add:\n\n  .. versionchanged: 3.14\n  \n  Introduced.","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"5970bfd0c0c87a57133f65f44daceea752121fa1","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    :param type_name: Type name to be used in the sample config file."},{"line_number":255,"context_line":"    :param choices: Optional sequence of valid values. Mutually exclusive"},{"line_number":256,"context_line":"                    with \u0027min/max\u0027."},{"line_number":257,"context_line":"    :param num_type: the type of number used for casting (i.e int, float)"},{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, choices\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_4f723412","line":257,"in_reply_to":"dada55a8_59d686f1","updated":"2016-07-21 11:36:55.000000000","message":"I used  versionadded instead.","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7e5a382df64e00064637fe49f9e3ff582b0af134","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, choices\u003dNone,"},{"line_number":261,"context_line":"                 type_name\u003d\u0027number value\u0027, num_type\u003dint):"},{"line_number":262,"context_line":"        super(Number, self).__init__(type_name\u003dtype_name)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        # Validate the choices and limits"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_396c72cd","line":261,"range":{"start_line":261,"start_character":43,"end_line":261,"end_character":51},"updated":"2016-07-21 11:02:57.000000000","message":"I don\u0027t think num_type or type_name need default values; there\u0027s already a conflict here, with \"number value\" vs \"int\". For preference I\u0027d like num_type as the first positional parameter.","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"5970bfd0c0c87a57133f65f44daceea752121fa1","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, choices\u003dNone,"},{"line_number":261,"context_line":"                 type_name\u003d\u0027number value\u0027, num_type\u003dint):"},{"line_number":262,"context_line":"        super(Number, self).__init__(type_name\u003dtype_name)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        # Validate the choices and limits"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_8f69ccfb","line":261,"range":{"start_line":261,"start_character":43,"end_line":261,"end_character":51},"in_reply_to":"dada55a8_396c72cd","updated":"2016-07-21 11:36:55.000000000","message":"Done","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7e5a382df64e00064637fe49f9e3ff582b0af134","unresolved":false,"context_lines":[{"line_number":358,"context_line":"       Added *choices* parameter."},{"line_number":359,"context_line":"    \"\"\""},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, type_name\u003d\u0027integer value\u0027,"},{"line_number":362,"context_line":"                 choices\u003dNone):"},{"line_number":363,"context_line":"        super(Integer, self).__init__(min\u003dmin, max\u003dmax, choices\u003dchoices,"},{"line_number":364,"context_line":"                                      type_name\u003dtype_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_39a752ab","line":361,"updated":"2016-07-21 11:02:57.000000000","message":"No need to repeat all args or take type params:\n\n  def __init__(self, *args, **kwargs):\n    super(Integer, self).__init__(int, \u0027integer\u0027, *args, **kwargs)","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"5970bfd0c0c87a57133f65f44daceea752121fa1","unresolved":false,"context_lines":[{"line_number":358,"context_line":"       Added *choices* parameter."},{"line_number":359,"context_line":"    \"\"\""},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, type_name\u003d\u0027integer value\u0027,"},{"line_number":362,"context_line":"                 choices\u003dNone):"},{"line_number":363,"context_line":"        super(Integer, self).__init__(min\u003dmin, max\u003dmax, choices\u003dchoices,"},{"line_number":364,"context_line":"                                      type_name\u003dtype_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_4f15139a","line":361,"in_reply_to":"dada55a8_39a752ab","updated":"2016-07-21 11:36:55.000000000","message":"I don\u0027t think we want to do that, since other classes (Like Port) inherits from Integer, and need to overide the type_name","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7e5a382df64e00064637fe49f9e3ff582b0af134","unresolved":false,"context_lines":[{"line_number":382,"context_line":"       Added *min* and *max* parameters."},{"line_number":383,"context_line":"    \"\"\""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, type_name\u003d\u0027floating point value\u0027):"},{"line_number":386,"context_line":"        super(Float, self).__init__(min\u003dmin, max\u003dmax,"},{"line_number":387,"context_line":"                                    type_name\u003dtype_name,"},{"line_number":388,"context_line":"                                    num_type\u003dfloat)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_3958f287","line":385,"updated":"2016-07-21 11:02:57.000000000","message":"do same as for Integer.__init__\n\nthis will allow choices but I see no bad there","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"5970bfd0c0c87a57133f65f44daceea752121fa1","unresolved":false,"context_lines":[{"line_number":382,"context_line":"       Added *min* and *max* parameters."},{"line_number":383,"context_line":"    \"\"\""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, type_name\u003d\u0027floating point value\u0027):"},{"line_number":386,"context_line":"        super(Float, self).__init__(min\u003dmin, max\u003dmax,"},{"line_number":387,"context_line":"                                    type_name\u003dtype_name,"},{"line_number":388,"context_line":"                                    num_type\u003dfloat)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_af52cf64","line":385,"in_reply_to":"dada55a8_3958f287","updated":"2016-07-21 11:36:55.000000000","message":"Since I cannot do what you suggested, I\u0027m not adding the choices either. I don\u0027t really think it will be useful.","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c4305bc0045ad273a22f6a5735d436c681aa75d8","unresolved":false,"context_lines":[{"line_number":361,"context_line":"    \"\"\""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, type_name\u003d\u0027integer value\u0027,"},{"line_number":364,"context_line":"                 choices\u003dNone):"},{"line_number":365,"context_line":"        super(Integer, self).__init__(int, type_name, min\u003dmin, max\u003dmax,"},{"line_number":366,"context_line":"                                      choices\u003dchoices)"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_6eb9f0cb","line":364,"updated":"2016-07-21 14:07:29.000000000","message":"Port doesn\u0027t inherit; in fact there\u0027s no such class Port. There\u0027s a PortOpt, but no PortType. PortOpt uses an Integer type.\n\nI can live with a repetitious signature though.","commit_id":"15d3ab88f2ddf0c2b7ef60f499d029683a11d513"}],"releasenotes/notes/add-float-min-max-b1a2e16301c8435c.yaml":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7e5a382df64e00064637fe49f9e3ff582b0af134","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"  Added minimum and maximum value limits to FloatOpt."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added minimum and maximum value limits to FloatOpt."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"dada55a8_b97ce2ec","line":3,"updated":"2016-07-21 11:02:57.000000000","message":"Don\u0027t want a prelude section","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"5970bfd0c0c87a57133f65f44daceea752121fa1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"  Added minimum and maximum value limits to FloatOpt."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added minimum and maximum value limits to FloatOpt."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"dada55a8_cfde23dc","line":3,"in_reply_to":"dada55a8_b97ce2ec","updated":"2016-07-21 11:36:55.000000000","message":"Done","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7e5a382df64e00064637fe49f9e3ff582b0af134","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"  Added minimum and maximum value limits to FloatOpt."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added minimum and maximum value limits to FloatOpt."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"dada55a8_39711210","line":5,"updated":"2016-07-21 11:02:57.000000000","message":"we\u0027re also adding choices, since Number supports them","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"5970bfd0c0c87a57133f65f44daceea752121fa1","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"  Added minimum and maximum value limits to FloatOpt."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added minimum and maximum value limits to FloatOpt."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"dada55a8_6fea9775","line":5,"in_reply_to":"dada55a8_39711210","updated":"2016-07-21 11:36:55.000000000","message":"Not adding choices for now.","commit_id":"0ee38d6d7904bfcb6b868f11c761fed5f26efe96"}]}
