)]}'
{"trove/extensions/postgresql/service.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"06bc86daaa1b22989cb9a669fee1730d5136d58a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _find_root_user(self, context, instance_id):"},{"line_number":24,"context_line":"        user \u003d guest_models.PostgreSQLRootUser()"},{"line_number":25,"context_line":"        # TODO(pmalik): This should be ultimately using Postgres model"},{"line_number":26,"context_line":"        # extensions. MySQL extensions will work for now, but may lead to"},{"line_number":27,"context_line":"        # future bugs as it makes use of the \u0027host\u0027 field which"},{"line_number":28,"context_line":"        # does not exist/has different meaning in Postgres."},{"line_number":29,"context_line":"        return models.User.load("},{"line_number":30,"context_line":"            context, instance_id, user.name, user.host, root_user\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_6028ad97","line":28,"range":{"start_line":25,"start_character":0,"end_line":28,"end_character":59},"updated":"2016-04-29 18:26:35.000000000","message":"I\u0027d rather see this as a bug entry.  The code is already littered with unresolved TODOs.","commit_id":"89b875ef035aee7ccd462e1f2360efcf7e2188f9"}],"trove/guestagent/db/models.py":[{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"eb0c4fd89e66e0e07bb67122072a834fa35e854d","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def __init__(self, name\u003dNone, deserializing\u003dFalse):"},{"line_number":201,"context_line":"        super(PostgreSQLSchema, self).__init__()"},{"line_number":202,"context_line":"        if not (bool(deserializing) !\u003d bool(name)):"},{"line_number":203,"context_line":"            raise ValueError(_(\"Bad args. name: %(name)s, \""},{"line_number":204,"context_line":"                               \"deserializing %(deser)s.\")"},{"line_number":205,"context_line":"                             % ({\u0027name\u0027: bool(name),"},{"line_number":206,"context_line":"                                 \u0027deser\u0027: bool(deserializing)}))"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_491607a8","line":203,"updated":"2016-02-16 19:46:09.000000000","message":"\"Bad args\" - can we do something more helpful?","commit_id":"c68ca7217c7168344e3771033a6b59468c8d895a"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"113ab713b6bcb491d96513ef27f51905c4e593af","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @property"},{"line_number":255,"context_line":"    def _max_schema_name_length(self):"},{"line_number":256,"context_line":"        return 63"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _is_valid_schema_name(self, value):"},{"line_number":259,"context_line":"        return self.name_regex.match(value) is not None"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_cb4fa7bc","line":256,"updated":"2016-04-25 14:50:25.000000000","message":"Can you make this a constant variable?","commit_id":"89b875ef035aee7ccd462e1f2360efcf7e2188f9"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"6b500edfd9a307c42b5ef7952c07a2be7b5b87a9","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @property"},{"line_number":255,"context_line":"    def _max_schema_name_length(self):"},{"line_number":256,"context_line":"        return 63"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _is_valid_schema_name(self, value):"},{"line_number":259,"context_line":"        return self.name_regex.match(value) is not None"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_695db678","line":256,"in_reply_to":"1a122d0e_69b776f5","updated":"2016-04-25 19:00:02.000000000","message":"Sure, just wanted to avoid a magic number, but you made a good point on the name of the property, my bad.","commit_id":"89b875ef035aee7ccd462e1f2360efcf7e2188f9"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"fe56e091ca93d7f1d1f65c468c133c1bac0801eb","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @property"},{"line_number":255,"context_line":"    def _max_schema_name_length(self):"},{"line_number":256,"context_line":"        return 63"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _is_valid_schema_name(self, value):"},{"line_number":259,"context_line":"        return self.name_regex.match(value) is not None"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_69b776f5","line":256,"in_reply_to":"1a122d0e_cb4fa7bc","updated":"2016-04-25 18:40:46.000000000","message":"What would be the benefit of doing so?\nThis property is a part of the abstract interface of the base class (as are other validators).\nThe property is already constant by definition. It also has a self documenting name.","commit_id":"89b875ef035aee7ccd462e1f2360efcf7e2188f9"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"113ab713b6bcb491d96513ef27f51905c4e593af","unresolved":false,"context_lines":[{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"    @property"},{"line_number":1068,"context_line":"    def _max_username_length(self):"},{"line_number":1069,"context_line":"        return 63"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"    def _is_valid_name(self, value):"},{"line_number":1072,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_0be19f9a","line":1069,"updated":"2016-04-25 14:50:25.000000000","message":"ditto","commit_id":"89b875ef035aee7ccd462e1f2360efcf7e2188f9"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"fe56e091ca93d7f1d1f65c468c133c1bac0801eb","unresolved":false,"context_lines":[{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"    @property"},{"line_number":1068,"context_line":"    def _max_username_length(self):"},{"line_number":1069,"context_line":"        return 63"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"    def _is_valid_name(self, value):"},{"line_number":1072,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_699c965d","line":1069,"in_reply_to":"1a122d0e_0be19f9a","updated":"2016-04-25 18:40:46.000000000","message":"ditto","commit_id":"89b875ef035aee7ccd462e1f2360efcf7e2188f9"}]}
