def is_valid(self):
for spec in self.product_specs:<EOL><INDENT>for feature in spec.get('<STR_LIT>', []):<EOL><INDENT>if feature.replace('<STR_LIT>', '<STR_LIT:.>') not in self.feature_list:<EOL><INDENT>self.errors_mandatory.append(feature)<EOL><DEDENT><DEDENT>for feature in spec.get('<STR_LIT>', []):<EOL><INDENT>if feature.replace('<STR_LIT>', '<STR_LIT:.>') in self.feature_list:<EOL><INDENT>self.errors_never.append(feature)<EOL><DEDENT><DEDENT><DEDENT>return not self.has_errors()<EOL>
Checks the feature list product spec against.
Checks if all mandartory features are contained;
Checks that all "never" features are not contained
:return: boolean