)]}'
{"oslo/config/cfg.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"7f38036c1cf53e7248f45b8f7e69bbb1fc2b1431","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"            return _normalize_group_name(section) if normalized else name"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        def convert(value):"},{"line_number":1116,"context_line":"            return value if convert_value is None else convert_value(value)"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        names \u003d [(normalize(section), name) for section, name in names]"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fses%3D","line":1116,"updated":"2013-05-26 07:08:37.000000000","message":"What about adding a _convert_value method to Opt that return value instead of setting it as None?\n\n  @staticmethod\n  def _convert_value(value):\n    return value\n\nThe above supersedes this nested function and avoids checking if convert_value is None.","commit_id":"5d9f77fb51a0e99c2ea4ff945d5713aefd2c8978"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"3b5123c5ef5cc24d2feadf90907dbb4d6606f129","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"            return _normalize_group_name(section) if normalized else name"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        def convert(value):"},{"line_number":1116,"context_line":"            return value if convert_value is None else convert_value(value)"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        names \u003d [(normalize(section), name) for section, name in names]"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FkHI%3D","line":1116,"in_reply_to":"AAAAPH%2F%2FmpI%3D","updated":"2013-05-30 13:35:01.000000000","message":"mmh, right this is a MultiConfigParser instance. For some reason I thought it had some knowledge of Opt. My bad.","commit_id":"5d9f77fb51a0e99c2ea4ff945d5713aefd2c8978"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"9adb2676fad3383c69dc8c09f923d9f8769af5d2","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"            return _normalize_group_name(section) if normalized else name"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        def convert(value):"},{"line_number":1116,"context_line":"            return value if convert_value is None else convert_value(value)"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        names \u003d [(normalize(section), name) for section, name in names]"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FmpI%3D","line":1116,"in_reply_to":"AAAAPH%2F%2FnHk%3D","updated":"2013-05-29 14:37:30.000000000","message":"How does MultiConfigParser.get() call Opt._convert_value() in your scheme if we don\u0027t pass a callable to MultiConfigParser.get() ?\n\nMultiConfigParser knows nothing about Opt instances","commit_id":"5d9f77fb51a0e99c2ea4ff945d5713aefd2c8978"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"97ce12531a9651dc5a90a88f30a69515533e73f4","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"            return _normalize_group_name(section) if normalized else name"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        def convert(value):"},{"line_number":1116,"context_line":"            return value if convert_value is None else convert_value(value)"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        names \u003d [(normalize(section), name) for section, name in names]"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FnHk%3D","line":1116,"in_reply_to":"AAAAPH%2F%2FnT0%3D","updated":"2013-05-29 12:08:07.000000000","message":"Nope, no support for it in 2 places. \n\nWhat I was suggesting is to make Opt._convert_value() return the same value, which means it does no conversion, instead of adding the kwarg and a nested function, which just checks if convert_value is None and calls it otherwise. Also, convert assumes that convert_value is callable, which might be fair but dangerous, I reckon.","commit_id":"5d9f77fb51a0e99c2ea4ff945d5713aefd2c8978"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"ffae19e6b3ddcfdfca0f8c17b934f7392665c623","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"            return _normalize_group_name(section) if normalized else name"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        def convert(value):"},{"line_number":1116,"context_line":"            return value if convert_value is None else convert_value(value)"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        names \u003d [(normalize(section), name) for section, name in names]"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FnT0%3D","line":1116,"in_reply_to":"AAAAPH%2F%2FnVw%3D","updated":"2013-05-29 10:31:02.000000000","message":"Yes, we\u0027re adding a kwarg ... and it needs to have a default value which preserves the existing semantics\n\nThe default value for the kwarg can be None (meaning \"do no conversion\") or a function which does no conversion - I think the former makes more sense\n\nThe point is, though, that even if we add a no-op Opt._convert_value() function ... we still need to add support for no-op behaviour to MultiConfigParser.get() ... so why add support for no-op conversions in two places?","commit_id":"5d9f77fb51a0e99c2ea4ff945d5713aefd2c8978"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"3648333fee4bf2237492c20d2dc7d4b0ea0f7c31","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"            return _normalize_group_name(section) if normalized else name"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        def convert(value):"},{"line_number":1116,"context_line":"            return value if convert_value is None else convert_value(value)"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        names \u003d [(normalize(section), name) for section, name in names]"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FnVw%3D","line":1116,"in_reply_to":"AAAAPH%2F%2Fr5k%3D","updated":"2013-05-29 10:13:21.000000000","message":"Could you explain how this is necessary for backwards compatibility? Since you\u0027re adding the kwarg in this patch I don\u0027t see how not having it breaks compatibility.","commit_id":"5d9f77fb51a0e99c2ea4ff945d5713aefd2c8978"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"0197f24721461fbee1491ec47a565c92b595be5a","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"            return _normalize_group_name(section) if normalized else name"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        def convert(value):"},{"line_number":1116,"context_line":"            return value if convert_value is None else convert_value(value)"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        names \u003d [(normalize(section), name) for section, name in names]"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fr5k%3D","line":1116,"in_reply_to":"AAAAPH%2F%2Fses%3D","updated":"2013-05-27 05:53:06.000000000","message":"We need to support MultiConfigParser.get(convert_value\u003dNone) anyway for backwards compat ... that\u0027s why I didn\u0027t do the no-op base class method thing","commit_id":"5d9f77fb51a0e99c2ea4ff945d5713aefd2c8978"}]}
