)]}'
{"oslo_config/cfg.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"efba69bf1bc051fa806f6f88ce673b54b834ba0b","unresolved":false,"context_lines":[{"line_number":2025,"context_line":"        self._oparser \u003d None"},{"line_number":2026,"context_line":"        self._namespace \u003d None"},{"line_number":2027,"context_line":"        self._mutable_ns \u003d None"},{"line_number":2028,"context_line":"        self._mutate_hooks \u003d set([])"},{"line_number":2029,"context_line":"        self.__cache \u003d {}"},{"line_number":2030,"context_line":"        self._config_opts \u003d []"},{"line_number":2031,"context_line":"        self._cli_opts \u003d collections.deque()"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_4f97e739","line":2028,"updated":"2016-02-17 19:33:26.000000000","message":"Should we reset this in clear()? We unregister the options there.","commit_id":"73516f9eb52271b44c5f902f99ee650ae74110ba"},{"author":{"_account_id":16051,"name":"Ronald Bradford","email":"ronald.bradford@gmail.com","username":"ronaldbradford"},"change_message_id":"0e13a732cc81348ce23fbcad49a4227252de3c94","unresolved":false,"context_lines":[{"line_number":2198,"context_line":"        self._oparser \u003d None"},{"line_number":2199,"context_line":"        self._namespace \u003d None"},{"line_number":2200,"context_line":"        self._mutable_ns \u003d None"},{"line_number":2201,"context_line":"        # Keep _mutate_hooks"},{"line_number":2202,"context_line":"        self._validate_default_values \u003d False"},{"line_number":2203,"context_line":"        self.unregister_opts(self._config_opts)"},{"line_number":2204,"context_line":"        for group in self._groups.values():"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_66870310","line":2201,"updated":"2016-02-19 21:05:04.000000000","message":"For future commit. May pay to expand on why we keep the _mutate_hooks. And as I don\u0027t know when/why we clear.","commit_id":"713217322f7c82d3e1b2faf7ce6f294e580d8de2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"8f153118ba66ae0f35900dc69556f19868fbc812","unresolved":false,"context_lines":[{"line_number":2198,"context_line":"        self._oparser \u003d None"},{"line_number":2199,"context_line":"        self._namespace \u003d None"},{"line_number":2200,"context_line":"        self._mutable_ns \u003d None"},{"line_number":2201,"context_line":"        # Keep _mutate_hooks"},{"line_number":2202,"context_line":"        self._validate_default_values \u003d False"},{"line_number":2203,"context_line":"        self.unregister_opts(self._config_opts)"},{"line_number":2204,"context_line":"        for group in self._groups.values():"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_ce87cbd5","line":2201,"in_reply_to":"bae84128_66870310","updated":"2016-02-22 10:50:09.000000000","message":"Yeah I experimented with a longer comment but I need a couple of paragraphs to go through it fully and that felt excessive. I decided to say it with a unit test instead, not as easily discoverable but more provable.","commit_id":"713217322f7c82d3e1b2faf7ce6f294e580d8de2"},{"author":{"_account_id":16051,"name":"Ronald Bradford","email":"ronald.bradford@gmail.com","username":"ronaldbradford"},"change_message_id":"0e13a732cc81348ce23fbcad49a4227252de3c94","unresolved":false,"context_lines":[{"line_number":2821,"context_line":"        :raises Error if reloading fails"},{"line_number":2822,"context_line":"        \"\"\""},{"line_number":2823,"context_line":""},{"line_number":2824,"context_line":"        old_mutate_ns \u003d self._mutable_ns or self._namespace"},{"line_number":2825,"context_line":"        self._mutable_ns \u003d self._reload_config_files()"},{"line_number":2826,"context_line":"        self._warn_immutability()"},{"line_number":2827,"context_line":"        fresh \u003d self._diff_ns(old_mutate_ns, self._mutable_ns)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_06aef784","line":2824,"updated":"2016-02-19 21:05:04.000000000","message":"A future comment to help in the detailed walkthrough of code.\n\nWe keep the old namespace so we can tell the difference between the options set when the service started (_namespace) and when they were mutated (_mutable_ns) by re-reading the file. We need both sets of values so that we do *not* allow immutable options to change and so we can report any attempted violations of that constraint.","commit_id":"713217322f7c82d3e1b2faf7ce6f294e580d8de2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"8f153118ba66ae0f35900dc69556f19868fbc812","unresolved":false,"context_lines":[{"line_number":2821,"context_line":"        :raises Error if reloading fails"},{"line_number":2822,"context_line":"        \"\"\""},{"line_number":2823,"context_line":""},{"line_number":2824,"context_line":"        old_mutate_ns \u003d self._mutable_ns or self._namespace"},{"line_number":2825,"context_line":"        self._mutable_ns \u003d self._reload_config_files()"},{"line_number":2826,"context_line":"        self._warn_immutability()"},{"line_number":2827,"context_line":"        fresh \u003d self._diff_ns(old_mutate_ns, self._mutable_ns)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_ee456f70","line":2824,"in_reply_to":"bae84128_06aef784","updated":"2016-02-22 10:50:09.000000000","message":"old_mutate_ns is usually the old _mutable_ns; we only fall back to _namespace for the first mutate_config_files. old_mutate_ns is a local and discarded when we exit scope.\n\nWe retain both _mutable_ns and _namespace \"so that we do *not* allow immutable options to change and so we can report any attempted violations of that constraint\". However that would be better commented around L2573.","commit_id":"713217322f7c82d3e1b2faf7ce6f294e580d8de2"}]}
