)]}'
{"magnumclient/common/cliutils.py":[{"author":{"_account_id":21361,"name":"Chris Spencer","email":"christopher.m.spencer@intel.com","username":"chrisspencer"},"change_message_id":"f1aca3fb638138bdb7c489a2af81465ce71886bb","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def arg_deprecation_map(deprecation_map):"},{"line_number":96,"context_line":"    \"\"\""},{"line_number":97,"context_line":"    Decorator for providing a map of deprecating arguments and their"},{"line_number":98,"context_line":"    replacements for a given function. The shell.py script uses this map to"},{"line_number":99,"context_line":"    print a deprecation warning telling the user to switch to the updated"},{"line_number":100,"context_line":"    argument(s)."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    Example usage:"},{"line_number":103,"context_line":"    \u003e\u003e\u003e @arg_deprecation_map({ \"old-argument\": \"new-argument\" })"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_f920e14b","line":100,"range":{"start_line":97,"start_character":4,"end_line":100,"end_character":16},"updated":"2016-10-11 20:47:50.000000000","message":"OpenStack hacking says multi line docstrings should start with a one line summary followed by an empty line.   http://docs.openstack.org/developer/hacking/#docstrings","commit_id":"dab6a985424909def19420f2a12dd8ca0c328687"},{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"a96741ca728a28b0458acedeaa6a679a7c5a1893","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    def _decorator(func):"},{"line_number":110,"context_line":"        if not hasattr(func, \u0027deprecation_map\u0027):"},{"line_number":111,"context_line":"            func.deprecation_map \u003d dict()"},{"line_number":112,"context_line":"        func.deprecation_map \u003d deprecation_map"},{"line_number":113,"context_line":"        return func"},{"line_number":114,"context_line":"    return _decorator"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_f94b8129","line":112,"range":{"start_line":111,"start_character":1,"end_line":112,"end_character":46},"updated":"2016-10-11 20:35:24.000000000","message":"Line 111 is redundant because of line 112","commit_id":"dab6a985424909def19420f2a12dd8ca0c328687"},{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"8c19535f24cc028867208321cfdbcf6980864d93","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    in argparse and also prints a deprecation warning telling the user to"},{"line_number":107,"context_line":"    switch to the updated argument."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    NOTE: This decorator MUST be the last in the chain of argument decorators"},{"line_number":110,"context_line":"    to work correctly."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    Example usage:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_aba9d326","line":109,"range":{"start_line":109,"start_character":37,"end_line":109,"end_character":41},"updated":"2016-10-17 20:14:26.000000000","message":"s/last/outermost/","commit_id":"d868ecf4dc09b4921ec64d1b94225302c4a74bce"},{"author":{"_account_id":21660,"name":"Stephen Watson","email":"stephen.watson@intel.com","username":"swatson"},"change_message_id":"e4ae68f0c2937e5b709e5a752b2a5d8b834b4ea2","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    in argparse and also prints a deprecation warning telling the user to"},{"line_number":107,"context_line":"    switch to the updated argument."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    NOTE: This decorator MUST be the last in the chain of argument decorators"},{"line_number":110,"context_line":"    to work correctly."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    Example usage:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_ceba950a","line":109,"range":{"start_line":109,"start_character":37,"end_line":109,"end_character":41},"in_reply_to":"fa6399be_aba9d326","updated":"2016-10-17 20:26:14.000000000","message":"Will fix in next revision. Waiting for other comments before I put in another patch","commit_id":"d868ecf4dc09b4921ec64d1b94225302c4a74bce"},{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"8c19535f24cc028867208321cfdbcf6980864d93","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            # Add a tuple of (old, new, required), which in turn is:"},{"line_number":134,"context_line":"            # ((old_args, old_kwargs), (new_args, new_kwargs), required)"},{"line_number":135,"context_line":"            func.deprecated_groups.append("},{"line_number":136,"context_line":"                (old_info, new_info, new_param_info[1]))"},{"line_number":137,"context_line":"            # Remove arguments that would be duplicated by the groups we made"},{"line_number":138,"context_line":"            func.arguments.remove(old_info)"},{"line_number":139,"context_line":"            func.arguments.remove(new_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_eb166b57","line":136,"range":{"start_line":136,"start_character":17,"end_line":136,"end_character":35},"updated":"2016-10-17 20:14:26.000000000","message":"What if old_info or new_info is None at this point?","commit_id":"d868ecf4dc09b4921ec64d1b94225302c4a74bce"},{"author":{"_account_id":21660,"name":"Stephen Watson","email":"stephen.watson@intel.com","username":"swatson"},"change_message_id":"e4ae68f0c2937e5b709e5a752b2a5d8b834b4ea2","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            # Add a tuple of (old, new, required), which in turn is:"},{"line_number":134,"context_line":"            # ((old_args, old_kwargs), (new_args, new_kwargs), required)"},{"line_number":135,"context_line":"            func.deprecated_groups.append("},{"line_number":136,"context_line":"                (old_info, new_info, new_param_info[1]))"},{"line_number":137,"context_line":"            # Remove arguments that would be duplicated by the groups we made"},{"line_number":138,"context_line":"            func.arguments.remove(old_info)"},{"line_number":139,"context_line":"            func.arguments.remove(new_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_8ec09d7e","line":136,"range":{"start_line":136,"start_character":17,"end_line":136,"end_character":35},"in_reply_to":"fa6399be_eb166b57","updated":"2016-10-17 20:26:14.000000000","message":"Then stuff breaks :)\n\nold_info and new_info should never be None, since they need to be in the arguments list for the function to begin with. I may need to call that out in the documentation for the deprecation map now that you mention it","commit_id":"d868ecf4dc09b4921ec64d1b94225302c4a74bce"}],"magnumclient/shell.py":[{"author":{"_account_id":21660,"name":"Stephen Watson","email":"stephen.watson@intel.com","username":"swatson"},"change_message_id":"6f6b6aa5e8e3e285801315a4c447a2b2094b7d58","unresolved":false,"context_lines":[{"line_number":688,"context_line":"    for dep_param, new_param in func.deprecation_map.items():"},{"line_number":689,"context_line":"        # Check for deprecated arguments"},{"line_number":690,"context_line":"        if dep_param in (param[2:] for param in argv):"},{"line_number":691,"context_line":"            print("},{"line_number":692,"context_line":"                \u0027WARNING: The %s parameter is deprecated and will \u0027"},{"line_number":693,"context_line":"                \u0027be removed in a future release. Use the %s \u0027"},{"line_number":694,"context_line":"                \u0027parameter to avoid seeing this message.\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_3e787ff2","line":691,"updated":"2016-10-11 20:15:12.000000000","message":"One drawback to this approach is that each separate usage of a deprecated parameter ends up printing a new message. For example\n\"WARNING: The keypair-id parameter [...]\nWARNING: The flavor-id parameter [...]\nWARNING: The X-id parameter [...]\"\n\nI was thinking about how to collapse these multiple messages into one, e.g.\n\"WARNING: Deprecated arguments were provided. See below for their new usage.\n  keypair-id \u003d\u003e keypair\n  flavor-id \u003d\u003e flavor\n  X-id \u003d\u003e X\"\n\nThoughts?","commit_id":"dab6a985424909def19420f2a12dd8ca0c328687"},{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"bc7fc10721ebe8a1f4e3ac05f7c2859b79357a85","unresolved":false,"context_lines":[{"line_number":688,"context_line":"    for dep_param, new_param in func.deprecation_map.items():"},{"line_number":689,"context_line":"        # Check for deprecated arguments"},{"line_number":690,"context_line":"        if dep_param in (param[2:] for param in argv):"},{"line_number":691,"context_line":"            print("},{"line_number":692,"context_line":"                \u0027WARNING: The %s parameter is deprecated and will \u0027"},{"line_number":693,"context_line":"                \u0027be removed in a future release. Use the %s \u0027"},{"line_number":694,"context_line":"                \u0027parameter to avoid seeing this message.\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_19003534","line":691,"in_reply_to":"fa6399be_3e787ff2","updated":"2016-10-11 20:50:39.000000000","message":"My take is: the wordier and more annoying the messages are, the sooner user will stop using deprecated features.","commit_id":"dab6a985424909def19420f2a12dd8ca0c328687"}],"magnumclient/v1/cluster_templates_shell.py":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"a4ca5b5a1459b65de90c95134dc8b4cb7b98f7a7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from magnumclient.i18n import _"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"KEYPAIR_ID_DEPRECATION_MESSAGE \u003d ("},{"line_number":23,"context_line":"    \u0027WARNING: The keypair-id parameter is deprecated and will be removed in a \u0027"},{"line_number":24,"context_line":"    \u0027future\\nrelease. Use the keypair parameter to avoid seeing this message.\u0027"},{"line_number":25,"context_line":")"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_14b22f06","line":22,"updated":"2016-10-08 03:35:11.000000000","message":"@Stephen, @Adrian,\nThough the approach proposed here works for keypair id(because of making it optional in https://review.openstack.org/#/c/381331) but i think it would not work for other parameters which are manadatory(required\u003dTrue) and currently doesn\u0027t think they are planned to made optional(if it is so please let me know),\nSo we should make it generic and add some generic deprecation framework which can be commonly used for all parameters proposed in the blueprint.\nWe should work on some generic approach. If we can add this now then that can be used for ever in magnum as with time other options can also be deprecated.\nThe current approach here will also make too much redundancy in the code and doesn\u0027t seem to be reusable.","commit_id":"cef7a2fcac2f4ae03e28738376a61332fa86af72"},{"author":{"_account_id":21660,"name":"Stephen Watson","email":"stephen.watson@intel.com","username":"swatson"},"change_message_id":"6f6b6aa5e8e3e285801315a4c447a2b2094b7d58","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    utils.print_dict(cluster_template._info)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@utils.arg_deprecation_map(DEPRECATING_PARAMS)"},{"line_number":39,"context_line":"@utils.arg(\u0027--name\u0027,"},{"line_number":40,"context_line":"           metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":41,"context_line":"           help\u003d\u0027Name of the cluster template to create.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_ded6a3c4","line":38,"updated":"2016-10-11 20:15:12.000000000","message":"Forgot to add this to other functions, but this at least gives an example for what will be added to the code if acceptable","commit_id":"dab6a985424909def19420f2a12dd8ca0c328687"},{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"a96741ca728a28b0458acedeaa6a679a7c5a1893","unresolved":false,"context_lines":[{"line_number":48,"context_line":"           required\u003dFalse,"},{"line_number":49,"context_line":"           metavar\u003d\u0027\u003ckeypair-id\u003e\u0027,"},{"line_number":50,"context_line":"           help\u003d\u0027The name or UUID of the SSH keypair to load into the\u0027"},{"line_number":51,"context_line":"           \u0027 Cluster nodes. This parameter is deprecated and replaced by\u0027"},{"line_number":52,"context_line":"           \u0027 keypair.\u0027)"},{"line_number":53,"context_line":"@utils.arg(\u0027--keypair\u0027,"},{"line_number":54,"context_line":"           required\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_99d52545","line":51,"range":{"start_line":51,"start_character":11,"end_line":51,"end_character":73},"updated":"2016-10-11 20:35:24.000000000","message":"Might possibly want to say that it will be removed in next release.","commit_id":"dab6a985424909def19420f2a12dd8ca0c328687"}],"magnumclient/v1/clusters_shell.py":[{"author":{"_account_id":21660,"name":"Stephen Watson","email":"stephen.watson@intel.com","username":"swatson"},"change_message_id":"a451f9a8a5d5dc73e51397720940828bcf5a5b22","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from cryptography.x509.oid import NameOID"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"KEYPAIR_ID_DEPRECATION_MESSAGE \u003d ("},{"line_number":31,"context_line":"    \u0027WARNING: The keypair-id parameter is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"    \u0027future\\nrelease. Use the keypair parameter to avoid seeing this message.\u0027"},{"line_number":33,"context_line":")"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_2fb0798b","line":30,"updated":"2016-10-10 23:04:01.000000000","message":"Forgot to remove this since it\u0027s replaced by the new function in cliutils.py","commit_id":"d381da5b2fece0554c7b800baf3b62ba67e6858f"},{"author":{"_account_id":21660,"name":"Stephen Watson","email":"stephen.watson@intel.com","username":"swatson"},"change_message_id":"a451f9a8a5d5dc73e51397720940828bcf5a5b22","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# maps old paramater names to new parameter names"},{"line_number":45,"context_line":"# e.g. keypair_id to keypair"},{"line_number":46,"context_line":"DEPRECATING_PARAM_MAP \u003d {"},{"line_number":47,"context_line":"    \"keypair-id\": \"keypair\","},{"line_number":48,"context_line":"    \"foo-id\": \"foo\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_4fadad30","line":45,"updated":"2016-10-10 23:04:01.000000000","message":"Comment should read \"keypair-id to keypair\"","commit_id":"d381da5b2fece0554c7b800baf3b62ba67e6858f"},{"author":{"_account_id":21660,"name":"Stephen Watson","email":"stephen.watson@intel.com","username":"swatson"},"change_message_id":"a451f9a8a5d5dc73e51397720940828bcf5a5b22","unresolved":false,"context_lines":[{"line_number":49,"context_line":"}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def _check_deprecation(args):"},{"line_number":53,"context_line":"    for dep_var, dep_param in DEPRECATING_VARS.iteritems():"},{"line_number":54,"context_line":"        if hasattr(args, dep_var):"},{"line_number":55,"context_line":"            utils.print_argument_deprecation("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_4f74cdce","line":52,"updated":"2016-10-10 23:04:01.000000000","message":"I just realized I could make this a decorator in cliutils, but that still requires some edit of each function regardless.","commit_id":"d381da5b2fece0554c7b800baf3b62ba67e6858f"}]}
