)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0bf0946ce12802b7f184573183e5b9ba06a4ea4a","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This in turn also simplifies the use of filters, since now there is no need"},{"line_number":17,"context_line":"to iterate the filters in order to get them and now we just return an"},{"line_number":18,"context_line":"inner variable."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ae2828e85891c9e37f30289af1efc01b9e677c6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7adec928_a6a2ca48","line":18,"updated":"2014-05-17 17:15:35.000000000","message":"bug or blueprint?","commit_id":"5ce4e107dac48974e12ab0b8037511f347809dd4"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"206eef321db8c60ed6786d7c1cd559bcce5428a9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This in turn also simplifies the use of filters, since now there is no need"},{"line_number":17,"context_line":"to iterate the filters in order to get them and now we just return an"},{"line_number":18,"context_line":"inner variable."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ae2828e85891c9e37f30289af1efc01b9e677c6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7adec928_bc93ba59","line":18,"in_reply_to":"7adec928_a6a2ca48","updated":"2014-05-18 15:28:21.000000000","message":"Neither, this change arose while talking to dstanek.","commit_id":"5ce4e107dac48974e12ab0b8037511f347809dd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"41ec82410ebf5114a1b78d7658d1285d54572ab5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"This in turn also simplifies the use of filters, since now there is no need"},{"line_number":17,"context_line":"to iterate the filters in order to get them and now we just return an"},{"line_number":18,"context_line":"inner variable."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ae2828e85891c9e37f30289af1efc01b9e677c6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3ae8d1ca_58db301b","line":19,"updated":"2014-05-27 16:03:53.000000000","message":"add bug?","commit_id":"d8240e4fd75b0828ae2b873d3ff93acc4ceeceed"}],"keystone/common/driver_hints.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0bf0946ce12802b7f184573183e5b9ba06a4ea4a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self._filters \u003d list()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def add_filter(self, name, value, comparator\u003d\u0027equals\u0027,"},{"line_number":40,"context_line":"                   case_sensitive\u003dFalse):"},{"line_number":41,"context_line":"        self._filters.append({\u0027name\u0027: name, \u0027value\u0027: value,"},{"line_number":42,"context_line":"                             \u0027comparator\u0027: comparator,"},{"line_number":43,"context_line":"                             \u0027case_sensitive\u0027: case_sensitive,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_e68772b3","line":40,"updated":"2014-05-17 17:15:35.000000000","message":"doc strings? could pull the ones from def filters below and put them here.","commit_id":"5ce4e107dac48974e12ab0b8037511f347809dd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0bf0946ce12802b7f184573183e5b9ba06a4ea4a","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        Each filter term consists of:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        * ``name``: the name of the attribute being matched"},{"line_number":52,"context_line":"        * ``value``: the value against which it is being matched"},{"line_number":53,"context_line":"        * ``comparator``: the operation, which can be one of ``equals``,"},{"line_number":54,"context_line":"                          ``startswith`` or ``endswith``"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_46be6666","line":51,"updated":"2014-05-17 17:15:35.000000000","message":"suggest following the doc strings specified here: \nhttp://docs.openstack.org/developer/hacking/#docstrings","commit_id":"5ce4e107dac48974e12ab0b8037511f347809dd4"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"206eef321db8c60ed6786d7c1cd559bcce5428a9","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        Each filter term consists of:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        * ``name``: the name of the attribute being matched"},{"line_number":52,"context_line":"        * ``value``: the value against which it is being matched"},{"line_number":53,"context_line":"        * ``comparator``: the operation, which can be one of ``equals``,"},{"line_number":54,"context_line":"                          ``startswith`` or ``endswith``"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_dc9c066d","line":51,"in_reply_to":"7adec928_46be6666","updated":"2014-05-18 15:28:21.000000000","message":"This was the way it was, but I can change it, no problem","commit_id":"5ce4e107dac48974e12ab0b8037511f347809dd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0bf0946ce12802b7f184573183e5b9ba06a4ea4a","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def get_limit(self):"},{"line_number":83,"context_line":"        \"\"\"Get the limit to which the list should be truncated.\"\"\""},{"line_number":84,"context_line":"        return self._limit"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_866b0ef0","line":84,"updated":"2014-05-17 17:15:35.000000000","message":"We might not need these get methods. \n\nConsidering that the two are the same. \n\n    hints_obj \u003d Hints()\n    filters \u003d hints_obj.filters() # using the get method in the module \n    filters \u003d hints_obj._filters # accessing the _filters attribute \n\nThe second way would be less lines of code and we could just make the _filters attribute public, removing the prefixed \u0027_\u0027 if we go about it that way. Thoughts?","commit_id":"5ce4e107dac48974e12ab0b8037511f347809dd4"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"206eef321db8c60ed6786d7c1cd559bcce5428a9","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def get_limit(self):"},{"line_number":83,"context_line":"        \"\"\"Get the limit to which the list should be truncated.\"\"\""},{"line_number":84,"context_line":"        return self._limit"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_1c8aee1a","line":84,"in_reply_to":"7adec928_866b0ef0","updated":"2014-05-18 15:28:21.000000000","message":"could be done, sure.","commit_id":"5ce4e107dac48974e12ab0b8037511f347809dd4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d39b72449493ae17d0be4548065b1a6c6f4cbd3f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    accessed publicly. Also it contains a dict called limit, which will"},{"line_number":31,"context_line":"    indicate the amount of data we want to limit our listing to."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    Each filter term consists of:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    * ``name``: the name of the attribute being matched"},{"line_number":36,"context_line":"    * ``value``: the value against which it is being matched"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_12f4035a","line":33,"updated":"2014-05-28 12:06:45.000000000","message":"Nicely done.","commit_id":"3dd0c24edf8be437642af0b8d492830e4525fc1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b35b0c5b139a09fb1800a074bc1639c0a87084b0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                      ``startswith`` or ``endswith``"},{"line_number":39,"context_line":"    * ``case_sensitive``: whether any comparison should take account of"},{"line_number":40,"context_line":"                          case"},{"line_number":41,"context_line":"    * ``type``: will always be \u0027filter\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_9e5db94b","line":41,"updated":"2014-05-29 21:40:12.000000000","message":"seems like if we\u0027re going to describe the filter dicts we should also describe the limit dict.","commit_id":"3dd0c24edf8be437642af0b8d492830e4525fc1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b35b0c5b139a09fb1800a074bc1639c0a87084b0","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def get_exact_filter_by_name(self, name):"},{"line_number":57,"context_line":"        \"\"\"Return a filter key and value if exact filter exists for name.\"\"\""},{"line_number":58,"context_line":"        for entry in self.filters:"},{"line_number":59,"context_line":"            if (entry[\u0027type\u0027] \u003d\u003d \u0027filter\u0027 and entry[\u0027name\u0027] \u003d\u003d name and"},{"line_number":60,"context_line":"                    entry[\u0027comparator\u0027] \u003d\u003d \u0027equals\u0027):"},{"line_number":61,"context_line":"                return entry"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_1ebc496c","line":59,"updated":"2014-05-29 21:40:12.000000000","message":"the check for entry[\u0027type\u0027] \u003d\u003d \u0027filter\u0027 can be removed.","commit_id":"3dd0c24edf8be437642af0b8d492830e4525fc1a"}],"keystone/common/sql/core.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"cab8c5e3df92890abaf02f01b846c82a358c30f2","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from keystone.common import driver_hints"},{"line_number":32,"context_line":"from keystone.common import utils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from keystone import exception"},{"line_number":35,"context_line":"from keystone.openstack.common.db import exception as db_exception"},{"line_number":36,"context_line":"from keystone.openstack.common.db import options as db_options"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_0462d3ac","line":33,"updated":"2014-05-23 14:53:58.000000000","message":"Why the extra whitespace here? Please remove.","commit_id":"d0b29b8e548f7c572c840ba091af398f2e2d1252"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"2033fee05645759fd6fcc06f17415f645148f74f","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from keystone.common import driver_hints"},{"line_number":32,"context_line":"from keystone.common import utils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from keystone import exception"},{"line_number":35,"context_line":"from keystone.openstack.common.db import exception as db_exception"},{"line_number":36,"context_line":"from keystone.openstack.common.db import options as db_options"}],"source_content_type":"text/x-python","patch_set":4,"id":"5adbc538_2c371bb2","line":33,"in_reply_to":"7adec928_0462d3ac","updated":"2014-05-24 11:12:38.000000000","message":"Will do","commit_id":"d0b29b8e548f7c572c840ba091af398f2e2d1252"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"cab8c5e3df92890abaf02f01b846c82a358c30f2","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    \"\"\""},{"line_number":217,"context_line":"    @functools.wraps(f)"},{"line_number":218,"context_line":"    def wrapper(self, hints, *args, **kwargs):"},{"line_number":219,"context_line":"        if not isinstance(hints, driver_hints.Hints):"},{"line_number":220,"context_line":"            raise exception.UnexpectedError("},{"line_number":221,"context_line":"                _(\u0027Cannot truncate a driver call without hints list as \u0027"},{"line_number":222,"context_line":"                  \u0027first parameter after self \u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_64f9d7c7","line":219,"updated":"2014-05-23 14:53:58.000000000","message":"I\u0027d rather not check type if we can help it. Is there anything wrong with:\n\n  if not hasattr(hints, \u0027limit\u0027):","commit_id":"d0b29b8e548f7c572c840ba091af398f2e2d1252"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"2033fee05645759fd6fcc06f17415f645148f74f","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    \"\"\""},{"line_number":217,"context_line":"    @functools.wraps(f)"},{"line_number":218,"context_line":"    def wrapper(self, hints, *args, **kwargs):"},{"line_number":219,"context_line":"        if not isinstance(hints, driver_hints.Hints):"},{"line_number":220,"context_line":"            raise exception.UnexpectedError("},{"line_number":221,"context_line":"                _(\u0027Cannot truncate a driver call without hints list as \u0027"},{"line_number":222,"context_line":"                  \u0027first parameter after self \u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5adbc538_ecbd3304","line":219,"in_reply_to":"7adec928_64f9d7c7","updated":"2014-05-24 11:12:38.000000000","message":"Well, thinking about it, I think it might even be redundant to check for type or get limit, perhaps we could just check if hints is not None and if hints.limit is not None","commit_id":"d0b29b8e548f7c572c840ba091af398f2e2d1252"}]}
