)]}'
{"keystone/clean.py":[{"author":{"_account_id":494,"name":"termie","email":"termie@openstack.org","username":"termie"},"change_message_id":"f354aec8e363de8347d1ce8024c8337a17fe494d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        if min_length \u003d\u003d 1:"},{"line_number":23,"context_line":"            msg \u003d _(\"%s cannot be empty.\") % property_name"},{"line_number":24,"context_line":"        else:"},{"line_number":25,"context_line":"            msg \u003d _(\"%(property_name)s cannot be less than \"\\"},{"line_number":26,"context_line":"                    \"%(min_length)s characters.\") % locals()"},{"line_number":27,"context_line":"        raise exception.ValidationError(msg)"},{"line_number":28,"context_line":"    if len(value) \u003e max_length:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHH%2F%2F%2Fwc%3D","line":25,"updated":"2012-04-25 16:40:36.000000000","message":"escaping newlines is not necessary when inside parens, and though you\u0027ll be removing the i18n, you can still put these in parens like so:\n\n  (\"asdasdasdasdasdasdasdasdas\"\n   \"asdasdsdfsdfsdfsdfs\") % locals()","commit_id":"8c713fc76350496421e140ee603da36d43835b0d"},{"author":{"_account_id":1633,"name":"unmesh-gurjar","email":"unmesh.gurjar@hp.com","username":"unmesh-gurjar"},"change_message_id":"b467240801ce00200b4d013b2181a410191600e0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        if min_length \u003d\u003d 1:"},{"line_number":23,"context_line":"            msg \u003d _(\"%s cannot be empty.\") % property_name"},{"line_number":24,"context_line":"        else:"},{"line_number":25,"context_line":"            msg \u003d _(\"%(property_name)s cannot be less than \"\\"},{"line_number":26,"context_line":"                    \"%(min_length)s characters.\") % locals()"},{"line_number":27,"context_line":"        raise exception.ValidationError(msg)"},{"line_number":28,"context_line":"    if len(value) \u003e max_length:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHH%2F%2F%2B%2FA%3D","line":25,"in_reply_to":"AAAAHH%2F%2F%2Fwc%3D","updated":"2012-04-27 02:10:06.000000000","message":"Done","commit_id":"8c713fc76350496421e140ee603da36d43835b0d"},{"author":{"_account_id":494,"name":"termie","email":"termie@openstack.org","username":"termie"},"change_message_id":"f354aec8e363de8347d1ce8024c8337a17fe494d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        raise exception.ValidationError(msg)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def clean_tenant_name(name):"},{"line_number":42,"context_line":"    check_type(_(\"Tenant name\"), name, basestring, \"string or unicode\")"},{"line_number":43,"context_line":"    name \u003d name.strip()"},{"line_number":44,"context_line":"    check_length(_(\"Tenant name\"), name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHH%2F%2F%2Fwk%3D","line":41,"updated":"2012-04-25 16:40:36.000000000","message":"this method would be called \"tenant_name\"","commit_id":"8c713fc76350496421e140ee603da36d43835b0d"},{"author":{"_account_id":1633,"name":"unmesh-gurjar","email":"unmesh.gurjar@hp.com","username":"unmesh-gurjar"},"change_message_id":"b467240801ce00200b4d013b2181a410191600e0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        raise exception.ValidationError(msg)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def clean_tenant_name(name):"},{"line_number":42,"context_line":"    check_type(_(\"Tenant name\"), name, basestring, \"string or unicode\")"},{"line_number":43,"context_line":"    name \u003d name.strip()"},{"line_number":44,"context_line":"    check_length(_(\"Tenant name\"), name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHH%2F%2F%2B%2B8%3D","line":41,"in_reply_to":"AAAAHH%2F%2F%2Fwk%3D","updated":"2012-04-27 02:10:06.000000000","message":"Done","commit_id":"8c713fc76350496421e140ee603da36d43835b0d"},{"author":{"_account_id":494,"name":"termie","email":"termie@openstack.org","username":"termie"},"change_message_id":"f354aec8e363de8347d1ce8024c8337a17fe494d","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def clean_tenant_name(name):"},{"line_number":42,"context_line":"    check_type(_(\"Tenant name\"), name, basestring, \"string or unicode\")"},{"line_number":43,"context_line":"    name \u003d name.strip()"},{"line_number":44,"context_line":"    check_length(_(\"Tenant name\"), name)"},{"line_number":45,"context_line":"    return name"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHH%2F%2F%2Fwg%3D","line":42,"updated":"2012-04-25 16:40:36.000000000","message":"while nice to have, we don\u0027t do any i18n currently so please remove these wherever they\u0027ve been used","commit_id":"8c713fc76350496421e140ee603da36d43835b0d"},{"author":{"_account_id":1633,"name":"unmesh-gurjar","email":"unmesh.gurjar@hp.com","username":"unmesh-gurjar"},"change_message_id":"b467240801ce00200b4d013b2181a410191600e0","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def clean_tenant_name(name):"},{"line_number":42,"context_line":"    check_type(_(\"Tenant name\"), name, basestring, \"string or unicode\")"},{"line_number":43,"context_line":"    name \u003d name.strip()"},{"line_number":44,"context_line":"    check_length(_(\"Tenant name\"), name)"},{"line_number":45,"context_line":"    return name"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHH%2F%2F%2B%2B0%3D","line":42,"in_reply_to":"AAAAHH%2F%2F%2Fwg%3D","updated":"2012-04-27 02:10:06.000000000","message":"Done","commit_id":"8c713fc76350496421e140ee603da36d43835b0d"}],"tests/test_backend.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"282d4cf5422484bc6595b1dbc8ef17ea0d198c3b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from keystone import exception"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def check_backend(test):"},{"line_number":26,"context_line":"    \"\"\"Decorator to skip test for specific backend.\"\"\""},{"line_number":27,"context_line":"    @functools.wraps(test)"},{"line_number":28,"context_line":"    def wrapper(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAHX%2F%2F%2Bvo%3D","line":25,"updated":"2012-05-08 13:16:00.000000000","message":"This is currently being handled by overriding the specific tests in the specific test_backend_* modules. I don\u0027t want to have two different approaches to skip tests per backend...","commit_id":"22184894265b721ffabe1abc3f98dd885f41f6d5"}],"tests/test_backend_kvs.py":[{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"f7541e48bb4986a3c3ff4da64a1d1195907c315e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.identity_api \u003d identity_kvs.Identity(db\u003d{})"},{"line_number":31,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_create_tenant_long_name_fails(self):"},{"line_number":34,"context_line":"        tenant \u003d {\u0027id\u0027: \u0027fake1\u0027, \u0027name\u0027: \u0027a\u0027 * 65}"},{"line_number":35,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":36,"context_line":"                          self.identity_api.create_tenant,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHH%2F%2F%2Bbw%3D","line":33,"updated":"2012-04-30 15:32:06.000000000","message":"instead of duplicating these tests in test_backend_kvs and test_backend_sql, it would make more sense to put them in test_backend, and then explicitly skip or show that they\u0027re functional (or not) in the remaining backends (test_backend_ldap).\n\nThis would reduce the test duplication and encourage other upcoming backends to support this as a default a bit more easily.","commit_id":"db963879ae99a2be1a86805124210ef11ee6038c"}]}
