@@ -0,0 +1,562 @@
+from subprocess import Popen, PIPE%0A%0Adef is_class(file):%0A    return file.endswith(%22.class%22) and not file.startswith(%22META-INF%22)%0A%0Adef modified_paths(patch):%0A    p = Popen(%5B%22jar%22, %22-tf%22, patch%5D, stdout=PIPE)%0A    output, _ = p.communicate()%0A    return filter(is_class, %5Bfile.decode() for file in output.split(b%22%5Cn%22)%5D)%0A%0A%0Adef path_to_class(path):%0A    if %22$%22 in path:%0A        return path.split(%22$%22)%5B0%5D%0A    else:%0A        return path.replace(%22.class%22, %22%22)%0A%0Adef modified_classes(patch):%0A    classes = map(path_to_class, modified_paths(patch))%0A    return list(set(classes))

Patch utils to get content from patch jars