def guess_release_group(self, string, node=None, options=None): found = self.container.find_properties(string, node, 'releaseGroup') guess = self.container.as_guess(found, string, self.validate_group_name, sep_replacement='-') validated_guess = None if guess: explicit_group_node = node.group_node() if explicit_group_node: for leaf in explicit_group_node.leaves_containing( self.previous_safe_properties): if self.is_leaf_previous(leaf, node): if leaf.root.value[leaf.span[1]] == '-': guess.metadata().confidence = 1 else: guess.metadata().confidence = 0.7 validated_guess = guess if not validated_guess: # If previous group last leaf is identified as a safe property, # consider the raw value as a releaseGroup previous_group_node = node.previous_group_node() if previous_group_node: for leaf in previous_group_node.leaves_containing( self.previous_safe_properties): if self.is_leaf_previous(leaf, node): guess = Guess({'releaseGroup': node.value}, confidence=1, input=node.value, span=(0, len(node.value))) if self.validate_group_name(guess): node.guess = guess validated_guess = guess if validated_guess: # If following group nodes have only one unidentified leaf, it belongs to the release group next_group_node = node while True: next_group_node = next_group_node.next_group_node() if next_group_node: leaves = list(next_group_node.leaves()) if len(leaves) == 1 and not leaves[0].guess: validated_guess['releaseGroup'] = validated_guess[ 'releaseGroup'] + leaves[0].value leaves[0].guess = validated_guess else: break else: break if validated_guess: # Strip brackets validated_guess['releaseGroup'] = strip_brackets( validated_guess['releaseGroup']) return validated_guess
def test_strip_brackets(self): allTests = (('', ''), ('[test]', 'test'), ('{test2}', 'test2'), ('(test3)', 'test3'), ('(test4]', '(test4]'), ) for i, e in allTests: self.assertEqual(e, strip_brackets(i))
def guess_release_group(self, string, node=None, options=None): found = self.container.find_properties(string, node, 'releaseGroup') guess = self.container.as_guess(found, string, self.validate_group_name, sep_replacement='-') validated_guess = None if guess: explicit_group_node = node.group_node() if explicit_group_node: for leaf in explicit_group_node.leaves_containing(self.previous_safe_properties): if self.is_leaf_previous(leaf, node): if leaf.root.value[leaf.span[1]] == '-': guess.metadata().confidence = 1 else: guess.metadata().confidence = 0.7 validated_guess = guess if not validated_guess: # If previous group last leaf is identified as a safe property, # consider the raw value as a releaseGroup previous_group_node = node.previous_group_node() if previous_group_node: for leaf in previous_group_node.leaves_containing(self.previous_safe_properties): if self.is_leaf_previous(leaf, node): guess = Guess({'releaseGroup': node.value}, confidence=1, input=node.value, span=(0, len(node.value))) if self.validate_group_name(guess): node.guess = guess validated_guess = guess if validated_guess: # If following group nodes have only one unidentified leaf, it belongs to the release group next_group_node = node while True: next_group_node = next_group_node.next_group_node() if next_group_node: leaves = list(next_group_node.leaves()) if len(leaves) == 1 and not leaves[0].guess: validated_guess['releaseGroup'] = validated_guess['releaseGroup'] + leaves[0].value leaves[0].guess = validated_guess else: break else: break if validated_guess: # Strip brackets validated_guess['releaseGroup'] = strip_brackets(validated_guess['releaseGroup']) return validated_guess
def guess_release_group(self, string, node=None, options=None): if options and options.get('expected_group'): expected_container = PropertiesContainer(enhance=True, canonical_from_pattern=False) for expected_group in options.get('expected_group'): if expected_group.startswith('re:'): expected_group = expected_group[3:] expected_group = expected_group.replace(' ', '-') expected_container.register_property('releaseGroup', expected_group, enhance=True) else: expected_group = re.escape(expected_group) expected_container.register_property('releaseGroup', expected_group, enhance=False) found = expected_container.find_properties(string, node, options, 'releaseGroup') guess = expected_container.as_guess(found, string, self.validate_group_name) if guess: return guess found = self.container.find_properties(string, node, options, 'releaseGroup') guess = self.container.as_guess(found, string, self.validate_group_name) validated_guess = None if guess: group_node = node.group_node() if group_node: for leaf in group_node.leaves_containing(self.previous_safe_properties): if self.validate_node(leaf, node, True): if leaf.root.value[leaf.span[1]] == '-': guess.metadata().confidence = 1 else: guess.metadata().confidence = 0.7 validated_guess = guess if not validated_guess: # If previous group last leaf is identified as a safe property, # consider the raw value as a releaseGroup previous_group_node = node.previous_group_node() if previous_group_node: for leaf in previous_group_node.leaves_containing(self.previous_safe_properties): if self.validate_node(leaf, node, False): guess = Guess({'releaseGroup': node.value}, confidence=1, input=node.value, span=(0, len(node.value))) if self.validate_group_name(guess): node.guess = guess validated_guess = guess if validated_guess: # If following group nodes have only one unidentified leaf, it belongs to the release group next_group_node = node while True: next_group_node = next_group_node.next_group_node() if next_group_node: leaves = list(next_group_node.leaves()) if len(leaves) == 1 and not leaves[0].guess: validated_guess['releaseGroup'] = validated_guess['releaseGroup'] + leaves[0].value leaves[0].guess = validated_guess else: break else: break if not validated_guess and node.is_explicit() and node.node_last_idx == 0: # first node from group validated_guess = build_guess(node, 'releaseGroup', value=node.value[1:len(node.value)-1]) validated_guess.metadata().confidence = 0.4 validated_guess.metadata().span = 1, len(node.value) node.guess = validated_guess if validated_guess: # Strip brackets validated_guess['releaseGroup'] = strip_brackets(validated_guess['releaseGroup']) return validated_guess
def guess_release_group(self, string, node=None, options=None): if options and options.get('expected_group'): expected_container = PropertiesContainer( enhance=True, canonical_from_pattern=False) for expected_group in options.get('expected_group'): if expected_group.startswith('re:'): expected_group = expected_group[3:] expected_group = expected_group.replace(' ', '-') expected_container.register_property('releaseGroup', expected_group, enhance=True) else: expected_group = re.escape(expected_group) expected_container.register_property('releaseGroup', expected_group, enhance=False) found = expected_container.find_properties(string, node, options, 'releaseGroup') guess = expected_container.as_guess(found, string, self.validate_group_name) if guess: return guess found = self.container.find_properties(string, node, options, 'releaseGroup') guess = self.container.as_guess(found, string, self.validate_group_name) validated_guess = None if guess: group_node = node.group_node() if group_node: for leaf in group_node.leaves_containing( self.previous_safe_properties): if self.validate_node(leaf, node, True): if leaf.root.value[leaf.span[1]] == '-': guess.metadata().confidence = 1 else: guess.metadata().confidence = 0.7 validated_guess = guess if not validated_guess: # If previous group last leaf is identified as a safe property, # consider the raw value as a releaseGroup previous_group_node = node.previous_group_node() if previous_group_node: for leaf in previous_group_node.leaves_containing( self.previous_safe_properties): if self.validate_node(leaf, node, False): guess = Guess({'releaseGroup': node.value}, confidence=1, input=node.value, span=(0, len(node.value))) if self.validate_group_name(guess): node.guess = guess validated_guess = guess if validated_guess: # If following group nodes have only one unidentified leaf, it belongs to the release group next_group_node = node while True: next_group_node = next_group_node.next_group_node() if next_group_node: leaves = list(next_group_node.leaves()) if len(leaves) == 1 and not leaves[0].guess: validated_guess['releaseGroup'] = validated_guess[ 'releaseGroup'] + leaves[0].value leaves[0].guess = validated_guess else: break else: break if not validated_guess and node.is_explicit( ) and node.node_last_idx == 0: # first node from group validated_guess = build_guess( node, 'releaseGroup', value=node.value[1:len(node.value) - 1]) validated_guess.metadata().confidence = 0.4 validated_guess.metadata().span = 1, len(node.value) node.guess = validated_guess if validated_guess: # Strip brackets validated_guess['releaseGroup'] = strip_brackets( validated_guess['releaseGroup']) return validated_guess