)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1054,"name":"Darragh Bailey","email":"daragh.bailey@gmail.com","username":"dbailey-k"},"change_message_id":"a11aac149fdf39d9da75da4c4bc56b37f115ec0b","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This returns almost instantly."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"And it gets better: if we fail to correctly guess the nesting level"},{"line_number":31,"context_line":"necessary, Jenkins returns"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    …, \"jobs\": [{}, {}, …], …"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"so we can easily detect that we need to recurse deeper."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_daa7d7bc","line":33,"range":{"start_line":30,"start_character":0,"end_line":33,"end_character":29},"updated":"2018-08-13 13:49:50.000000000","message":"this seems like something that might be a good idea to add to the method definition.","commit_id":"67d59dfe778291b218f20ce1e0a539825618bbcb"}],"jenkins/__init__.py":[{"author":{"_account_id":1054,"name":"Darragh Bailey","email":"daragh.bailey@gmail.com","username":"dbailey-k"},"change_message_id":"a11aac149fdf39d9da75da4c4bc56b37f115ec0b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"PLUGIN_INFO \u003d \u0027pluginManager/api/json?depth\u003d%(depth)s\u0027"},{"line_number":97,"context_line":"CRUMB_URL \u003d \u0027crumbIssuer/api/json\u0027"},{"line_number":98,"context_line":"WHOAMI_URL \u003d \u0027me/api/json?depth\u003d%(depth)s\u0027"},{"line_number":99,"context_line":"JOBS_QUERY \u003d \u0027?tree\u003djobs[url,color,name,jobs]\u0027"},{"line_number":100,"context_line":"JOB_INFO \u003d \u0027%(folder_url)sjob/%(short_name)s/api/json?depth\u003d%(depth)s\u0027"},{"line_number":101,"context_line":"JOB_NAME \u003d \u0027%(folder_url)sjob/%(short_name)s/api/json?tree\u003dname\u0027"},{"line_number":102,"context_line":"ALL_BUILDS \u003d \u0027%(folder_url)sjob/%(short_name)s/api/json?tree\u003dallBuilds[number,url]\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_1a16aff2","side":"PARENT","line":99,"range":{"start_line":99,"start_character":13,"end_line":99,"end_character":46},"updated":"2018-08-13 13:49:50.000000000","message":"I\u0027m torn between trying to mostly keep this here and replace the second \u0027jobs\u0027 with a \u0027%(jobs)s\u0027 format placeholder, and the fact it would need to be split anyway into something like the following\n\n JOBS_QUERY_PREFIX \u003d \u0027?tree\u003d%(jobs_query)\u0027\n JOBS_QUERY \u003d \u0027jobs[url,color,name,%(jobs)s]\u0027\n\nAnd the fact that this allows consumers to alter the fields included by adjusting these library constants versus complicating it a bit more.","commit_id":"ef3b10cb16df59e77f0d91a5a3df50f0d269c879"},{"author":{"_account_id":27651,"name":"Tomas Janousek","email":"tomi@nomi.cz","username":"tomas.janousek"},"change_message_id":"0eed068c977befb98fa1b13222da6b7dd47accde","unresolved":false,"context_lines":[{"line_number":96,"context_line":"PLUGIN_INFO \u003d \u0027pluginManager/api/json?depth\u003d%(depth)s\u0027"},{"line_number":97,"context_line":"CRUMB_URL \u003d \u0027crumbIssuer/api/json\u0027"},{"line_number":98,"context_line":"WHOAMI_URL \u003d \u0027me/api/json?depth\u003d%(depth)s\u0027"},{"line_number":99,"context_line":"JOBS_QUERY \u003d \u0027?tree\u003djobs[url,color,name,jobs]\u0027"},{"line_number":100,"context_line":"JOB_INFO \u003d \u0027%(folder_url)sjob/%(short_name)s/api/json?depth\u003d%(depth)s\u0027"},{"line_number":101,"context_line":"JOB_NAME \u003d \u0027%(folder_url)sjob/%(short_name)s/api/json?tree\u003dname\u0027"},{"line_number":102,"context_line":"ALL_BUILDS \u003d \u0027%(folder_url)sjob/%(short_name)s/api/json?tree\u003dallBuilds[number,url]\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_9576fe6f","side":"PARENT","line":99,"range":{"start_line":99,"start_character":13,"end_line":99,"end_character":46},"in_reply_to":"3f79a3b5_1a16aff2","updated":"2018-08-14 08:37:17.000000000","message":"Oh, I had no idea that these can/are meant to be overridden. I\u0027ll try to do it this way and if it isn\u0027t entirely ugly, keep it. :-)","commit_id":"ef3b10cb16df59e77f0d91a5a3df50f0d269c879"},{"author":{"_account_id":1054,"name":"Darragh Bailey","email":"daragh.bailey@gmail.com","username":"dbailey-k"},"change_message_id":"a11aac149fdf39d9da75da4c4bc56b37f115ec0b","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        \"\"\"Get list of all jobs recursively to the given folder depth."},{"line_number":991,"context_line":""},{"line_number":992,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"},{"line_number":993,"context_line":"        keys."},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":996,"context_line":"            None, which will search all levels. 0 limits to toplevel."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_bd29b58a","line":993,"updated":"2018-08-13 13:49:50.000000000","message":"I think this method docstring should expand on some of the behaviour of jenkins when you reach no more folders with the folder_depth_inc requesting more than were present. That information in the commit message is important enough to include here.","commit_id":"67d59dfe778291b218f20ce1e0a539825618bbcb"},{"author":{"_account_id":27651,"name":"Tomas Janousek","email":"tomi@nomi.cz","username":"tomas.janousek"},"change_message_id":"0eed068c977befb98fa1b13222da6b7dd47accde","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        \"\"\"Get list of all jobs recursively to the given folder depth."},{"line_number":991,"context_line":""},{"line_number":992,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"},{"line_number":993,"context_line":"        keys."},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":996,"context_line":"            None, which will search all levels. 0 limits to toplevel."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_7567a2b8","line":993,"in_reply_to":"3f79a3b5_bd29b58a","updated":"2018-08-14 08:37:17.000000000","message":"Agreed.","commit_id":"67d59dfe778291b218f20ce1e0a539825618bbcb"},{"author":{"_account_id":1054,"name":"Darragh Bailey","email":"daragh.bailey@gmail.com","username":"dbailey-k"},"change_message_id":"a11aac149fdf39d9da75da4c4bc56b37f115ec0b","unresolved":false,"context_lines":[{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":996,"context_line":"            None, which will search all levels. 0 limits to toplevel."},{"line_number":997,"context_line":"        :param folder_depth_inc: Number of levels to fetch at once, ``int``."},{"line_number":998,"context_line":"            By default 10, which is usually enough to fetch all jobs using"},{"line_number":999,"context_line":"            a single request and still easily fits into an HTTP request."},{"line_number":1000,"context_line":"        :returns: list of jobs, ``[ { str: str} ]``"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_1d30e9e7","line":997,"range":{"start_line":997,"start_character":15,"end_line":997,"end_character":31},"updated":"2018-08-13 13:49:50.000000000","message":"Not sure about this name \u0027fetch_depth_per_request\u0027? or \u0027per_request_depth\u0027, not critical though if others think it\u0027s fine.","commit_id":"67d59dfe778291b218f20ce1e0a539825618bbcb"},{"author":{"_account_id":27651,"name":"Tomas Janousek","email":"tomi@nomi.cz","username":"tomas.janousek"},"change_message_id":"0eed068c977befb98fa1b13222da6b7dd47accde","unresolved":false,"context_lines":[{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":996,"context_line":"            None, which will search all levels. 0 limits to toplevel."},{"line_number":997,"context_line":"        :param folder_depth_inc: Number of levels to fetch at once, ``int``."},{"line_number":998,"context_line":"            By default 10, which is usually enough to fetch all jobs using"},{"line_number":999,"context_line":"            a single request and still easily fits into an HTTP request."},{"line_number":1000,"context_line":"        :returns: list of jobs, ``[ { str: str} ]``"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_b5f69ad6","line":997,"range":{"start_line":997,"start_character":15,"end_line":997,"end_character":31},"in_reply_to":"3f79a3b5_1d30e9e7","updated":"2018-08-14 08:37:17.000000000","message":"I quite like \u0027folder_depth_per_request\u0027 (folder instead of fetch so that it\u0027s obvious both talk about the same thing). It\u0027s long, but descriptive enough to not require looking into documentation when reading code that uses it, and that\u0027s a good thing.","commit_id":"67d59dfe778291b218f20ce1e0a539825618bbcb"}]}
