)]}'
{"oslo_versionedobjects/fields.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"b0c366816f95492af45069333d9db6272f48b178","unresolved":false,"context_lines":[{"line_number":827,"context_line":"        return \u0027%s%s\u0027 % (self._obj_name, ident)"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    def get_schema(self):"},{"line_number":830,"context_line":"        from oslo_versionedobjects import base as obj_base"},{"line_number":831,"context_line":"        obj_classes \u003d obj_base.VersionedObjectRegistry.obj_classes()"},{"line_number":832,"context_line":"        if self._obj_name in obj_classes:"},{"line_number":833,"context_line":"            cls \u003d obj_classes[self._obj_name][0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_fdd355d3","line":830,"updated":"2016-09-01 05:47:59.000000000","message":"Hmmm, is this late import really needed; when I see these I usually start to wonder if something is busted and these are just workarounds that really should fix the bigger thing that is busted.","commit_id":"bcfbc1607da5412373215b0b376e41cafa6cb32c"},{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"dfc62b558aa2d4486deea694620d08cd9086293e","unresolved":false,"context_lines":[{"line_number":827,"context_line":"        return \u0027%s%s\u0027 % (self._obj_name, ident)"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    def get_schema(self):"},{"line_number":830,"context_line":"        from oslo_versionedobjects import base as obj_base"},{"line_number":831,"context_line":"        obj_classes \u003d obj_base.VersionedObjectRegistry.obj_classes()"},{"line_number":832,"context_line":"        if self._obj_name in obj_classes:"},{"line_number":833,"context_line":"            cls \u003d obj_classes[self._obj_name][0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_023ddbba","line":830,"in_reply_to":"fa7ab95a_fdd355d3","updated":"2016-09-02 14:04:15.000000000","message":"Yes. Some refactoring might be needed in the future. I found that there is also another circular dependency in line 807","commit_id":"bcfbc1607da5412373215b0b376e41cafa6cb32c"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"3bd4e9b005a364e00641cb9c9429f70eb4694056","unresolved":false,"context_lines":[{"line_number":839,"context_line":"            changes_key \u003d cls._obj_primitive_key(\u0027changes\u0027)"},{"line_number":840,"context_line":"            field_schemas \u003d {key: field.get_schema()"},{"line_number":841,"context_line":"                             for key, field in cls.fields.items()}"},{"line_number":842,"context_line":"            required_fields \u003d [name for name, schema in"},{"line_number":843,"context_line":"                               sorted(field_schemas.items())]"},{"line_number":844,"context_line":"            schema \u003d {"},{"line_number":845,"context_line":"                \u0027type\u0027: \u0027object\u0027,"},{"line_number":846,"context_line":"                \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a8bc5a2_0f0243b4","line":843,"range":{"start_line":842,"start_character":12,"end_line":843,"end_character":61},"updated":"2016-09-26 07:18:42.000000000","message":"This should be:\n  required_fields \u003d [key for key, field in cls.fields.items()\n                     if not field.nullable]","commit_id":"e6e6285288335889e8c0e949b65e4f2db153caba"}],"oslo_versionedobjects/tests/test_objects.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"47b37be4b19b6f4ae11720470bb687195eb47f6d","unresolved":false,"context_lines":[{"line_number":2114,"context_line":"            },"},{"line_number":2115,"context_line":"            \u0027required\u0027: [\u0027versioned_object.namespace\u0027, \u0027versioned_object.name\u0027,"},{"line_number":2116,"context_line":"                         \u0027versioned_object.version\u0027, \u0027versioned_object.data\u0027]"},{"line_number":2117,"context_line":"        }, schema)"},{"line_number":2118,"context_line":""},{"line_number":2119,"context_line":"    def test_to_json_schema_complex_object(self):"},{"line_number":2120,"context_line":"        schema \u003d self.FakeComplexObject.to_json_schema()"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a8ec9b2_64b7cc39","line":2117,"updated":"2016-09-14 13:59:26.000000000","message":"I would also add assert like this\njsonschema.validate(self.FakeObject(a_boolean\u003dTrue).obj_to_primitive(),\n                    self.FakeObject.to_json_schema())","commit_id":"40bc23661ac40924e14c32f41e10965fa89ae533"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"47b37be4b19b6f4ae11720470bb687195eb47f6d","unresolved":false,"context_lines":[{"line_number":2128,"context_line":"                    \u0027properties\u0027: {"},{"line_number":2129,"context_line":"                        \u0027a_dict\u0027: {"},{"line_number":2130,"context_line":"                            \u0027readonly\u0027: False,"},{"line_number":2131,"context_line":"                            \u0027type\u0027: [\u0027object\u0027]},"},{"line_number":2132,"context_line":"                        \u0027an_obj\u0027: {"},{"line_number":2133,"context_line":"                            \u0027properties\u0027: {"},{"line_number":2134,"context_line":"                                \u0027versioned_object.changes\u0027:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a8ec9b2_df9ead55","line":2131,"updated":"2016-09-14 13:59:26.000000000","message":"This still looks a bit too generic. The \u0027a_dict\u0027 field is defined as fields.DictOfListOfStringsField(), so I would expect that the values of the dict are list of strings but this now allows any value.","commit_id":"40bc23661ac40924e14c32f41e10965fa89ae533"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"47b37be4b19b6f4ae11720470bb687195eb47f6d","unresolved":false,"context_lines":[{"line_number":2192,"context_line":"            \u0027title\u0027: \u0027FakeComplexObject\u0027,"},{"line_number":2193,"context_line":"            \u0027type\u0027: \u0027object\u0027}"},{"line_number":2194,"context_line":"        self.assertEqual(expected_schema, schema)"},{"line_number":2195,"context_line":""},{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"class TestNamespaceCompatibility(test.TestCase):"},{"line_number":2198,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a8ec9b2_44c9f077","line":2195,"updated":"2016-09-14 13:59:26.000000000","message":"I would assert that an instance of the complex object converted to primitives really passes the schema returned by to_json_schema.","commit_id":"40bc23661ac40924e14c32f41e10965fa89ae533"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"47b37be4b19b6f4ae11720470bb687195eb47f6d","unresolved":false,"context_lines":[{"line_number":2193,"context_line":"            \u0027type\u0027: \u0027object\u0027}"},{"line_number":2194,"context_line":"        self.assertEqual(expected_schema, schema)"},{"line_number":2195,"context_line":""},{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"class TestNamespaceCompatibility(test.TestCase):"},{"line_number":2198,"context_line":"    def setUp(self):"},{"line_number":2199,"context_line":"        super(TestNamespaceCompatibility, self).setUp()"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a8ec9b2_a430f457","line":2196,"updated":"2016-09-14 13:59:26.000000000","message":"I\u0027m wondering what would happen with the schema if we define a recursive data structure like.\n\nclass TreeNode(base.VersionedObject):\n    fields\u003d{\n        children: fields.ListOfObjectsField(\u0027TreeNode\u0027)\n}\n\nI guess in this case the to_json_schema would cause an infinite recursion. I think in JSON schema there is a way to break this recursion be referring back to the already defined TreeNode schema. See https://stackoverflow.com/questions/35250621/recursive-self-referencing-json-schema\n\nI\u0027m not sure we want to support this right now but I think we at least need to avoid the possible infinite recursion.","commit_id":"40bc23661ac40924e14c32f41e10965fa89ae533"}],"test-requirements.txt":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"47b37be4b19b6f4ae11720470bb687195eb47f6d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"# These are needed for docs generation"},{"line_number":8,"context_line":"oslosphinx!\u003d3.4.0,\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":9,"context_line":"sphinx!\u003d1.3b1,\u003c1.3,\u003e\u003d1.2.1 # BSD"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"coverage\u003e\u003d3.6 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":13,"id":"7a8ec9b2_ff41a93a","side":"PARENT","line":10,"updated":"2016-09-14 13:59:26.000000000","message":"Seems like an unnecessary change","commit_id":"7f0edcdb6430f5ccfdeed81806ecc780753da4d1"}]}
