)]}'
{"oslo_config/cfg.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3fc8f10863a16f727f146b5a734b8941e941812a","unresolved":false,"context_lines":[{"line_number":1190,"context_line":"    @property"},{"line_number":1191,"context_line":"    def json(self):"},{"line_number":1192,"context_line":"        \"\"\"Return a serializable representation of opt.\"\"\""},{"line_number":1193,"context_line":"        return {k: (str(v) if v else v) for k, v in"},{"line_number":1194,"context_line":"                self.__dict__.items() if not k.startswith(\u0027_\u0027)}"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_9c3fb8d5","line":1193,"updated":"2017-03-31 17:37:08.000000000","message":"Why convert the values to string here? Is it just for special handling for groups?","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d6ef19e026d97e8a02c7e662bd6c1a91e9d14146","unresolved":false,"context_lines":[{"line_number":1190,"context_line":"    @property"},{"line_number":1191,"context_line":"    def json(self):"},{"line_number":1192,"context_line":"        \"\"\"Return a serializable representation of opt.\"\"\""},{"line_number":1193,"context_line":"        return {k: (str(v) if v else v) for k, v in"},{"line_number":1194,"context_line":"                self.__dict__.items() if not k.startswith(\u0027_\u0027)}"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_22e03596","line":1193,"in_reply_to":"dfeb2761_9c3fb8d5","updated":"2017-04-04 09:36:27.000000000","message":"There may have been some reason but I can\u0027t remember what it was. Removed until/unless I do","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3fc8f10863a16f727f146b5a734b8941e941812a","unresolved":false,"context_lines":[{"line_number":1772,"context_line":"        self._argparse_group \u003d None"},{"line_number":1773,"context_line":""},{"line_number":1774,"context_line":"    @property"},{"line_number":1775,"context_line":"    def json(self):"},{"line_number":1776,"context_line":"        \"\"\"Return a serializable representation of group.\"\"\""},{"line_number":1777,"context_line":"        return {k: (str(v) if v else v) for k, v in"},{"line_number":1778,"context_line":"                self.__dict__.items() if not k.startswith(\u0027_\u0027)}"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_1c2ba894","line":1775,"updated":"2017-03-31 17:37:08.000000000","message":"Where is this used? I would expect only the group name to be needed.","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf65ded46a486c56a6199ea62b4439f3ad404156","unresolved":false,"context_lines":[{"line_number":1772,"context_line":"        self._argparse_group \u003d None"},{"line_number":1773,"context_line":""},{"line_number":1774,"context_line":"    @property"},{"line_number":1775,"context_line":"    def json(self):"},{"line_number":1776,"context_line":"        \"\"\"Return a serializable representation of group.\"\"\""},{"line_number":1777,"context_line":"        return {k: (str(v) if v else v) for k, v in"},{"line_number":1778,"context_line":"                self.__dict__.items() if not k.startswith(\u0027_\u0027)}"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_7e039110","line":1775,"in_reply_to":"dfeb2761_1c2ba894","updated":"2017-04-03 17:21:12.000000000","message":"I wanted to expose the help text for a document like so:\n\n  Group\n  \u003d\u003d\u003d\u003d\u003d\n\n  The group description here\n\n  option_a\n    The first option description here\n\n  option_b\n    The second option description here\n\nHence, I need to expose \u0027help\u0027 at the very minimum. I\u0027d probably want \u0027title\u0027 too","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2cba5def2b72f2c9d395cbe0d0ee7e727647a030","unresolved":false,"context_lines":[{"line_number":1772,"context_line":"        self._argparse_group \u003d None"},{"line_number":1773,"context_line":""},{"line_number":1774,"context_line":"    @property"},{"line_number":1775,"context_line":"    def json(self):"},{"line_number":1776,"context_line":"        \"\"\"Return a serializable representation of group.\"\"\""},{"line_number":1777,"context_line":"        return {k: (str(v) if v else v) for k, v in"},{"line_number":1778,"context_line":"                self.__dict__.items() if not k.startswith(\u0027_\u0027)}"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_370647d0","line":1775,"in_reply_to":"dfeb2761_7e039110","updated":"2017-04-03 20:50:27.000000000","message":"Ah, good point.","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f7c70db96ca491478cd79edd38499f7583854668","unresolved":false,"context_lines":[{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"    def to_dict(self):"},{"line_number":1190,"context_line":"        \"\"\"Return a serializable representation of opt.\"\"\""},{"line_number":1191,"context_line":"        return {k: (str(v) if v else v) for k, v in"},{"line_number":1192,"context_line":"                self.__dict__.items() if not k.startswith(\u0027_\u0027)}"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_ce6f62fa","line":1191,"updated":"2017-04-04 16:43:49.000000000","message":"The str(v) call was removed lower down, is still here.","commit_id":"3a0a16e1e59b3db5ab791fa58be37f5482bd88ff"}],"oslo_config/generator.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3fc8f10863a16f727f146b5a734b8941e941812a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        help\u003d\u0027Path of the file to write to. Defaults to stdout.\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt("},{"line_number":48,"context_line":"        \u0027format\u0027,"},{"line_number":49,"context_line":"        choices\u003d[\u0027ini\u0027, \u0027json\u0027],"},{"line_number":50,"context_line":"        default\u003d\u0027ini\u0027,"},{"line_number":51,"context_line":"        help\u003d\u0027Output format. Only INI is suitable for consumption by \u0027"},{"line_number":52,"context_line":"        \u0027oslo.config itself.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_9c18d881","line":49,"updated":"2017-03-31 17:37:08.000000000","message":"I really thought we said we\u0027d do YAML and not bother with JSON.","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2cba5def2b72f2c9d395cbe0d0ee7e727647a030","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        help\u003d\u0027Path of the file to write to. Defaults to stdout.\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt("},{"line_number":48,"context_line":"        \u0027format\u0027,"},{"line_number":49,"context_line":"        choices\u003d[\u0027ini\u0027, \u0027json\u0027],"},{"line_number":50,"context_line":"        default\u003d\u0027ini\u0027,"},{"line_number":51,"context_line":"        help\u003d\u0027Output format. Only INI is suitable for consumption by \u0027"},{"line_number":52,"context_line":"        \u0027oslo.config itself.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_771ccf11","line":49,"in_reply_to":"dfeb2761_09268db8","updated":"2017-04-03 20:50:27.000000000","message":"I finally found the spec: http://specs.openstack.org/openstack/oslo-specs/specs/pike/machine-readable-sample-config.html","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf65ded46a486c56a6199ea62b4439f3ad404156","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        help\u003d\u0027Path of the file to write to. Defaults to stdout.\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt("},{"line_number":48,"context_line":"        \u0027format\u0027,"},{"line_number":49,"context_line":"        choices\u003d[\u0027ini\u0027, \u0027json\u0027],"},{"line_number":50,"context_line":"        default\u003d\u0027ini\u0027,"},{"line_number":51,"context_line":"        help\u003d\u0027Output format. Only INI is suitable for consumption by \u0027"},{"line_number":52,"context_line":"        \u0027oslo.config itself.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_09268db8","line":49,"in_reply_to":"dfeb2761_9c18d881","updated":"2017-04-03 17:21:12.000000000","message":"I wasn\u0027t aware of any clear JSON/YAML preference :) I used json because it was standard lib and I didn\u0027t want to add the dependency of pyyaml. I can change that though.","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3fc8f10863a16f727f146b5a734b8941e941812a","unresolved":false,"context_lines":[{"line_number":507,"context_line":"    output \u003d []"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    for group_name, group_data in groups.items():"},{"line_number":510,"context_line":"        if group_name !\u003d \u0027api\u0027:"},{"line_number":511,"context_line":"            continue"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        if isinstance(group_data[\u0027object\u0027], cfg.OptGroup):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_df2c129b","line":510,"updated":"2017-03-31 17:37:08.000000000","message":"Why is the \u0027api\u0027 group being treated as special?","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bf65ded46a486c56a6199ea62b4439f3ad404156","unresolved":false,"context_lines":[{"line_number":507,"context_line":"    output \u003d []"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    for group_name, group_data in groups.items():"},{"line_number":510,"context_line":"        if group_name !\u003d \u0027api\u0027:"},{"line_number":511,"context_line":"            continue"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        if isinstance(group_data[\u0027object\u0027], cfg.OptGroup):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_694e3970","line":510,"in_reply_to":"dfeb2761_df2c129b","updated":"2017-04-03 17:21:12.000000000","message":"Debugging remnant :(","commit_id":"5d2fab462312aea825553f799d681cec78c1b649"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f7c70db96ca491478cd79edd38499f7583854668","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        group[\u0027namespaces\u0027] \u003d namespaces"},{"line_number":538,"context_line":"        output[group.pop(\u0027name\u0027)] \u003d group"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    print(yaml.dump(output))"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"def _generate_ini(groups, output_file, conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_a9141845","line":540,"updated":"2017-04-04 16:43:49.000000000","message":"We may want to add some options here to make the formatting a little nicer for human consumption, but we can do that in a follow-up. I\u0027m thinking specifically of things like lists showing up on multiple lines instead of as [item, item] and the help text, which we probably want to have come out as a pre-formatted block. We may even want to pre-process the help text to deal with indentation, I\u0027m not sure.","commit_id":"3a0a16e1e59b3db5ab791fa58be37f5482bd88ff"}]}
