)]}'
{"oslo_config/cfg.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"47b92a8cfdee9ebcc715e663afbf0bd92e58de57","unresolved":false,"context_lines":[{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"    def __init__(self, name, **kwargs):"},{"line_number":1630,"context_line":"        super(ConfigurationSourceOpt, self).__init__("},{"line_number":1631,"context_line":"            name, type\u003dtypes.ConfigurationSource(), **kwargs)"},{"line_number":1632,"context_line":""},{"line_number":1633,"context_line":""},{"line_number":1634,"context_line":"class _ConfigFileOpt(Opt):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_2e7d1de7","line":1631,"updated":"2017-10-30 20:24:52.000000000","message":"Do we need a new type? Could we use String()? Or do what _ConfigFileOpt does and pass a lambda?","commit_id":"211a24ba1dbb3541d9ea7b8b8c699b878949b4e5"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"f60e2e9ec3e1d09485618d83b9ef03e27267b78b","unresolved":false,"context_lines":[{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"    def __init__(self, name, **kwargs):"},{"line_number":1630,"context_line":"        super(ConfigurationSourceOpt, self).__init__("},{"line_number":1631,"context_line":"            name, type\u003dtypes.ConfigurationSource(), **kwargs)"},{"line_number":1632,"context_line":""},{"line_number":1633,"context_line":""},{"line_number":1634,"context_line":"class _ConfigFileOpt(Opt):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_e0369051","line":1631,"in_reply_to":"3f4b6375_2e7d1de7","updated":"2017-11-02 16:45:05.000000000","message":"Think lambda is best, good catch","commit_id":"211a24ba1dbb3541d9ea7b8b8c699b878949b4e5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"df395166d3ff6c952aba76df51bec30b00d849f6","unresolved":false,"context_lines":[{"line_number":2451,"context_line":"        \"\"\""},{"line_number":2452,"context_line":"        for config in self._namespace._normalized:"},{"line_number":2453,"context_line":"            try:"},{"line_number":2454,"context_line":"                for source in config[\u0027DEFAULT\u0027][\u0027config_source\u0027]:"},{"line_number":2455,"context_line":"                    self.config_sources.append(source)"},{"line_number":2456,"context_line":"            except KeyError:"},{"line_number":2457,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f93b717_7440a536","line":2454,"updated":"2018-01-25 20:30:59.000000000","message":"We should define a configuration option for the config_source and then access the option\u0027s value. Doing it that way ensures that we\u0027ll get the proper behavior from the parser, including merging the list of sources for us automatically.","commit_id":"37cb08e924b66590cfbcb6f13d60a955265cac6f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"079ab9b0e9c34cdd957a4cf1b2bb2fc65fd2e754","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    config_sources \u003d []"},{"line_number":707,"context_line":"    for config_file in default_config_files:"},{"line_number":708,"context_line":"        try:"},{"line_number":709,"context_line":"            with open(config_file) as test:"},{"line_number":710,"context_line":"                for line in test:"},{"line_number":711,"context_line":"                    if line.startswith(\u0027config_source\u0027):"},{"line_number":712,"context_line":"                        config_sources.append(line.split(\u0027\u003d\u0027)[1])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_81216afe","line":709,"updated":"2018-02-06 16:09:10.000000000","message":"I don\u0027t think we want a separate parser for configuration files just to find this one setting. We should be able to look at the raw data stored in the ConfigOpts instance after it has read all of its configuration files. Ideally we could use an option for that, so maybe we want to delay that initialization to the __call__ method?","commit_id":"502c05db18883881770c55c27340b815a0fb1ee5"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"3910f2b7000c2b7ba7a0307e0d433f5481f0a4eb","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    config_sources \u003d []"},{"line_number":707,"context_line":"    for config_file in default_config_files:"},{"line_number":708,"context_line":"        try:"},{"line_number":709,"context_line":"            with open(config_file) as test:"},{"line_number":710,"context_line":"                for line in test:"},{"line_number":711,"context_line":"                    if line.startswith(\u0027config_source\u0027):"},{"line_number":712,"context_line":"                        config_sources.append(line.split(\u0027\u003d\u0027)[1])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_9a19c589","line":709,"in_reply_to":"3fa0c359_81216afe","updated":"2018-02-16 20:41:57.000000000","message":"I\u0027ll look into implementing it that way and see how they compare, but I think your suggestion is better \u0026 simpler.","commit_id":"502c05db18883881770c55c27340b815a0fb1ee5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"079ab9b0e9c34cdd957a4cf1b2bb2fc65fd2e754","unresolved":false,"context_lines":[{"line_number":715,"context_line":"    return config_sources"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"def find_config_sources(default_config_files):"},{"line_number":719,"context_line":"    \"\"\"Return a list of default configuration files."},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_a11ee6b7","line":718,"updated":"2018-02-06 16:09:10.000000000","message":"Do we need this to be a public API? Isn\u0027t it just a feature of ConfigOpts?","commit_id":"502c05db18883881770c55c27340b815a0fb1ee5"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"3910f2b7000c2b7ba7a0307e0d433f5481f0a4eb","unresolved":false,"context_lines":[{"line_number":715,"context_line":"    return config_sources"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"def find_config_sources(default_config_files):"},{"line_number":719,"context_line":"    \"\"\"Return a list of default configuration files."},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa0c359_5a3a5de7","line":718,"in_reply_to":"3fa0c359_a11ee6b7","updated":"2018-02-16 20:41:57.000000000","message":"Probably just in ConfigOpts","commit_id":"502c05db18883881770c55c27340b815a0fb1ee5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"cc69d90c8118a2c43faac976a03e3f43c98d5e10","unresolved":false,"context_lines":[{"line_number":2560,"context_line":"        except (IndexError, KeyError):"},{"line_number":2561,"context_line":"            pass"},{"line_number":2562,"context_line":"        except ValueError:"},{"line_number":2563,"context_line":"            raise"},{"line_number":2564,"context_line":""},{"line_number":2565,"context_line":"        if self._namespace._files_not_found:"},{"line_number":2566,"context_line":"            raise ConfigFilesNotFoundError(self._namespace._files_not_found)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_2831c05a","line":2563,"updated":"2018-03-15 14:22:48.000000000","message":"We don\u0027t need to catch and re-raise the exception if we\u0027re not going to do anything with it ourselves.","commit_id":"28614b211ab9b2495bccc924ced26a90770b80f0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"cc69d90c8118a2c43faac976a03e3f43c98d5e10","unresolved":false,"context_lines":[{"line_number":2637,"context_line":"        default_config_sources \u003d []"},{"line_number":2638,"context_line":"        for config_file in default_config_files:"},{"line_number":2639,"context_line":"            try:"},{"line_number":2640,"context_line":"                with open(config_file) as test:"},{"line_number":2641,"context_line":"                    for line in test:"},{"line_number":2642,"context_line":"                        if line.startswith(\u0027config_source\u0027):"},{"line_number":2643,"context_line":"                            default_config_sources.append(line.split(\u0027\u003d\u0027)[1])"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_484e74c1","line":2640,"updated":"2018-03-15 14:22:48.000000000","message":"We can\u0027t add any new code that reads files or does any form of parsing in order to implement this feature. We need to just define an option, initialize ConfigOpts, then use the option to extend the configuration of the ConfigOpts.","commit_id":"28614b211ab9b2495bccc924ced26a90770b80f0"}],"oslo_config/fixture.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"cc69d90c8118a2c43faac976a03e3f43c98d5e10","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        This method allows you to predefine the list of configuration sources"},{"line_number":236,"context_line":"        that are loaded by oslo_config. It will ensure that your tests do not"},{"line_number":237,"context_line":"        attempt to autodetect, and accidentally pick up config files from"},{"line_number":238,"context_line":"        locally installed services."},{"line_number":239,"context_line":"        \"\"\""},{"line_number":240,"context_line":"        if not isinstance(config_sources, list):"},{"line_number":241,"context_line":"            raise AttributeError(\"Please pass a list() to \""}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_68701809","line":238,"updated":"2018-03-15 14:22:48.000000000","message":"If we let the processing of the config_sources option depend on the regular option initialization we shouldn\u0027t need to protect tests from the discovery. The tests that don\u0027t set any extra sources just won\u0027t load any extra sources.","commit_id":"28614b211ab9b2495bccc924ced26a90770b80f0"}]}
