)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"a0b5241ac060de5edf820e29aa83ddca7822d0e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"7a1adb86_5ff2cd4c","updated":"2023-03-27 19:03:30.000000000","message":"afaik this was the first time optionxform appeared in the swift code base - essentially it seems our wsgi configs have always been case sensitive","commit_id":"34f5085c3e143a27d9f3c4980b5b04514d78e659"}],"bin/swift-config":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"866eb7b016dded3a4ae634ba78b54bcd0bcf3e7c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            if not isinstance(v, dict):"},{"line_number":47,"context_line":"                flat_vars[k] \u003d v"},{"line_number":48,"context_line":"                continue"},{"line_number":49,"context_line":"            print \u0027  %s\u0027 % k"},{"line_number":50,"context_line":"            for opt, value in v.items():"},{"line_number":51,"context_line":"                print \u0027    %s \u003d %s\u0027 % (opt, value)"},{"line_number":52,"context_line":"        for k, v in flat_vars.items():"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAOH%2F%2FsPg%3D","line":49,"updated":"2013-04-02 21:55:08.000000000","message":"If you stuck some [] around the %s, then the output would be suitable for copying and pasting into a new conf file, so if you wanted to, you could combine two config files this way.\n\nJust a suggestion.","commit_id":"dec324395ccdfaee3a4df1ce3e11892fd8d081a6"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"c7be386336228a5361d1aa2c0f26b451bc2c5640","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        else:"},{"line_number":31,"context_line":"            conf_files +\u003d Server(arg).conf_files(**options)"},{"line_number":32,"context_line":"    for conf_file in conf_files:"},{"line_number":33,"context_line":"        print conf_file"},{"line_number":34,"context_line":"        if options[\u0027wsgi\u0027]:"},{"line_number":35,"context_line":"            app_config \u003d appconfig(conf_file)"},{"line_number":36,"context_line":"            context \u003d app_config.context"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"AAAAOX%2F%2F%2Bpo%3D","line":33,"updated":"2013-04-03 19:41:35.000000000","message":"tiny suggestion: print out a pound before the filename so that it\u0027s a comment.","commit_id":"9ca7bdfedcc6e5acf4b3b4dab8c3d32cc1b56f85"}],"swift/common/utils.py":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"866eb7b016dded3a4ae634ba78b54bcd0bcf3e7c","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        return True"},{"line_number":1206,"context_line":"    filtered_configs \u003d filter(_filter, os.listdir(conf_dir))"},{"line_number":1207,"context_line":"    reljoin \u003d partial(os.path.join, conf_dir)"},{"line_number":1208,"context_line":"    return parser.read(sorted(map(reljoin, filtered_configs)))"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"def readconf(conf_path, section_name\u003dNone, log_name\u003dNone, defaults\u003dNone,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2FsVM%3D","line":1208,"updated":"2013-04-02 21:55:08.000000000","message":"I think you can condense this down a whole bunch, maybe like so:\n\n    return parser.read([os.path.join(conf_dir, f)\n         for f in os.listdir(conf_dir)\n         if f.endswith(\u0027.conf\u0027) and not f.startswith(\u0027.\u0027)])\n\nThat might be bikeshedding on my part, though, so feel free to ignore it.","commit_id":"dec324395ccdfaee3a4df1ce3e11892fd8d081a6"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"f96fd638d29d971b85f7a6629a70e7613167c520","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import errno"},{"line_number":19,"context_line":"import fcntl"},{"line_number":20,"context_line":"from functools import partial"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import pwd"},{"line_number":23,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAOH%2F%2FsD8%3D","line":20,"updated":"2013-04-02 23:42:33.000000000","message":"don\u0027t need this import any more","commit_id":"8c76565385539037b34509524d13761eebbcd615"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"c7be386336228a5361d1aa2c0f26b451bc2c5640","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"            for root, dirs, files in os.walk(path):"},{"line_number":1296,"context_line":"                if dir_ext and root.endswith(dir_ext):"},{"line_number":1297,"context_line":"                    found_files.append(root)"},{"line_number":1298,"context_line":"                    # the root is a config dir, decend no further"},{"line_number":1299,"context_line":"                    break"},{"line_number":1300,"context_line":"                for file_ in files:"},{"line_number":1301,"context_line":"                    if ext and not file_.endswith(ext):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAOX%2F%2F%2Bow%3D","line":1298,"updated":"2013-04-03 19:41:35.000000000","message":"*descend","commit_id":"9ca7bdfedcc6e5acf4b3b4dab8c3d32cc1b56f85"}],"swift/common/wsgi.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"a0b5241ac060de5edf820e29aa83ddca7822d0e7","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            \u0027__file__\u0027: os.path.abspath(conf_dir)"},{"line_number":67,"context_line":"        }"},{"line_number":68,"context_line":"        self.parser \u003d loadwsgi.NicerConfigParser(conf_dir, defaults\u003ddefaults)"},{"line_number":69,"context_line":"        self.parser.optionxform \u003d str  # Don\u0027t lower-case keys"},{"line_number":70,"context_line":"        utils.read_conf_dir(self.parser, conf_dir)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8c79ae81_9097b907","line":69,"updated":"2023-03-27 19:03:30.000000000","message":"it looks like I cargo culted this from paste.deploy.loadwsgi\n\nhttps://github.com/Pylons/pastedeploy/blob/main/src/paste/deploy/loadwsgi.py#L391","commit_id":"9e6860ecb12632634d2c528bd74c51700a979e66"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"866eb7b016dded3a4ae634ba78b54bcd0bcf3e7c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    \"\"\""},{"line_number":88,"context_line":"    Wrap a function whos first argument is a paste.deploy style config uri,"},{"line_number":89,"context_line":"    such that you can pass it an un-adorned raw filesystem path and the config"},{"line_number":90,"context_line":"    direcective (either config: or config_dir:) will be added automatically"},{"line_number":91,"context_line":"    based on the type of filesystem entity at the given path (either a file or"},{"line_number":92,"context_line":"    directory) before passing it through to the paste.deploy function."},{"line_number":93,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2FsQ8%3D","line":90,"updated":"2013-04-02 21:55:08.000000000","message":"*directive","commit_id":"dec324395ccdfaee3a4df1ce3e11892fd8d081a6"}]}
