)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2015-04-10 11:30:35 +0300"},{"line_number":4,"context_line":"Commit:     Ilya Tyaptin \u003cityaptin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-10 13:44:35 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[MongoDB] Use a aggregate pipeline in statistics"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, we use a native mapreduce jobs for highload requests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_d60008ad","line":6,"updated":"2015-04-13 10:09:57.000000000","message":"a \u003d\u003e an, statistics \u003d\u003e get_statistics","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-04-10 13:44:35 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[MongoDB] Use a aggregate pipeline in statistics"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, we use a native mapreduce jobs for highload requests"},{"line_number":10,"context_line":"in MongoDb backend, but this approach have insufficient performance."},{"line_number":11,"context_line":"For example, at test environment mapreduce job processes a 10k samples/sec."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_56b998e8","line":8,"updated":"2015-04-13 10:09:57.000000000","message":"remove \u0027a\u0027","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[MongoDB] Use a aggregate pipeline in statistics"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, we use a native mapreduce jobs for highload requests"},{"line_number":10,"context_line":"in MongoDb backend, but this approach have insufficient performance."},{"line_number":11,"context_line":"For example, at test environment mapreduce job processes a 10k samples/sec."},{"line_number":12,"context_line":"It\u0027s not good result for big collections."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_d6c5a85b","line":9,"updated":"2015-04-13 10:09:57.000000000","message":"have \u003d\u003e has","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently, we use a native mapreduce jobs for highload requests"},{"line_number":10,"context_line":"in MongoDb backend, but this approach have insufficient performance."},{"line_number":11,"context_line":"For example, at test environment mapreduce job processes a 10k samples/sec."},{"line_number":12,"context_line":"It\u0027s not good result for big collections."},{"line_number":13,"context_line":"Aggregation framework has a better performance and enought syntaxis"},{"line_number":14,"context_line":"for our needs. At test environment it shows a improving \"statistics\" request"},{"line_number":15,"context_line":"performance up to 10 times."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_5614f8f3","line":12,"updated":"2015-04-13 10:09:57.000000000","message":"enough","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in MongoDb backend, but this approach have insufficient performance."},{"line_number":11,"context_line":"For example, at test environment mapreduce job processes a 10k samples/sec."},{"line_number":12,"context_line":"It\u0027s not good result for big collections."},{"line_number":13,"context_line":"Aggregation framework has a better performance and enought syntaxis"},{"line_number":14,"context_line":"for our needs. At test environment it shows a improving \"statistics\" request"},{"line_number":15,"context_line":"performance up to 10 times."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_760c9494","line":13,"updated":"2015-04-13 10:09:57.000000000","message":"shows up to 10 times performance improvement for \u0027get_statistics\u0027","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"cb6d047bbcacf2af00597e901c30fe21f68e487f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2015-04-10 11:30:35 +0300"},{"line_number":4,"context_line":"Commit:     Ilya Tyaptin \u003cityaptin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-15 18:10:52 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[MongoDB] Use a aggregate pipeline in statistics"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, we use a native mapreduce jobs for highload requests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa32b979_12d18357","line":6,"updated":"2015-06-16 08:13:42.000000000","message":"a \u003d\u003e an","commit_id":"d6d5a086dd1c27f88071bf95c78151be8721b46b"}],"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        if limit is None:"},{"line_number":483,"context_line":"            limit \u003d 0"},{"line_number":484,"context_line":"        return db_collection.find(q, limit\u003dlimit, sort\u003dall_sort)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    @staticmethod"},{"line_number":487,"context_line":"    def to_unix_timestamp(timestamp):"},{"line_number":488,"context_line":"        if isinstance(timestamp, datetime.datetime):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_96a040f6","line":485,"updated":"2015-04-13 10:09:57.000000000","message":"Don\u0027t we have such code in utils.py anywhere?","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            return self._get_floating_resources(query, metaquery, resource)"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    @staticmethod"},{"line_number":633,"context_line":"    def _make_period_dict(period, first_ts):"},{"line_number":634,"context_line":"        # first_ts -\u003d 1"},{"line_number":635,"context_line":"        period_unique_dict \u003d {"},{"line_number":636,"context_line":"            \"period_start\": {"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_56819849","line":633,"updated":"2015-04-13 10:09:57.000000000","message":"draft code detected :)","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"cb6d047bbcacf2af00597e901c30fe21f68e487f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self._compatible_project \u003d compatible_project"},{"line_number":80,"context_line":"        self._compatible_finalize \u003d compatible_finalize"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def group(self, param\u003dNone, compatibility\u003dFalse):"},{"line_number":83,"context_line":"        group \u003d self._group"},{"line_number":84,"context_line":"        if compatibility and self._compatible_group:"},{"line_number":85,"context_line":"            group \u003d self._compatible_group"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_c57cb374","line":82,"updated":"2015-06-16 08:13:42.000000000","message":"Here you name the variable as a method so in this scope when you print group(param) you will reference to variable \u0027group\u0027 from line 83, not the function from line 82. Is it what you want?\nAnyway, I think that such code is not clear. The same it may be said about project() and finalize()","commit_id":"d6d5a086dd1c27f88071bf95c78151be8721b46b"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"cb6d047bbcacf2af00597e901c30fe21f68e487f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    parametrized\u003dTrue"},{"line_number":152,"context_line":")"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"def to_unix_timestamp(timestamp):"},{"line_number":156,"context_line":"    if isinstance(timestamp, datetime.datetime):"},{"line_number":157,"context_line":"        return int(time.mktime(timestamp.timetuple()))"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_45e8a310","line":154,"updated":"2015-06-16 08:13:42.000000000","message":"Maybe we can move it in some \u0027utils.py\u0027?","commit_id":"d6d5a086dd1c27f88071bf95c78151be8721b46b"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"cb6d047bbcacf2af00597e901c30fe21f68e487f","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            raise storage.StorageBadVersion(\"Need at least MongoDB 2.4\")"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        # Require MongoDB 2.6 to use $size operator in Aggregation pipeline"},{"line_number":260,"context_line":"        self.aggregation_compatibility \u003d False"},{"line_number":261,"context_line":"        if self.version \u003c self._VERSION_WITH_FULL_AGGREGATION_FUNCTIONAL:"},{"line_number":262,"context_line":"            self.aggregation_compatibility \u003d True"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_05061bce","line":260,"updated":"2015-06-16 08:13:42.000000000","message":"looks wrong. if the version is less then 2.6 self.aggregation_compatibility \u003d True?","commit_id":"d6d5a086dd1c27f88071bf95c78151be8721b46b"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"cb6d047bbcacf2af00597e901c30fe21f68e487f","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        if limit is None:"},{"line_number":554,"context_line":"            limit \u003d 0"},{"line_number":555,"context_line":"        return db_collection.find(q, limit\u003dlimit, sort\u003dall_sort)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    @staticmethod"},{"line_number":558,"context_line":"    def to_unix_timestamp(timestamp):"},{"line_number":559,"context_line":"        if isinstance(timestamp, datetime.datetime):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_052dbb45","line":556,"updated":"2015-06-16 08:13:42.000000000","message":"code duplication?","commit_id":"d6d5a086dd1c27f88071bf95c78151be8721b46b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b9517fb828a6ca4842f063c309c91872c43ee8bb","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    _GENESIS \u003d datetime.datetime(year\u003ddatetime.MINYEAR, month\u003d1, day\u003d1)"},{"line_number":139,"context_line":"    _APOCALYPSE \u003d datetime.datetime(year\u003ddatetime.MAXYEAR, month\u003d12, day\u003d31,"},{"line_number":140,"context_line":"                                    hour\u003d23, minute\u003d59, second\u003d59)"},{"line_number":141,"context_line":"    _VERSION_WITH_FULL_AGGREGATION_FUNCTIONAL \u003d [2, 6]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def __init__(self, url):"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_2ef045c8","line":141,"updated":"2015-07-23 15:58:06.000000000","message":"This does not seems used?","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"149635edad0cb7c9b8a6670d6e894cbde1f8976c","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    _GENESIS \u003d datetime.datetime(year\u003ddatetime.MINYEAR, month\u003d1, day\u003d1)"},{"line_number":139,"context_line":"    _APOCALYPSE \u003d datetime.datetime(year\u003ddatetime.MAXYEAR, month\u003d12, day\u003d31,"},{"line_number":140,"context_line":"                                    hour\u003d23, minute\u003d59, second\u003d59)"},{"line_number":141,"context_line":"    _VERSION_WITH_FULL_AGGREGATION_FUNCTIONAL \u003d [2, 6]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def __init__(self, url):"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_89db937b","line":141,"in_reply_to":"3a50d1a3_2ef045c8","updated":"2015-07-23 16:05:44.000000000","message":"Yep, it should used in _make_aggregation_params and in utils.Aggregation","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b9517fb828a6ca4842f063c309c91872c43ee8bb","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        self.conn \u003d self.CONNECTION_POOL.connect(url)"},{"line_number":150,"context_line":"        self.version \u003d self.conn.server_info()[\u0027versionArray\u0027]"},{"line_number":151,"context_line":"        # Require MongoDB 2.4 to use $setOnInsert"},{"line_number":152,"context_line":"        if self.version \u003c [2, 4]:"},{"line_number":153,"context_line":"            raise storage.StorageBadVersion(\"Need at least MongoDB 2.4\")"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        connection_options \u003d pymongo.uri_parser.parse_uri(url)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_eebc9ddd","line":152,"updated":"2015-07-23 15:58:06.000000000","message":"So you want to change that no IIUC?","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"149635edad0cb7c9b8a6670d6e894cbde1f8976c","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        self.conn \u003d self.CONNECTION_POOL.connect(url)"},{"line_number":150,"context_line":"        self.version \u003d self.conn.server_info()[\u0027versionArray\u0027]"},{"line_number":151,"context_line":"        # Require MongoDB 2.4 to use $setOnInsert"},{"line_number":152,"context_line":"        if self.version \u003c [2, 4]:"},{"line_number":153,"context_line":"            raise storage.StorageBadVersion(\"Need at least MongoDB 2.4\")"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        connection_options \u003d pymongo.uri_parser.parse_uri(url)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_ae10d559","line":152,"in_reply_to":"3a50d1a3_eebc9ddd","updated":"2015-07-23 16:05:44.000000000","message":"How I know in jenkins we use Ubuntu Trusty, but it has only  MongoDB 2.4.14 in default repos","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b9517fb828a6ca4842f063c309c91872c43ee8bb","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # Transform datetime to unix timestamp"},{"line_number":306,"context_line":"        record[\u0027unix_timestamp\u0027] \u003d pymongo_utils.to_unix_timestamp("},{"line_number":307,"context_line":"            record[\u0027timestamp\u0027])"},{"line_number":308,"context_line":"        self.db.meter.insert_one(record)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def clear_expired_metering_data(self, ttl):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_6ecded64","line":307,"updated":"2015-07-23 15:58:06.000000000","message":"What about compat with samples already there that do not have this field?","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"149635edad0cb7c9b8a6670d6e894cbde1f8976c","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # Transform datetime to unix timestamp"},{"line_number":306,"context_line":"        record[\u0027unix_timestamp\u0027] \u003d pymongo_utils.to_unix_timestamp("},{"line_number":307,"context_line":"            record[\u0027timestamp\u0027])"},{"line_number":308,"context_line":"        self.db.meter.insert_one(record)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def clear_expired_metering_data(self, ttl):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_693de7c2","line":307,"in_reply_to":"3a50d1a3_6ecded64","updated":"2015-07-23 16:05:44.000000000","message":"Hmm, I\u0027ll research way of reusing current timestamp or upgrade old data.","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b9517fb828a6ca4842f063c309c91872c43ee8bb","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                                            version_array\u003dself.version)"},{"line_number":664,"context_line":"                    )"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def _get_results(self, results):"},{"line_number":667,"context_line":"        if isinstance(results, dict):"},{"line_number":668,"context_line":"            return results.get(\u0027result\u0027, [])"},{"line_number":669,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_2e6b6586","line":666,"updated":"2015-07-23 15:58:06.000000000","message":"@staticmethod","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"149635edad0cb7c9b8a6670d6e894cbde1f8976c","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                                            version_array\u003dself.version)"},{"line_number":664,"context_line":"                    )"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    def _get_results(self, results):"},{"line_number":667,"context_line":"        if isinstance(results, dict):"},{"line_number":668,"context_line":"            return results.get(\u0027result\u0027, [])"},{"line_number":669,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_893873d4","line":666,"in_reply_to":"3a50d1a3_2e6b6586","updated":"2015-07-23 16:05:44.000000000","message":"ok","commit_id":"089df36e87b67b5c137d978dbf33f4c2ee692491"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7309ea04aef03e4bf992fa13d21e60f1d46f766a","unresolved":false,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        # Require MongoDB 2.4 to use $setOnInsert"},{"line_number":398,"context_line":"        if self.conn.server_info()[\u0027versionArray\u0027] \u003c [2, 4]:"},{"line_number":399,"context_line":"            raise storage.StorageBadVersion(\"Need at least MongoDB 2.4\")"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        connection_options \u003d pymongo.uri_parser.parse_uri(url)"},{"line_number":402,"context_line":"        self.db \u003d getattr(self.conn, connection_options[\u0027database\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_3b5d5a79","side":"PARENT","line":399,"updated":"2015-07-27 18:08:18.000000000","message":"This error message should be updated to reflect the MIN* constant in the line above?","commit_id":"6c20b50c6b78599d9b4eba604730b89aeb076b81"}],"ceilometer/tests/api/v2/test_statistics_scenarios.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e9aede609812ea8515fdc60419788c5e5ebe3493","unresolved":false,"context_lines":[{"line_number":1548,"context_line":"        for a in standard_aggregates:"},{"line_number":1549,"context_line":"            self.assertNotIn(a, r)"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    def test_bad_selectable_parameterized_aggregate(self):"},{"line_number":1552,"context_line":"        agg_args \u003d {\u0027aggregate.func\u0027: \u0027cardinality\u0027,"},{"line_number":1553,"context_line":"                    \u0027aggregate.param\u0027: \u0027injection_attack\u0027}"},{"line_number":1554,"context_line":"        resp \u003d self.get_json(self.PATH, status\u003d[400],"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_a264cfb8","side":"PARENT","line":1551,"updated":"2015-07-28 00:54:56.000000000","message":"why was this deleted?","commit_id":"6c20b50c6b78599d9b4eba604730b89aeb076b81"}],"test-requirements.txt":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6c06d7511f4568310b14192895ac610a438cd40b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"oslotest\u003e\u003d1.5.1,\u003c1.6.0  # Apache-2.0"},{"line_number":19,"context_line":"oslo.vmware\u003e\u003d0.11.1,\u003c0.12.0                     # Apache-2.0"},{"line_number":20,"context_line":"psycopg2"},{"line_number":21,"context_line":"pylint\u003e\u003d1.3.0  # GNU GPL v2"},{"line_number":22,"context_line":"pymongo\u003d\u003d2.6.3"},{"line_number":23,"context_line":"python-subunit\u003e\u003d0.0.18"},{"line_number":24,"context_line":"sphinx\u003e\u003d1.1.2,!\u003d1.2.0,!\u003d1.3b1,\u003c1.3"}],"source_content_type":"text/plain","patch_set":2,"id":"7aaa499b_b65e9ce7","line":21,"updated":"2015-04-13 10:09:57.000000000","message":"why? This change doesn\u0027t seem appropriate","commit_id":"1f321c58771bc581cf25556b7f995f7a5da89758"}]}
