)]}'
{"glance/registry/db/api.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"73b009d19c78ef470dd2eb358c7764f50b984f33","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    # Ensure a per-column sort direction"},{"line_number":223,"context_line":"    if sort_dirs is None:"},{"line_number":224,"context_line":"        sort_dirs \u003d []"},{"line_number":225,"context_line":"        for _ in xrange(0, len(sort_keys)):"},{"line_number":226,"context_line":"            sort_dirs.append(sort_dir)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    assert(len(sort_dirs) \u003d\u003d len(sort_keys))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5ks%3D","line":225,"updated":"2012-02-17 15:31:45.000000000","message":"Agree with Rick, for a couple reasons... it\u0027s more Pythonic and also using _ here overrides the _() function used for i18n.","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"ccbfcf8d53218b1008e0b3d692de8f42287bd1a5","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    # Ensure a per-column sort direction"},{"line_number":223,"context_line":"    if sort_dirs is None:"},{"line_number":224,"context_line":"        sort_dirs \u003d []"},{"line_number":225,"context_line":"        for _ in xrange(0, len(sort_keys)):"},{"line_number":226,"context_line":"            sort_dirs.append(sort_dir)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    assert(len(sort_dirs) \u003d\u003d len(sort_keys))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5vg%3D","line":225,"updated":"2012-02-16 23:44:10.000000000","message":"Just for discussion, this could also be written as:\n\nfor sort_key in sort_keys:\n  sort_dirs.append(sort_dir)","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"ccbfcf8d53218b1008e0b3d692de8f42287bd1a5","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    assert(len(sort_dirs) \u003d\u003d len(sort_keys))"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Add sorting"},{"line_number":231,"context_line":"    for i in xrange(0, len(sort_keys)):"},{"line_number":232,"context_line":"        sort_dir_func \u003d {"},{"line_number":233,"context_line":"            \u0027asc\u0027: asc,"},{"line_number":234,"context_line":"            \u0027desc\u0027: desc,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5v0%3D","line":231,"updated":"2012-02-16 23:44:10.000000000","message":"Looks like zip could be used here to avoid the index variable.\n\nfor sort_key, sort_dir in zip(sort_keys, sort_dirs):\n    ...","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"9ffc0328e4cc0c5d786d09f9259c22ca92825c29","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    assert(len(sort_dirs) \u003d\u003d len(sort_keys))"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Add sorting"},{"line_number":231,"context_line":"    for i in xrange(0, len(sort_keys)):"},{"line_number":232,"context_line":"        sort_dir_func \u003d {"},{"line_number":233,"context_line":"            \u0027asc\u0027: asc,"},{"line_number":234,"context_line":"            \u0027desc\u0027: desc,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F49o%3D","line":231,"in_reply_to":"AAAAEn%2F%2F5ko%3D","updated":"2012-02-18 18:12:23.000000000","message":"My suggestion above has one small flaw: `sort_dir` is an argument to the function, so would not be a good idea to collide with that.\n\nMaybe use something like _sort_dir, or cur_sort_dir, or the like.","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"73b009d19c78ef470dd2eb358c7764f50b984f33","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    assert(len(sort_dirs) \u003d\u003d len(sort_keys))"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Add sorting"},{"line_number":231,"context_line":"    for i in xrange(0, len(sort_keys)):"},{"line_number":232,"context_line":"        sort_dir_func \u003d {"},{"line_number":233,"context_line":"            \u0027asc\u0027: asc,"},{"line_number":234,"context_line":"            \u0027desc\u0027: desc,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5ko%3D","line":231,"in_reply_to":"AAAAEn%2F%2F5v0%3D","updated":"2012-02-17 15:31:45.000000000","message":"++ on Rick\u0027s suggestion... just a little more Pythonic.","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"ccbfcf8d53218b1008e0b3d692de8f42287bd1a5","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        query \u003d query.order_by(sort_dir_func(sort_key_attr))"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    # Add pagination"},{"line_number":241,"context_line":"    if marker !\u003d None:"},{"line_number":242,"context_line":"        marker_values \u003d []"},{"line_number":243,"context_line":"        for sort_key in sort_keys:"},{"line_number":244,"context_line":"            v \u003d getattr(marker, sort_key)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5vY%3D","line":241,"updated":"2012-02-16 23:44:10.000000000","message":"Should be `is not None`","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"ccbfcf8d53218b1008e0b3d692de8f42287bd1a5","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            elif sort_dirs[i] \u003d\u003d \u0027asc\u0027:"},{"line_number":259,"context_line":"                crit_attrs.append((model_attr \u003e marker_values[i]))"},{"line_number":260,"context_line":"            else:"},{"line_number":261,"context_line":"                assert(False)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            criteria \u003d and_(*crit_attrs)"},{"line_number":264,"context_line":"            criterias.append(criteria)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5vI%3D","line":261,"updated":"2012-02-16 23:44:10.000000000","message":"Might be helpful to do something like\n\nraise ValueError(_\"Unknown sort direction, must be \u0027desc\u0027 or \u0027asc\u0027\")","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"73b009d19c78ef470dd2eb358c7764f50b984f33","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            elif sort_dirs[i] \u003d\u003d \u0027asc\u0027:"},{"line_number":259,"context_line":"                crit_attrs.append((model_attr \u003e marker_values[i]))"},{"line_number":260,"context_line":"            else:"},{"line_number":261,"context_line":"                assert(False)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            criteria \u003d and_(*crit_attrs)"},{"line_number":264,"context_line":"            criterias.append(criteria)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5kk%3D","line":261,"in_reply_to":"AAAAEn%2F%2F5vI%3D","updated":"2012-02-17 15:31:45.000000000","message":"Agree with Rick (but note that it should be:\n\n raise ValueError(_(\"Unknown sort direction, must be \u0027desc\u0027 or \u0027asc\u0027\"))","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"4e0509dacca4662fd657e852f45bd34c8b3e6733","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                assert(False)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"            criteria \u003d and_(*crit_attrs)"},{"line_number":264,"context_line":"            criterias.append(criteria)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        f \u003d or_(*criterias)"},{"line_number":267,"context_line":"        query \u003d query.filter(f)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5mk%3D","line":264,"updated":"2012-02-17 09:19:16.000000000","message":"Highly pedantic grammar nit, but criteria is already a plural form, so the above might read more clearly as:\n\n  criterion \u003d and_(*crit_attrs)\n  criteria.append(criterion)","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"ccbfcf8d53218b1008e0b3d692de8f42287bd1a5","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        f \u003d or_(*criterias)"},{"line_number":267,"context_line":"        query \u003d query.filter(f)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    if limit !\u003d None:"},{"line_number":270,"context_line":"        query \u003d query.limit(limit)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    return query"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5vs%3D","line":269,"updated":"2012-02-16 23:44:10.000000000","message":"This should be:\n\n  if limit is not None","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"a891dedbf0a25755f16cde843820da463593bc0d","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            query \u003d query.filter(getattr(models.Image, k) \u003d\u003d v)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    marker_image \u003d None"},{"line_number":337,"context_line":"    if marker !\u003d None:"},{"line_number":338,"context_line":"        marker_image \u003d image_get(context, marker,"},{"line_number":339,"context_line":"                                 force_show_deleted\u003dshowing_deleted)"},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F49M%3D","line":337,"updated":"2012-02-18 23:26:54.000000000","message":"This should be:\n  if marker is not None","commit_id":"6918802c69f520a9362d469e5e1a916bc1c7e62e"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"5e73f7ec1d6a7ec40358ce54d52f352edfcae37a","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    :return: The query with sorting/pagination added."},{"line_number":209,"context_line":"    \"\"\""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    if not \u0027id\u0027 in sort_keys:"},{"line_number":212,"context_line":"        # TODO(justinsb): If this ever gives a false-positive, check"},{"line_number":213,"context_line":"        # the actual primary key, rather than assuming it\u0027s id"},{"line_number":214,"context_line":"        logger.warn(_(\u0027Id not in sort_keys; is sort_keys unique?\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F4O4%3D","line":211,"updated":"2012-02-21 22:11:12.000000000","message":"MIght be better as:\n\nif \u0027id\u0027 not in sort_keys:","commit_id":"62a01c1a96c75142a7e60a883b03373e68dee5e5"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"5e73f7ec1d6a7ec40358ce54d52f352edfcae37a","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    if sort_dirs is None:"},{"line_number":224,"context_line":"        sort_dirs \u003d []"},{"line_number":225,"context_line":"        for _sort_key in sort_keys:"},{"line_number":226,"context_line":"            sort_dirs.append(sort_dir)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    assert(len(sort_dirs) \u003d\u003d len(sort_keys))"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F4Ow%3D","line":226,"updated":"2012-02-21 22:11:12.000000000","message":"A list comprehension could work here:\n\nif sort_dirs is None:\n    sort_dirs \u003d [sort_dir for _sort_key in sort_keys]","commit_id":"62a01c1a96c75142a7e60a883b03373e68dee5e5"}]}
