)]}'
{"swift/common/middleware/ratelimit.py":[{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"7988196317c47b473f3de61268f6709109db05a6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"def interpret_conf_limits(conf, name_prefix):"},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    Parses general parms for rate limits looking for things that"},{"line_number":30,"context_line":"    start with the provided name_prefic within the provided conf"},{"line_number":31,"context_line":"    and returns lists for both internal use and for /info"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    :param conf: conf dict to parse"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_b9a46f08","line":30,"updated":"2014-05-19 18:03:20.000000000","message":"Nit: s/name_prefic/name_prefix/","commit_id":"e563c2aafe42babe39a582b4b200e601a4c125d1"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"9f8b21fba9645ec9b77511d7cdb3c9fedcb9ccbe","unresolved":false,"context_lines":[{"line_number":27,"context_line":"def interpret_conf_limits(conf, name_prefix):"},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    Parses general parms for rate limits looking for things that"},{"line_number":30,"context_line":"    start with the provided name_prefic within the provided conf"},{"line_number":31,"context_line":"    and returns lists for both internal use and for /info"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    :param conf: conf dict to parse"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_642eba8d","line":30,"in_reply_to":"7adec928_b9a46f08","updated":"2014-05-19 18:34:14.000000000","message":"Done","commit_id":"e563c2aafe42babe39a582b4b200e601a4c125d1"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"7988196317c47b473f3de61268f6709109db05a6","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                            log_sleep_time_seconds\u003dself.log_sleep_time_seconds,"},{"line_number":124,"context_line":"                            clock_accuracy\u003dself.clock_accuracy,"},{"line_number":125,"context_line":"                            account_whitelist\u003dself.ratelimit_whitelist,"},{"line_number":126,"context_line":"                            account_blacklist\u003dself.ratelimit_blacklist,"},{"line_number":127,"context_line":"                            container_ratelimits\u003dcont_limit_info,"},{"line_number":128,"context_line":"                            container_listing_ratelimits\u003dcont_list_limit_info)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_79eca72a","line":126,"updated":"2014-05-19 18:03:20.000000000","message":"I can imagine that the whitelist and blacklist could get large and maybe shouldn\u0027t be shared publicly","commit_id":"e563c2aafe42babe39a582b4b200e601a4c125d1"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"9f8b21fba9645ec9b77511d7cdb3c9fedcb9ccbe","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                            log_sleep_time_seconds\u003dself.log_sleep_time_seconds,"},{"line_number":124,"context_line":"                            clock_accuracy\u003dself.clock_accuracy,"},{"line_number":125,"context_line":"                            account_whitelist\u003dself.ratelimit_whitelist,"},{"line_number":126,"context_line":"                            account_blacklist\u003dself.ratelimit_blacklist,"},{"line_number":127,"context_line":"                            container_ratelimits\u003dcont_limit_info,"},{"line_number":128,"context_line":"                            container_listing_ratelimits\u003dcont_list_limit_info)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_8450260c","line":126,"in_reply_to":"7adec928_79eca72a","updated":"2014-05-19 18:34:14.000000000","message":"cool, will nix all items suggested in review comments","commit_id":"e563c2aafe42babe39a582b4b200e601a4c125d1"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"60da311a93891e3dded0148b5ce2f6a38355f957","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                 max_sleep_time_seconds\u003d60, log_sleep_time_seconds\u003d0,"},{"line_number":97,"context_line":"                 clock_accuracy\u003d1000, rate_buffer_seconds\u003d5,"},{"line_number":98,"context_line":"                 ratelimit_whitelist\u003d[], ratelimit_blacklist\u003d[],"},{"line_number":99,"context_line":"                 container_ratelimits\u003d[], container_listing_ratelimits\u003d[],"},{"line_number":100,"context_line":"                 logger\u003dNone):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        self.app \u003d app"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ae8d1ca_047ce11f","line":99,"updated":"2014-05-27 17:48:01.000000000","message":"Defaulting to mutable types is a bad thing. Instead, set them to None and then, if None, set them to the empty list.","commit_id":"f6f798a7c50d7b7bd5aabdbca3390053b2c03e3e"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"60da311a93891e3dded0148b5ce2f6a38355f957","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                        max_sleep_time_seconds\u003dmax_sleep_time_seconds,"},{"line_number":321,"context_line":"                        container_ratelimits\u003dcont_limit_info,"},{"line_number":322,"context_line":"                        container_listing_ratelimits\u003dcont_list_limit_info)"},{"line_number":323,"context_line":"    logger \u003d conf.get(\u0027logger\u0027, None)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def limit_filter(app):"},{"line_number":326,"context_line":"        return RateLimitMiddleware("}],"source_content_type":"text/x-python","patch_set":3,"id":"3ae8d1ca_e4037571","line":323,"updated":"2014-05-27 17:48:01.000000000","message":"I\u0027d propose using the get_logger() call from above (with the proper route) and then passing that in. Then you aren\u0027t needing conf in the constructor at all and can remove that parameter.","commit_id":"f6f798a7c50d7b7bd5aabdbca3390053b2c03e3e"}]}
