)]}'
{"pbr/cmd/main.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from __future__ import absolute_import"},{"line_number":16,"context_line":"from __future__ import division"},{"line_number":17,"context_line":"from __future__ import print_function"},{"line_number":18,"context_line":"from __future__ import unicode_literals"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_007d75b1","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":31},"updated":"2018-06-15 17:14:41.000000000","message":"Why these two?","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from __future__ import absolute_import"},{"line_number":16,"context_line":"from __future__ import division"},{"line_number":17,"context_line":"from __future__ import print_function"},{"line_number":18,"context_line":"from __future__ import unicode_literals"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import argparse"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_76cc258a","line":17,"updated":"2018-06-17 08:38:51.000000000","message":"I keep this to ensure all print use the function format","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from __future__ import absolute_import"},{"line_number":16,"context_line":"from __future__ import division"},{"line_number":17,"context_line":"from __future__ import print_function"},{"line_number":18,"context_line":"from __future__ import unicode_literals"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import argparse"},{"line_number":21,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_c048dd8b","line":18,"updated":"2018-06-15 17:14:41.000000000","message":"And this one?  I\u0027d rather avoid changing behaviors like this for no reason.","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from __future__ import absolute_import"},{"line_number":16,"context_line":"from __future__ import division"},{"line_number":17,"context_line":"from __future__ import print_function"},{"line_number":18,"context_line":"from __future__ import unicode_literals"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import argparse"},{"line_number":21,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_d642d90f","line":18,"in_reply_to":"5f7c97a3_c048dd8b","updated":"2018-06-17 08:38:51.000000000","message":"I have the habbit to automatically add these future in all python 2/3 code, to maximize compatibility and portability.\n\nI need this unicode_literals to be friendly with the subprocess return so that 2.7 and 3.7 returns unicode so that .decode exists (like in the git module)","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def get_info(args):"},{"line_number":54,"context_line":"    print(\"{name}\\t{version}\\t{released}\\t{sha}\".format("},{"line_number":55,"context_line":"        **_get_info(args.name)))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_9644611b","line":54,"updated":"2018-06-17 08:38:51.000000000","message":"no sure to know why this does not break under python 2.7 without `from __future__ import print_function`","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    cmd_sha.add_argument(\u0027name\u0027, help\u003d\u0027package to print sha of\u0027)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":147,"context_line":"                                        help\u003d\u0027 Tag git with the new version\u0027)"},{"line_number":148,"context_line":"    cmd_git_tag.add_argument(\"-v\", \"--v-version\", dest\u003d\"v_version\","},{"line_number":149,"context_line":"                             action\u003d\"store_true\","},{"line_number":150,"context_line":"                             help\u003d\"create a tag v\u003cversion\u003e\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_bb72b4af","line":147,"range":{"start_line":147,"start_character":46,"end_line":147,"end_character":47},"updated":"2018-06-15 17:14:41.000000000","message":"Nit: leading space","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    cmd_sha.add_argument(\u0027name\u0027, help\u003d\u0027package to print sha of\u0027)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":147,"context_line":"                                        help\u003d\u0027 Tag git with the new version\u0027)"},{"line_number":148,"context_line":"    cmd_git_tag.add_argument(\"-v\", \"--v-version\", dest\u003d\"v_version\","},{"line_number":149,"context_line":"                             action\u003d\"store_true\","},{"line_number":150,"context_line":"                             help\u003d\"create a tag v\u003cversion\u003e\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_f65cb5f1","line":147,"range":{"start_line":147,"start_character":46,"end_line":147,"end_character":47},"in_reply_to":"5f7c97a3_bb72b4af","updated":"2018-06-17 08:38:51.000000000","message":"Done","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":147,"context_line":"                                        help\u003d\u0027 Tag git with the new version\u0027)"},{"line_number":148,"context_line":"    cmd_git_tag.add_argument(\"-v\", \"--v-version\", dest\u003d\"v_version\","},{"line_number":149,"context_line":"                             action\u003d\"store_true\","},{"line_number":150,"context_line":"                             help\u003d\"create a tag v\u003cversion\u003e\")"},{"line_number":151,"context_line":"    cmd_git_tag.add_argument(\"-s\", \"--sign\", dest\u003d\"sign\","}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_208c31d6","line":148,"range":{"start_line":148,"start_character":29,"end_line":148,"end_character":33},"updated":"2018-06-15 17:14:41.000000000","message":"This duplicates the -v shortname from above.  And do we even need this opt?  Isn\u0027t the whole point of this command to do the tag?  If you don\u0027t want this behavior the solution seems to be \"don\u0027t run it\". :-)","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":147,"context_line":"                                        help\u003d\u0027 Tag git with the new version\u0027)"},{"line_number":148,"context_line":"    cmd_git_tag.add_argument(\"-v\", \"--v-version\", dest\u003d\"v_version\","},{"line_number":149,"context_line":"                             action\u003d\"store_true\","},{"line_number":150,"context_line":"                             help\u003d\"create a tag v\u003cversion\u003e\")"},{"line_number":151,"context_line":"    cmd_git_tag.add_argument(\"-s\", \"--sign\", dest\u003d\"sign\","}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_7670a574","line":148,"range":{"start_line":148,"start_character":29,"end_line":148,"end_character":33},"in_reply_to":"5f7c97a3_208c31d6","updated":"2018-06-17 08:38:51.000000000","message":"I don\u0027t know how to choose between generating a v-version or not. Does the dev wants `1.0.0` or `v1.0.01 (like I want, actually).\n\nIt does not conflict with the general -v, since it is the argument of a subcommand. If `-v` would be `--verbose` (like it is on other commands), something like `mycmd -v mycommand -v` would do exactly what is expected).\n\nI remove the short version for clarity sake. But I would like to keep this option, since I have no other way to detect when to generate a v-version.","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                             action\u003d\"store_true\", help\u003d\"Sign the tag\")"},{"line_number":153,"context_line":"    cmd_git_tag.add_argument(\"-q\", \"--quiet\", dest\u003d\"quiet\","},{"line_number":154,"context_line":"                             action\u003d\"store_true\","},{"line_number":155,"context_line":"                             help\u003d\"Keep log to minium\")"},{"line_number":156,"context_line":"    cmd_git_tag.add_argument(\"-e\", \"--execute\", dest\u003d\"execute\","},{"line_number":157,"context_line":"                             action\u003d\"store_true\","},{"line_number":158,"context_line":"                             help\u003d(\"By default, pbr does not apply the tag, \""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_a0b9217a","line":155,"range":{"start_line":155,"start_character":47,"end_line":155,"end_character":53},"updated":"2018-06-15 17:14:41.000000000","message":"*minimum","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    cmd_git_tag.add_argument(\"-q\", \"--quiet\", dest\u003d\"quiet\","},{"line_number":154,"context_line":"                             action\u003d\"store_true\","},{"line_number":155,"context_line":"                             help\u003d\"Keep log to minium\")"},{"line_number":156,"context_line":"    cmd_git_tag.add_argument(\"-e\", \"--execute\", dest\u003d\"execute\","},{"line_number":157,"context_line":"                             action\u003d\"store_true\","},{"line_number":158,"context_line":"                             help\u003d(\"By default, pbr does not apply the tag, \""},{"line_number":159,"context_line":"                                   \"but simply display the git command to \""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e064f923","line":156,"updated":"2018-06-15 17:14:41.000000000","message":"I think I\u0027d prefer to invert this logic.  I\u0027m fine with having the ability to just display the command, but if you\u0027re running this command then that seems like sufficient indication that you wanted to actually do the tag.\n\nHow about we change this to --dry-run (perhaps with a -n shortname like git-review) and skip the actual execution of git if that\u0027s passed?","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    cmd_git_tag.add_argument(\"-q\", \"--quiet\", dest\u003d\"quiet\","},{"line_number":154,"context_line":"                             action\u003d\"store_true\","},{"line_number":155,"context_line":"                             help\u003d\"Keep log to minium\")"},{"line_number":156,"context_line":"    cmd_git_tag.add_argument(\"-e\", \"--execute\", dest\u003d\"execute\","},{"line_number":157,"context_line":"                             action\u003d\"store_true\","},{"line_number":158,"context_line":"                             help\u003d(\"By default, pbr does not apply the tag, \""},{"line_number":159,"context_line":"                                   \"but simply display the git command to \""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_366a2d81","line":156,"in_reply_to":"5f7c97a3_e064f923","updated":"2018-06-17 08:38:51.000000000","message":"agree","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                   \"Use {version} for the version string\"),"},{"line_number":164,"context_line":"                             default\u003d\"Release {version}\")"},{"line_number":165,"context_line":"    cmd_git_tag.set_defaults(func\u003dgit_tag)"},{"line_number":166,"context_line":"    cmd_git_tag.add_argument(\u0027name\u0027, help\u003d\u0027package name to tag\u0027)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    cmd_info \u003d subparsers.add_parser("},{"line_number":169,"context_line":"        \u0027info\u0027, help\u003d\u0027print version info for package\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_f6cfd588","line":166,"updated":"2018-06-17 08:38:51.000000000","message":"I did not found a way to retrieve the current package name so I need to ask the user to provide it","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2dfcf2278349906029cd1e7739e9a3f35b7b1e9d","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    releae_version \u003d subparsers.add_parser("},{"line_number":145,"context_line":"        \u0027release-version\u0027, help\u003d\u0027Print release version of the a package\u0027)"},{"line_number":146,"context_line":"    releae_version.set_defaults(func\u003dprint_release_version)"},{"line_number":147,"context_line":"    releae_version.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":150,"context_line":"                                        help\u003d\u0027Tag git with the new version\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_597d686b","line":147,"updated":"2018-07-02 15:23:04.000000000","message":"nit: the releae_version variable probably should be release_version (with the S in release)\n\nThat can be fixed in a separate patch unless there\u0027s a reason to redo this one.","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"6a92a0de885367b693d2107fc8ec3cf05b67a64a","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    releae_version \u003d subparsers.add_parser("},{"line_number":145,"context_line":"        \u0027release-version\u0027, help\u003d\u0027Print release version of the a package\u0027)"},{"line_number":146,"context_line":"    releae_version.set_defaults(func\u003dprint_release_version)"},{"line_number":147,"context_line":"    releae_version.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":150,"context_line":"                                        help\u003d\u0027Tag git with the new version\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_1b327f5f","line":147,"in_reply_to":"5f7c97a3_597d686b","updated":"2018-07-02 21:00:58.000000000","message":"Done","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2dfcf2278349906029cd1e7739e9a3f35b7b1e9d","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    releae_version.set_defaults(func\u003dprint_release_version)"},{"line_number":147,"context_line":"    releae_version.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":150,"context_line":"                                        help\u003d\u0027Tag git with the new version\u0027)"},{"line_number":151,"context_line":"    cmd_git_tag.add_argument(\"--v-version\", dest\u003d\"v_version\","},{"line_number":152,"context_line":"                             action\u003d\"store_true\","}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_99e8e015","line":149,"updated":"2018-07-02 15:23:04.000000000","message":"Are we ever going to tag in any way other than git? Should the command just be \"tag\"?","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"6a92a0de885367b693d2107fc8ec3cf05b67a64a","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    releae_version.set_defaults(func\u003dprint_release_version)"},{"line_number":147,"context_line":"    releae_version.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    cmd_git_tag \u003d subparsers.add_parser(\u0027git-tag\u0027,"},{"line_number":150,"context_line":"                                        help\u003d\u0027Tag git with the new version\u0027)"},{"line_number":151,"context_line":"    cmd_git_tag.add_argument(\"--v-version\", dest\u003d\"v_version\","},{"line_number":152,"context_line":"                             action\u003d\"store_true\","}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_db3ba736","line":149,"in_reply_to":"5f7c97a3_99e8e015","updated":"2018-07-02 21:00:58.000000000","message":"Done","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2dfcf2278349906029cd1e7739e9a3f35b7b1e9d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                                   \"Use {version} for the version string\"),"},{"line_number":168,"context_line":"                             default\u003d\"Release {version}\")"},{"line_number":169,"context_line":"    cmd_git_tag.set_defaults(func\u003dgit_tag)"},{"line_number":170,"context_line":"    cmd_git_tag.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    cmd_info \u003d subparsers.add_parser("},{"line_number":173,"context_line":"        \u0027info\u0027, help\u003d\u0027print version info for package\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_f9d8f480","line":170,"updated":"2018-07-02 15:23:04.000000000","message":"Is the current package something other than the dist name for the code in the current repository?","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3fb3a448f5d80d84ce1e0ab99f5f6afd1a088b75","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                                   \"Use {version} for the version string\"),"},{"line_number":168,"context_line":"                             default\u003d\"Release {version}\")"},{"line_number":169,"context_line":"    cmd_git_tag.set_defaults(func\u003dgit_tag)"},{"line_number":170,"context_line":"    cmd_git_tag.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    cmd_info \u003d subparsers.add_parser("},{"line_number":173,"context_line":"        \u0027info\u0027, help\u003d\u0027print version info for package\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_d6005e38","line":170,"in_reply_to":"5f7c97a3_9b4c4fc9","updated":"2018-07-02 21:54:29.000000000","message":"The command \"python setup.py --name\" will give it to you, but I don\u0027t know where you would get it from the setuptools data structure.\n\nWhy do you need to know the name of the package to tag it?","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"bf794db4656a46b119556a10501c07d60cc6d472","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                                   \"Use {version} for the version string\"),"},{"line_number":168,"context_line":"                             default\u003d\"Release {version}\")"},{"line_number":169,"context_line":"    cmd_git_tag.set_defaults(func\u003dgit_tag)"},{"line_number":170,"context_line":"    cmd_git_tag.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    cmd_info \u003d subparsers.add_parser("},{"line_number":173,"context_line":"        \u0027info\u0027, help\u003d\u0027print version info for package\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_69dcfbe0","line":170,"in_reply_to":"5f7c97a3_cade6e3b","updated":"2018-07-03 12:55:01.000000000","message":"\u003e Just to call _get_info I need to have somehow the name of the\n \u003e package.\n\nOK. No other commands require the user to pass the value on the command line, so at the very least we should do whatever those commands do to find the value.\n\n \u003e Maybe pbr tag is not the right place to add this command. Maybe\n \u003e letting the user get the tag with `python setup.py\n \u003e show_release_version` and leaving the git tag command to himself it\n \u003e enough.\n\nThe more I think about it, the less I like the tag command. I still like the show_release_version command.\n\nWe have been trying to make the pbr layer thinner. Adding a tagging command seems like it will eventually require us to add lots of the options available to git-tag, just to provide a minor convenience (signed tags or not signed tags? which key for a signed tag? how about a message? etc.). Having a pbr command that computes and shows the next version is the useful bit, and I think we should stop with that.\n\n \u003e I still prefer doing:\n \u003e \n \u003e pbr pbr mypackage --v-version\n \u003e \n \u003e Even if it would be cooler to do:\n \u003e \n \u003e pbr pbr --v-version\n\nI\u0027m not sure why the pbr value is repeated on those command lines and I still think there must be a way for us to get the name without the user passing it. We do that all over the place, right?\n\nI *do* like making this a pbr command instead of a setuptools command.\n\n  pbr show-next-version","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"6474b5b89769e17798045ea549cebe689e20780c","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                                   \"Use {version} for the version string\"),"},{"line_number":168,"context_line":"                             default\u003d\"Release {version}\")"},{"line_number":169,"context_line":"    cmd_git_tag.set_defaults(func\u003dgit_tag)"},{"line_number":170,"context_line":"    cmd_git_tag.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    cmd_info \u003d subparsers.add_parser("},{"line_number":173,"context_line":"        \u0027info\u0027, help\u003d\u0027print version info for package\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_cade6e3b","line":170,"in_reply_to":"5f7c97a3_d6005e38","updated":"2018-07-02 22:35:57.000000000","message":"Just to call _get_info I need to have somehow the name of the package.\n\nCalling \u0027python setup.py --name\u0027 would be the same than just reading setup.cfg in the current folder, it would work, but it would requires to have \u0027pbr\u0027 command executed at the root of the project. I have no pbl with it.\n\nMaybe pbr tag is not the right place to add this command. Maybe letting the user get the tag with `python setup.py show_release_version` and leaving the git tag command to himself it enough.\nBut on the other hand, setup.py might display some garbage such as:\n\n    $ python setup.py show_release_version                                                                                        \n    /usr/.../distutils/dist.py:261: UserWarning: Unknown distribution option: \u0027long_description_content_type\u0027\n      warnings.warn(msg)\n    running show_release_version\n   4.0.5\n\nSo one would need to tail it in command such as:\n\n    VERSION\u003d$(python setup.py show_release_version 2\u003e /dev/null | tail -n 1)\n    git tag -m \"Release $VERSION\" v$VERSION\n\nI still prefer doing:\n\n    pbr pbr mypackage --v-version\n\nEven if it would be cooler to do:\n\n    pbr pbr --v-version","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"6a92a0de885367b693d2107fc8ec3cf05b67a64a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                                   \"Use {version} for the version string\"),"},{"line_number":168,"context_line":"                             default\u003d\"Release {version}\")"},{"line_number":169,"context_line":"    cmd_git_tag.set_defaults(func\u003dgit_tag)"},{"line_number":170,"context_line":"    cmd_git_tag.add_argument(\u0027pkg_name\u0027, help\u003d\u0027current package name to tag\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    cmd_info \u003d subparsers.add_parser("},{"line_number":173,"context_line":"        \u0027info\u0027, help\u003d\u0027print version info for package\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_9b4c4fc9","line":170,"in_reply_to":"5f7c97a3_f9d8f480","updated":"2018-07-02 21:00:58.000000000","message":"I did not found an easy way of getting the current package name. When we start the pbr command, even within a virtualenv, I do not see how to retrieve the name of the \"current\" package, looking for a \"setup.cfg\" in the current folder ?\n\nThat\u0027s why I added a command `python setup.py release_version` in which i have all the information.","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"00934891381ed1eaff9c82fcb5777358ea1adffa","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return pbr.version.extract_next_release(version)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def _get_current_package_config(cmd):"},{"line_number":82,"context_line":"    \"\"\"Return a parsed setup.cfg in the current folder.\"\"\""},{"line_number":83,"context_line":"    if not os.path.exists(\"setup.cfg\"):"},{"line_number":84,"context_line":"        print(\"ERROR: please execute \u0027pbr {0}\u0027 in same folder \""}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_1e9f86b3","line":81,"range":{"start_line":81,"start_character":32,"end_line":81,"end_character":35},"updated":"2018-09-18 16:51:29.000000000","message":"I\u0027m not sure it\u0027s necessary to parameterize this given that it\u0027s a hard-coded string. Maybe just put the command name directly into the error string.\n\nAlso, I think maybe the purpose of this function changed since it was written. It no longer returns the entire package config, just the package name. I think it should be renamed and the docstring updated to reflect that.","commit_id":"9bbc7f4c101b3355ae5c5b48eb927714c87d98de"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"00934891381ed1eaff9c82fcb5777358ea1adffa","unresolved":false,"context_lines":[{"line_number":85,"context_line":"              \"as your package\u0027s setup.py/.cfg\".format("},{"line_number":86,"context_line":"                  cmd"},{"line_number":87,"context_line":"              ))"},{"line_number":88,"context_line":"        return 1"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    config \u003d load_config(\"setup.cfg\")"},{"line_number":91,"context_line":"    return config[\"metadata\"][\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_9e44f649","line":88,"updated":"2018-09-18 16:51:29.000000000","message":"This seems problematic since the caller doesn\u0027t check the return value. I think we should raise an exception in this case.","commit_id":"9bbc7f4c101b3355ae5c5b48eb927714c87d98de"}],"pbr/packaging.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2dfcf2278349906029cd1e7739e9a3f35b7b1e9d","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    description \u003d __doc__"},{"line_number":480,"context_line":"    user_options \u003d []"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    command_name \u003d \u0027release_version\u0027"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def run(self):"},{"line_number":485,"context_line":"        name \u003d self.distribution.get_name()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_b9fefcac","line":482,"updated":"2018-07-02 15:23:04.000000000","message":"Can we make this command use a verb? Something like \"show\" or \"compute\"?","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3fb3a448f5d80d84ce1e0ab99f5f6afd1a088b75","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    description \u003d __doc__"},{"line_number":480,"context_line":"    user_options \u003d []"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    command_name \u003d \u0027release_version\u0027"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def run(self):"},{"line_number":485,"context_line":"        name \u003d self.distribution.get_name()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_b6f5a253","line":482,"in_reply_to":"5f7c97a3_1bceff2c","updated":"2018-07-02 21:54:29.000000000","message":"I like that.","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"6a92a0de885367b693d2107fc8ec3cf05b67a64a","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    description \u003d __doc__"},{"line_number":480,"context_line":"    user_options \u003d []"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    command_name \u003d \u0027release_version\u0027"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def run(self):"},{"line_number":485,"context_line":"        name \u003d self.distribution.get_name()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_1bceff2c","line":482,"in_reply_to":"5f7c97a3_b9fefcac","updated":"2018-07-02 21:00:58.000000000","message":"show_release_version ?","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"00934891381ed1eaff9c82fcb5777358ea1adffa","unresolved":false,"context_lines":[{"line_number":474,"context_line":"            self.write_script(*args)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"class ShowReleaseVersion(setuptools.Command):"},{"line_number":478,"context_line":"    __doc__ \u003d \"\"\"Output the next release version of this package\"\"\""},{"line_number":479,"context_line":"    description \u003d __doc__"},{"line_number":480,"context_line":"    user_options \u003d []"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_9eb95617","line":477,"updated":"2018-09-18 16:51:29.000000000","message":"Was the setuptools command left in here on purpose? I don\u0027t think we need it in both setuptools and pbr, and it sounds like Doug preferred to have it it in just pbr.","commit_id":"9bbc7f4c101b3355ae5c5b48eb927714c87d98de"}],"pbr/tests/test_cli.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2011 OpenStack Foundation"},{"line_number":2,"context_line":"# Copyright (c) 2013 Hewlett-Packard Development Company, L.P."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_3bd9c483","line":2,"range":{"start_line":1,"start_character":0,"end_line":2,"end_character":62},"updated":"2018-06-15 17:14:41.000000000","message":"Nit: These are almost certainly not correct.","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2011 OpenStack Foundation"},{"line_number":2,"context_line":"# Copyright (c) 2013 Hewlett-Packard Development Company, L.P."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_d6109903","line":2,"range":{"start_line":1,"start_character":0,"end_line":2,"end_character":62},"in_reply_to":"5f7c97a3_3bd9c483","updated":"2018-06-17 08:38:51.000000000","message":"indeed. removed","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a8ac3638fbfd3fbdddfe625e339bc14cf019bdaf","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestRegEx(base.BaseTestCase):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_extract_next_release(self):"},{"line_number":29,"context_line":"        self.assertEqual(_extract_next_release(\"1.0.0\"), \"1.0.0\")"},{"line_number":30,"context_line":"        self.assertEqual(_extract_next_release(\"0.6.8.dev2\"), \"0.6.8\")"},{"line_number":31,"context_line":"        self.assertEqual(_extract_next_release(\"0.6.8.0a1.dev2\"), \"0.6.8.0a1\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_fbbb4c0c","line":28,"updated":"2018-06-15 17:14:41.000000000","message":"This looks good, but I would also like to have unit test coverage of the git_tag function.  At least the error and non-error paths.\n\nIt would also be good to test that the execute/dry-run option works as intended since a bug there could be problematic.","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"beacaa3c84b2e141f495419216224339510c1e12","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestRegEx(base.BaseTestCase):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_extract_next_release(self):"},{"line_number":29,"context_line":"        self.assertEqual(_extract_next_release(\"1.0.0\"), \"1.0.0\")"},{"line_number":30,"context_line":"        self.assertEqual(_extract_next_release(\"0.6.8.dev2\"), \"0.6.8\")"},{"line_number":31,"context_line":"        self.assertEqual(_extract_next_release(\"0.6.8.0a1.dev2\"), \"0.6.8.0a1\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_b60b9dd3","line":28,"in_reply_to":"5f7c97a3_fbbb4c0c","updated":"2018-06-17 08:38:51.000000000","message":"no pbl :)","commit_id":"e09ef3ad640e34338fd041b9593f13a15a37d156"}],"pbr/version.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2dfcf2278349906029cd1e7739e9a3f35b7b1e9d","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def extract_next_release(version):"},{"line_number":36,"context_line":"    \"\"\"Extracg the next release version from a dev version\"\"\""},{"line_number":37,"context_line":"    re_version \u003d re.compile("},{"line_number":38,"context_line":"        r\u0027(\\d+\\.\\d+\\.\\d+(\\.0?([a-c]|rc)[0-9]+){0,1})(|\\.dev.*)\u0027)"},{"line_number":39,"context_line":"    g \u003d re_version.match(version)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_795ce4ef","line":36,"range":{"start_line":36,"start_character":12,"end_line":36,"end_character":14},"updated":"2018-07-02 15:23:04.000000000","message":"nit: typo (can be fixed in a follow-up unless there\u0027s a reason to redo this patch)","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2dfcf2278349906029cd1e7739e9a3f35b7b1e9d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"def extract_next_release(version):"},{"line_number":36,"context_line":"    \"\"\"Extracg the next release version from a dev version\"\"\""},{"line_number":37,"context_line":"    re_version \u003d re.compile("},{"line_number":38,"context_line":"        r\u0027(\\d+\\.\\d+\\.\\d+(\\.0?([a-c]|rc)[0-9]+){0,1})(|\\.dev.*)\u0027)"},{"line_number":39,"context_line":"    g \u003d re_version.match(version)"},{"line_number":40,"context_line":"    if not g:"},{"line_number":41,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_196b7086","line":38,"updated":"2018-07-02 15:23:04.000000000","message":"nit: This variable could be a module-level global.","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":27201,"name":"Gaetan Semet","email":"gaetan@xeberon.net","username":"stibbons"},"change_message_id":"6a92a0de885367b693d2107fc8ec3cf05b67a64a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"def extract_next_release(version):"},{"line_number":36,"context_line":"    \"\"\"Extracg the next release version from a dev version\"\"\""},{"line_number":37,"context_line":"    re_version \u003d re.compile("},{"line_number":38,"context_line":"        r\u0027(\\d+\\.\\d+\\.\\d+(\\.0?([a-c]|rc)[0-9]+){0,1})(|\\.dev.*)\u0027)"},{"line_number":39,"context_line":"    g \u003d re_version.match(version)"},{"line_number":40,"context_line":"    if not g:"},{"line_number":41,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_5b9237fe","line":38,"in_reply_to":"5f7c97a3_196b7086","updated":"2018-07-02 21:00:58.000000000","message":"ok to move the string. I prefer to keep the compilation just here to avoid useless compilation it each time the module it imported","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3fb3a448f5d80d84ce1e0ab99f5f6afd1a088b75","unresolved":false,"context_lines":[{"line_number":35,"context_line":"def extract_next_release(version):"},{"line_number":36,"context_line":"    \"\"\"Extracg the next release version from a dev version\"\"\""},{"line_number":37,"context_line":"    re_version \u003d re.compile("},{"line_number":38,"context_line":"        r\u0027(\\d+\\.\\d+\\.\\d+(\\.0?([a-c]|rc)[0-9]+){0,1})(|\\.dev.*)\u0027)"},{"line_number":39,"context_line":"    g \u003d re_version.match(version)"},{"line_number":40,"context_line":"    if not g:"},{"line_number":41,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_7695cae2","line":38,"in_reply_to":"5f7c97a3_5b9237fe","updated":"2018-07-02 21:54:29.000000000","message":"If you only expect this to ever be run once it\u0027s probably fine to just leave it inline.","commit_id":"37c2214d66b0e44e52644dc424c2ac43c065b08b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"00934891381ed1eaff9c82fcb5777358ea1adffa","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        return False"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def extract_next_release(version):"},{"line_number":39,"context_line":"    \"\"\"Extract the next release version from a dev version\"\"\""},{"line_number":40,"context_line":"    g \u003d re.compile(RE_VERSION).match(version)"},{"line_number":41,"context_line":"    if not g:"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_3eb5a2ed","line":38,"updated":"2018-09-18 16:51:29.000000000","message":"Is there not already code to calculate the next non-dev version somewhere?","commit_id":"9bbc7f4c101b3355ae5c5b48eb927714c87d98de"}],"releasenotes/notes/release-version-5b3109938d336c37.yaml":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"00934891381ed1eaff9c82fcb5777358ea1adffa","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    New pbr sub-command: ``pbr show-next-version``."},{"line_number":5,"context_line":"    Allows to automatically display the next release version to use with ``git tag``."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    Also available: ``python setup.py show_next_version``."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3f79a3b5_7e08fad7","line":7,"updated":"2018-09-18 16:51:29.000000000","message":"Okay, yeah, I don\u0027t think we should do this. Let\u0027s have one and only one way to do this.","commit_id":"9bbc7f4c101b3355ae5c5b48eb927714c87d98de"}]}
