class package:
def __init__(self, name, dependencies):
self.name = name
self.dependencies = dependencies
repository = [
package('udev', ['util-linux']),
package('util-linux', ['udev']),
package('kde', ['qt'])
]
good_packages = []
bad_packages = []
def dependencies_in_repository(dependencies):
for dependency in dependencies:
if dependency not in [pkg.name for pkg in repository]:
return False
return True
for pkg in repository:
if dependencies_in_repository(pkg.dependencies):
good_packages.append(pkg)
else:
bad_packages.append(pkg)
print 'good packages:', [pkg.name for pkg in good_packages]
print 'bad packages:', [pkg.name for pkg in bad_packages]
Y2xhc3MgcGFja2FnZToKCWRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZXBlbmRlbmNpZXMpOgoJCXNlbGYubmFtZSA9IG5hbWUKCQlzZWxmLmRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llcwoKcmVwb3NpdG9yeSA9IFsKCXBhY2thZ2UoJ3VkZXYnLCBbJ3V0aWwtbGludXgnXSksCglwYWNrYWdlKCd1dGlsLWxpbnV4JywgWyd1ZGV2J10pLAoJcGFja2FnZSgna2RlJywgWydxdCddKQpdCgpnb29kX3BhY2thZ2VzID0gW10KYmFkX3BhY2thZ2VzID0gW10KCmRlZiBkZXBlbmRlbmNpZXNfaW5fcmVwb3NpdG9yeShkZXBlbmRlbmNpZXMpOgoJZm9yIGRlcGVuZGVuY3kgaW4gZGVwZW5kZW5jaWVzOgoJCWlmIGRlcGVuZGVuY3kgbm90IGluIFtwa2cubmFtZSBmb3IgcGtnIGluIHJlcG9zaXRvcnldOgoJCQlyZXR1cm4gRmFsc2UKCXJldHVybiBUcnVlCgpmb3IgcGtnIGluIHJlcG9zaXRvcnk6CglpZiBkZXBlbmRlbmNpZXNfaW5fcmVwb3NpdG9yeShwa2cuZGVwZW5kZW5jaWVzKToKCQlnb29kX3BhY2thZ2VzLmFwcGVuZChwa2cpCgllbHNlOgoJCWJhZF9wYWNrYWdlcy5hcHBlbmQocGtnKQoKcHJpbnQgJ2dvb2QgcGFja2FnZXM6JywgW3BrZy5uYW1lIGZvciBwa2cgaW4gZ29vZF9wYWNrYWdlc10KcHJpbnQgJ2JhZCBwYWNrYWdlczonLCBbcGtnLm5hbWUgZm9yIHBrZyBpbiBiYWRfcGFja2FnZXNdCg==