)]}'
{"keystone/common/cache/backends/mongo.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from dogpile.cache import util as dp_util"},{"line_number":20,"context_line":"from oslo_log import log"},{"line_number":21,"context_line":"from oslo_utils import importutils"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from keystone import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_dce00afd","line":22,"updated":"2015-07-13 22:10:26.000000000","message":"Delete this if the change bellow is applied.","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def get_multi(self, keys):"},{"line_number":424,"context_line":"        db_results \u003d self._get_results_as_dict(keys)"},{"line_number":425,"context_line":"        return {doc[\u0027_id\u0027]: doc[\u0027value\u0027] for doc in six.itervalues(db_results)}"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def _get_results_as_dict(self, keys):"},{"line_number":428,"context_line":"        critieria \u003d {\u0027_id\u0027: {\u0027$in\u0027: keys}}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_fcd38e36","line":425,"updated":"2015-07-13 22:10:26.000000000","message":"To keep the convention of leaning away from the six package would db_results.values() work instead of  six.itervalues(db_results).  Looking at the documentation of six, itervalues() is just calling dictionary.values()","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bb90b3858ceb4d77a8bd9833b088b7f23e848cc8","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def get_multi(self, keys):"},{"line_number":424,"context_line":"        db_results \u003d self._get_results_as_dict(keys)"},{"line_number":425,"context_line":"        return {doc[\u0027_id\u0027]: doc[\u0027value\u0027] for doc in six.itervalues(db_results)}"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def _get_results_as_dict(self, keys):"},{"line_number":428,"context_line":"        critieria \u003d {\u0027_id\u0027: {\u0027$in\u0027: keys}}"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_6b33ca62","line":425,"in_reply_to":"9a41bdd9_fcd38e36","updated":"2015-07-31 19:32:56.000000000","message":"this should be done in a separate commit to keep this one simpler.","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"}],"keystone/contrib/endpoint_filter/controllers.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import six"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystone.catalog import controllers as catalog_controllers"},{"line_number":18,"context_line":"from keystone.common import controller"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_fc04ee7e","line":15,"updated":"2015-07-13 22:10:26.000000000","message":"Delete this if the bellow changes are applied.","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                    filtered_endpoints[endpoint_ref[\u0027id\u0027]] \u003d endpoint_ref"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        return catalog_controllers.EndpointV3.wrap_collection("},{"line_number":124,"context_line":"            context, [v for v in six.itervalues(filtered_endpoints)])"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @controller.protected()"},{"line_number":127,"context_line":"    def remove_endpoint_from_project(self, context, project_id, endpoint_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_fce94e1b","line":124,"updated":"2015-07-13 22:10:26.000000000","message":"To get rid of the package six, could we use filtered_endpoints.values() ?","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def _require_valid_filter(self, endpoint_group):"},{"line_number":172,"context_line":"        filters \u003d endpoint_group.get(\u0027filters\u0027)"},{"line_number":173,"context_line":"        for key in six.iterkeys(filters):"},{"line_number":174,"context_line":"            if key not in self.VALID_FILTER_KEYS:"},{"line_number":175,"context_line":"                raise exception.ValidationError("},{"line_number":176,"context_line":"                    attribute\u003dself._valid_filter_keys(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_bcf3c609","line":173,"updated":"2015-07-13 22:10:26.000000000","message":"Would filters.keys() work here?  Please let me know if this is wrong.","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"}],"keystone/tests/unit/test_cache_backend_mongo.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from dogpile.cache import api"},{"line_number":21,"context_line":"from dogpile.cache import region as dp_region"},{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":"from six.moves import range"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from keystone.common.cache.backends import mongo"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7cd21e02","line":22,"updated":"2015-07-13 22:10:26.000000000","message":"If the bellow updates apply you can delete this.","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def _iter_documents(self, spec\u003dNone):"},{"line_number":138,"context_line":"        return (SON_MANIPULATOR.transform_outgoing(document, self) for"},{"line_number":139,"context_line":"                document in six.itervalues(self._documents)"},{"line_number":140,"context_line":"                if self._apply_filter(document, spec))"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _apply_filter(self, document, query):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_8140dfa6","line":139,"updated":"2015-07-13 22:10:26.000000000","message":"To keep the convention of removing the package six self._documents.values() ?","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"c24ae3a56e2015bb7aa3c736e51dce976be7555d","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def update(self, spec, document, upsert\u003dFalse, **kwargs):"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        existing_docs \u003d [doc for doc in six.itervalues(self._documents)"},{"line_number":191,"context_line":"                         if self._apply_filter(doc, spec)]"},{"line_number":192,"context_line":"        if existing_docs:"},{"line_number":193,"context_line":"            existing_doc \u003d existing_docs[0]  # should find only 1 match"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1ce192d0","line":190,"updated":"2015-07-13 22:10:26.000000000","message":"self._documents.values()","commit_id":"1d549274ca654fbe0d526af324c43e0d89bef2e0"}]}
