)]}'
{"openstack/cloud/openstackcloud.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"42981d43f3a93f88e56ffaa4ae36d4f5078b7cea","unresolved":true,"context_lines":[{"line_number":330,"context_line":"        else:"},{"line_number":331,"context_line":"            name_key \u003d \u0027%s:%s\u0027 % (self.name, namespace)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        def generate_key(*args, **kwargs):"},{"line_number":334,"context_line":"            if args and isinstance(args[0], str):"},{"line_number":335,"context_line":"                arg_key \u003d \u0027,\u0027.join(args)"},{"line_number":336,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1599bed0_1dc661c6","line":333,"range":{"start_line":333,"start_character":8,"end_line":333,"end_character":42},"updated":"2021-08-13 15:05:54.000000000","message":"I think this is because it is now passing the function as the first argument?\n\nSo the below code is probably fine?","commit_id":"e45347202f0c72abdc4522deab97b098c1d38f19"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c34400d267ac37ba4546a8b216b269fae2fa19a6","unresolved":true,"context_lines":[{"line_number":330,"context_line":"        else:"},{"line_number":331,"context_line":"            name_key \u003d \u0027%s:%s\u0027 % (self.name, namespace)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        def generate_key(*args, **kwargs):"},{"line_number":334,"context_line":"            if args and isinstance(args[0], str):"},{"line_number":335,"context_line":"                arg_key \u003d \u0027,\u0027.join(args)"},{"line_number":336,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"19d1057c_60c04a80","line":333,"range":{"start_line":333,"start_character":8,"end_line":333,"end_character":42},"in_reply_to":"1599bed0_1dc661c6","updated":"2021-08-13 16:33:35.000000000","message":"Actually, I would assume that the old code has always been broken, because the assumption that *args would be a list of strings is just wrong. With decorator\u003c5, however, I always see args\u003d\u003d(), so arg_key will always be \u0027\u0027.\nWith the new lib, I see various results, e.g. (True,), (False,), (None,None,None). None of these contain strings. But my patch all maps them to \u0027\u0027 like the old code did.\n\nHowever, with what would IMO be the more correct fix of using\n\narg_key \u003d \u0027,\u0027.join(map(str, args))\n\n7/20 test_caching tests are failing. Maybe this is an indication that the cache handling is broken, so someone should take a deeper look at this.","commit_id":"e45347202f0c72abdc4522deab97b098c1d38f19"}]}
