)]}'
{"etc/glance-api.conf":[{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"22c559d8339b04652894f5f5a8b69cace6e6fbd7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"# equal to the number of CPUs available. (integer value)"},{"line_number":46,"context_line":"workers \u003d 0"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"sql_connection \u003d sqlite://///tmp/tests.sqlite"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"# Maximum line size of message headers to be accepted."},{"line_number":51,"context_line":"# max_header_line may need to be increased when using large tokens"}],"source_content_type":"text/plain","patch_set":5,"id":"da20952f_2fe806e2","line":48,"updated":"2015-08-27 14:00:52.000000000","message":"This shouldn\u0027t be comited here","commit_id":"bfce787b72abc9b9bffad70711c3848246c85874"}],"glance/api/v3/artifacts.py":[{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"421333bdc36307d8ae42d9e745faa9daf7362b8f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        filters.update(type_name\u003d{\u0027value\u0027: type_name},"},{"line_number":105,"context_line":"                       state\u003d{\u0027value\u0027: state})"},{"line_number":106,"context_line":"        if type_version is not None:"},{"line_number":107,"context_line":"            filters[\u0027type_version\u0027] \u003d {\u0027value\u0027: type_version}"},{"line_number":108,"context_line":"        if \u0027version\u0027 in filters and filters[\u0027version\u0027][\u0027value\u0027] \u003d\u003d \u0027latest\u0027:"},{"line_number":109,"context_line":"            if \u0027name\u0027 in filters:"},{"line_number":110,"context_line":"                filters[\u0027version\u0027][\u0027value\u0027] \u003d self._get_latest_version("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_30d863ef","line":107,"updated":"2015-08-24 11:44:05.000000000","message":"This will lead to exception, as filters[\u0027version\u0027] is a list now","commit_id":"f1b66aeb553c8646f5bd6773c534303125428fdf"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"1887f04b5632a0bbc74827e528b1d8793993d771","unresolved":false,"context_lines":[{"line_number":747,"context_line":"                    op \u003d \u0027IN\u0027 if isinstance(prop_type, list) else \u0027EQ\u0027"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"            if property_name not in filters:"},{"line_number":750,"context_line":"                filters[property_name] \u003d list()"},{"line_number":751,"context_line":""},{"line_number":752,"context_line":"            filters[property_name].append(dict(operator\u003dop, position\u003dposition,"},{"line_number":753,"context_line":"                                               value\u003dproperty_value,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_75f7adf5","line":750,"updated":"2015-08-24 11:22:48.000000000","message":"This may be rewritten as filters.setdefault(property_name, []) - this is a more pythonic approach","commit_id":"f1b66aeb553c8646f5bd6773c534303125428fdf"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"44721c1410ceb697b76e922ae3942863d692def2","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                       state\u003d{\u0027value\u0027: state})"},{"line_number":106,"context_line":"        if type_version is not None:"},{"line_number":107,"context_line":"            filters[\u0027type_version\u0027] \u003d {\u0027value\u0027: type_version}"},{"line_number":108,"context_line":"        if \u0027version\u0027 in filters and filters[\u0027version\u0027][0][\u0027value\u0027] \u003d\u003d \u0027latest\u0027:"},{"line_number":109,"context_line":"            if \u0027name\u0027 in filters:"},{"line_number":110,"context_line":"                filters[\u0027version\u0027][0][\u0027value\u0027] \u003d self._get_latest_version("},{"line_number":111,"context_line":"                    req, filters[\u0027name\u0027][0][\u0027value\u0027], type_name, type_version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_286d6a04","line":108,"updated":"2015-08-27 10:59:54.000000000","message":"What heppens if filters[\u0027version\u0027][1][\u0027value\u0027] is latest? :)\nyou should replace all the latest values to the actual latest ver, regardless of the position in query.","commit_id":"cafe834798ba27b0c65b56e8063cba0223856bb4"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"22c559d8339b04652894f5f5a8b69cace6e6fbd7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        if type_version is not None:"},{"line_number":107,"context_line":"            filters[\u0027type_version\u0027] \u003d {\u0027value\u0027: type_version}"},{"line_number":108,"context_line":"        if \u0027version\u0027 in filters:"},{"line_number":109,"context_line":"            if \u0027name\u0027 not in filters:"},{"line_number":110,"context_line":"                raise webob.exc.HTTPBadRequest("},{"line_number":111,"context_line":"                    \u0027Filtering by version without specifying a name is not\u0027"},{"line_number":112,"context_line":"                    \u0027 supported.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_efc44e41","line":109,"updated":"2015-08-27 14:00:52.000000000","message":"This exception should not be here: the request to list all pre-release artifacts (e.g. /v3/artifacts/type?version:lt:1.0) is perfectly fine. The exception should be thrown only if the \"latest\" is mentioned, as there is no \"generic\" letest, jsut for a given name","commit_id":"bfce787b72abc9b9bffad70711c3848246c85874"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"22c559d8339b04652894f5f5a8b69cace6e6fbd7","unresolved":false,"context_lines":[{"line_number":748,"context_line":"                if op \u003d\u003d \u0027default\u0027:"},{"line_number":749,"context_line":"                    op \u003d \u0027IN\u0027 if isinstance(prop_type, list) else \u0027EQ\u0027"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"            if property_name not in filters:"},{"line_number":752,"context_line":"                filters.setdefault(property_name, [])"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"            filters[property_name].append(dict(operator\u003dop, position\u003dposition,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_2fd24601","line":751,"updated":"2015-08-27 14:00:52.000000000","message":"No need for if: setdefault does not set anything if the key is present","commit_id":"bfce787b72abc9b9bffad70711c3848246c85874"}],"glance/db/sqlalchemy/artifacts.py":[{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"226c80442ab12b688c2e2dc32eb421cc2f68fa68","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    tags \u003d filters.pop(\u0027tags\u0027, None)"},{"line_number":513,"context_line":"    if tags is not None:"},{"line_number":514,"context_line":"        for tag in tags[\u0027value\u0027]:"},{"line_number":515,"context_line":"            tag_conds.append([models.ArtifactTag.value \u003d\u003d tag])"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    # process remaining filters"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_2c445272","line":514,"updated":"2015-08-25 12:34:45.000000000","message":"This becomes broken now: tags is a list of dicts now.","commit_id":"f1b66aeb553c8646f5bd6773c534303125428fdf"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"44721c1410ceb697b76e922ae3942863d692def2","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    tags \u003d filters.pop(\u0027tags\u0027, None)"},{"line_number":513,"context_line":"    if tags is not None:"},{"line_number":514,"context_line":"        for tag in tags[\u0027value\u0027]:"},{"line_number":515,"context_line":"            tag_conds.append([models.ArtifactTag.value \u003d\u003d tag])"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    # process remaining filters"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_c855ce1d","line":514,"updated":"2015-08-27 10:59:54.000000000","message":"If tags are passed as a regular filter (i.e. the query string contains \"?tags\u003d\" param) this will cause an exception.","commit_id":"cafe834798ba27b0c65b56e8063cba0223856bb4"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"22c559d8339b04652894f5f5a8b69cace6e6fbd7","unresolved":false,"context_lines":[{"line_number":512,"context_line":"    tags \u003d filters.pop(\u0027tags\u0027, None)"},{"line_number":513,"context_line":"    if tags is not None:"},{"line_number":514,"context_line":"        for tag in tags:"},{"line_number":515,"context_line":"            tag_conds.append([models.ArtifactTag.value \u003d\u003d tag[\u0027value\u0027]])"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    # process remaining filters"},{"line_number":518,"context_line":"    for filtername, filtervalues in filters.items():"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_4ff69a90","line":515,"updated":"2015-08-27 14:00:52.000000000","message":"This one checks for equality only. Why can\u0027t we use not equal for this purpose as well?","commit_id":"bfce787b72abc9b9bffad70711c3848246c85874"}]}
