)]}'
{"openstack_releases/cmds/list_deliverables.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"b336d90caa111f7e33354be802d1d0763858f861","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    csvfile \u003d None"},{"line_number":142,"context_line":"    if args.csvfile:"},{"line_number":143,"context_line":"        csvfile \u003d open(args.csvfile, \u0027w\u0027)"},{"line_number":144,"context_line":"        fieldnames \u003d [\u0027name\u0027, \u0027latest_release\u0027, \u0027repo\u0027, \u0027hash\u0027,"},{"line_number":145,"context_line":"                      \u0027team\u0027, \u0027type\u0027, \u0027model\u0027]"},{"line_number":146,"context_line":"        writer \u003d csv.DictWriter(csvfile, fieldnames\u003dfieldnames)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_ce02c26f","line":143,"updated":"2017-04-04 16:33:09.000000000","message":"How about making the flag just --csv and then writing to stdout. That avoids the file handling, and lets us pipe the output to other commands or redirect it to a file.","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"36a18dcc6eb5ef0d249e17e64d34214b20862f02","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    csvfile \u003d None"},{"line_number":142,"context_line":"    if args.csvfile:"},{"line_number":143,"context_line":"        csvfile \u003d open(args.csvfile, \u0027w\u0027)"},{"line_number":144,"context_line":"        fieldnames \u003d [\u0027name\u0027, \u0027latest_release\u0027, \u0027repo\u0027, \u0027hash\u0027,"},{"line_number":145,"context_line":"                      \u0027team\u0027, \u0027type\u0027, \u0027model\u0027]"},{"line_number":146,"context_line":"        writer \u003d csv.DictWriter(csvfile, fieldnames\u003dfieldnames)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_84adbbea","line":143,"in_reply_to":"dfeb2761_29d48847","updated":"2017-04-04 17:10:09.000000000","message":"I\u0027m not sure why tox matters, can you explain that a little more?","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"88ff604a4eb5fd6e5fffea73fd6012d76dbedf0a","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    csvfile \u003d None"},{"line_number":142,"context_line":"    if args.csvfile:"},{"line_number":143,"context_line":"        csvfile \u003d open(args.csvfile, \u0027w\u0027)"},{"line_number":144,"context_line":"        fieldnames \u003d [\u0027name\u0027, \u0027latest_release\u0027, \u0027repo\u0027, \u0027hash\u0027,"},{"line_number":145,"context_line":"                      \u0027team\u0027, \u0027type\u0027, \u0027model\u0027]"},{"line_number":146,"context_line":"        writer \u003d csv.DictWriter(csvfile, fieldnames\u003dfieldnames)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_94260415","line":143,"in_reply_to":"dfeb2761_6ef16d95","updated":"2017-04-04 22:24:51.000000000","message":"I think I see. I\u0027m only asking about this because it\u0027s so different from the way any of the other tools work.\n\nWhat are you using the files for?","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":7562,"name":"Dmitry Teselkin","email":"dteselkin@mirantis.com","username":"dteselkin"},"change_message_id":"a1d64940bb43c54125071e7c367722a8186b6ac9","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    csvfile \u003d None"},{"line_number":142,"context_line":"    if args.csvfile:"},{"line_number":143,"context_line":"        csvfile \u003d open(args.csvfile, \u0027w\u0027)"},{"line_number":144,"context_line":"        fieldnames \u003d [\u0027name\u0027, \u0027latest_release\u0027, \u0027repo\u0027, \u0027hash\u0027,"},{"line_number":145,"context_line":"                      \u0027team\u0027, \u0027type\u0027, \u0027model\u0027]"},{"line_number":146,"context_line":"        writer \u003d csv.DictWriter(csvfile, fieldnames\u003dfieldnames)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_6ef16d95","line":143,"in_reply_to":"dfeb2761_84adbbea","updated":"2017-04-04 21:05:37.000000000","message":"It\u0027s just a convenient way to get the result in few commands - clone the repo, then run \u0027tox -evenv -- list_deliverables --csvfile result.txt\u0027. Writing result to file will work in both ways (run from venv and from tox) while writing to stdout only in the latter.","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":7562,"name":"Dmitry Teselkin","email":"dteselkin@mirantis.com","username":"dteselkin"},"change_message_id":"c81caebe516e31aafce1fc8d9941ec17f13b5a6e","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    csvfile \u003d None"},{"line_number":142,"context_line":"    if args.csvfile:"},{"line_number":143,"context_line":"        csvfile \u003d open(args.csvfile, \u0027w\u0027)"},{"line_number":144,"context_line":"        fieldnames \u003d [\u0027name\u0027, \u0027latest_release\u0027, \u0027repo\u0027, \u0027hash\u0027,"},{"line_number":145,"context_line":"                      \u0027team\u0027, \u0027type\u0027, \u0027model\u0027]"},{"line_number":146,"context_line":"        writer \u003d csv.DictWriter(csvfile, fieldnames\u003dfieldnames)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_7c347993","line":143,"in_reply_to":"dfeb2761_94260415","updated":"2017-04-05 08:24:34.000000000","message":"Tracking downstream code - check that version matches, that latest commit was packaged, that new projects were added, and removing deprecated ones.","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":7562,"name":"Dmitry Teselkin","email":"dteselkin@mirantis.com","username":"dteselkin"},"change_message_id":"ee5d4f4adb4696935029090893c4f059644b27a1","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    csvfile \u003d None"},{"line_number":142,"context_line":"    if args.csvfile:"},{"line_number":143,"context_line":"        csvfile \u003d open(args.csvfile, \u0027w\u0027)"},{"line_number":144,"context_line":"        fieldnames \u003d [\u0027name\u0027, \u0027latest_release\u0027, \u0027repo\u0027, \u0027hash\u0027,"},{"line_number":145,"context_line":"                      \u0027team\u0027, \u0027type\u0027, \u0027model\u0027]"},{"line_number":146,"context_line":"        writer \u003d csv.DictWriter(csvfile, fieldnames\u003dfieldnames)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_29d48847","line":143,"in_reply_to":"dfeb2761_ce02c26f","updated":"2017-04-04 16:54:27.000000000","message":"Actually I wanted to write directly to file instead of writing to stdout - mainly because it allows to use tox for gathering this data. If you think that stdout is the only way - well, then I can update the request. As for naming csvfile vs csv - I believe it doesn\u0027t matter :)","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"b336d90caa111f7e33354be802d1d0763858f861","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            for prj in rel.get(\u0027projects\u0027, [{}]):"},{"line_number":188,"context_line":"                writer.writerow({"},{"line_number":189,"context_line":"                    \u0027name\u0027: deliv.name,"},{"line_number":190,"context_line":"                    \u0027latest_release\u0027: rel.get(\u0027version\u0027, None),"},{"line_number":191,"context_line":"                    \u0027repo\u0027: prj.get(\u0027repo\u0027, None),"},{"line_number":192,"context_line":"                    \u0027hash\u0027: prj.get(\u0027hash\u0027, None),"},{"line_number":193,"context_line":"                    \u0027team\u0027: deliv.team,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_ce9be263","line":190,"updated":"2017-04-04 16:33:09.000000000","message":"Does this produce \"None\" or \"\" as the field value? Which would we want?","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"36a18dcc6eb5ef0d249e17e64d34214b20862f02","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            for prj in rel.get(\u0027projects\u0027, [{}]):"},{"line_number":188,"context_line":"                writer.writerow({"},{"line_number":189,"context_line":"                    \u0027name\u0027: deliv.name,"},{"line_number":190,"context_line":"                    \u0027latest_release\u0027: rel.get(\u0027version\u0027, None),"},{"line_number":191,"context_line":"                    \u0027repo\u0027: prj.get(\u0027repo\u0027, None),"},{"line_number":192,"context_line":"                    \u0027hash\u0027: prj.get(\u0027hash\u0027, None),"},{"line_number":193,"context_line":"                    \u0027team\u0027: deliv.team,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_2486ef67","line":190,"in_reply_to":"dfeb2761_49ba2c0a","updated":"2017-04-04 17:10:09.000000000","message":"I agree, an empty field is good here.","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":7562,"name":"Dmitry Teselkin","email":"dteselkin@mirantis.com","username":"dteselkin"},"change_message_id":"ee5d4f4adb4696935029090893c4f059644b27a1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            for prj in rel.get(\u0027projects\u0027, [{}]):"},{"line_number":188,"context_line":"                writer.writerow({"},{"line_number":189,"context_line":"                    \u0027name\u0027: deliv.name,"},{"line_number":190,"context_line":"                    \u0027latest_release\u0027: rel.get(\u0027version\u0027, None),"},{"line_number":191,"context_line":"                    \u0027repo\u0027: prj.get(\u0027repo\u0027, None),"},{"line_number":192,"context_line":"                    \u0027hash\u0027: prj.get(\u0027hash\u0027, None),"},{"line_number":193,"context_line":"                    \u0027team\u0027: deliv.team,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_49ba2c0a","line":190,"in_reply_to":"dfeb2761_ce9be263","updated":"2017-04-04 16:54:27.000000000","message":"With csv writer it produces \"\" that is OK I believe.","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"b336d90caa111f7e33354be802d1d0763858f861","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                writer.writerow({"},{"line_number":189,"context_line":"                    \u0027name\u0027: deliv.name,"},{"line_number":190,"context_line":"                    \u0027latest_release\u0027: rel.get(\u0027version\u0027, None),"},{"line_number":191,"context_line":"                    \u0027repo\u0027: prj.get(\u0027repo\u0027, None),"},{"line_number":192,"context_line":"                    \u0027hash\u0027: prj.get(\u0027hash\u0027, None),"},{"line_number":193,"context_line":"                    \u0027team\u0027: deliv.team,"},{"line_number":194,"context_line":"                    \u0027type\u0027: deliv.type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_0ee42ae0","line":191,"updated":"2017-04-04 16:33:09.000000000","message":"If we can\u0027t get the repo or hash, the project is formatted incorrectly. I wonder if we should just skip the entry?","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":7562,"name":"Dmitry Teselkin","email":"dteselkin@mirantis.com","username":"dteselkin"},"change_message_id":"ee5d4f4adb4696935029090893c4f059644b27a1","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                writer.writerow({"},{"line_number":189,"context_line":"                    \u0027name\u0027: deliv.name,"},{"line_number":190,"context_line":"                    \u0027latest_release\u0027: rel.get(\u0027version\u0027, None),"},{"line_number":191,"context_line":"                    \u0027repo\u0027: prj.get(\u0027repo\u0027, None),"},{"line_number":192,"context_line":"                    \u0027hash\u0027: prj.get(\u0027hash\u0027, None),"},{"line_number":193,"context_line":"                    \u0027team\u0027: deliv.team,"},{"line_number":194,"context_line":"                    \u0027type\u0027: deliv.type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_8920344a","line":191,"in_reply_to":"dfeb2761_0ee42ae0","updated":"2017-04-04 16:54:27.000000000","message":"I added default values because project with missed fields where not written to the file and it confused me. I believe it\u0027s better to get a file that contains info about all project with missed fields rather then reduced list. With full list it\u0027s possible to select projects with problems.","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"36a18dcc6eb5ef0d249e17e64d34214b20862f02","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                writer.writerow({"},{"line_number":189,"context_line":"                    \u0027name\u0027: deliv.name,"},{"line_number":190,"context_line":"                    \u0027latest_release\u0027: rel.get(\u0027version\u0027, None),"},{"line_number":191,"context_line":"                    \u0027repo\u0027: prj.get(\u0027repo\u0027, None),"},{"line_number":192,"context_line":"                    \u0027hash\u0027: prj.get(\u0027hash\u0027, None),"},{"line_number":193,"context_line":"                    \u0027team\u0027: deliv.team,"},{"line_number":194,"context_line":"                    \u0027type\u0027: deliv.type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_44ba130a","line":191,"in_reply_to":"dfeb2761_8920344a","updated":"2017-04-04 17:10:09.000000000","message":"OK, I think I see what this will do now. Since you default the list of projects to [{}] above, you\u0027ll see the deliverable, but not any repository information (since there is none).","commit_id":"bd0e940015d80f094271d7947c98de57e90348a8"}]}
