def process(self, package: Package) -> None: self._packages_processed += 1 if self._packages_processed == 1000 or self._packages_processed == 10000 or self._packages_processed == 100000 or self._packages_processed == 1000000: self._recalc_opt_ruleblocks() package.effname = package.basename if package.basename is not None else package.name package_context = PackageContext() if package.repo: package_context.set_rulesets( self._repomgr.get_repository(package.repo)['ruleset']) for rule in self._iter_package_rules(package): match_context = rule.match(package, package_context) if not match_context: continue rule.apply(package, package_context, match_context) if match_context.last: break if package_context.warnings and not package.has_flag( PackageFlags.REMOVE): for warning in package_context.warnings: print('Rule warning for {} ({}) in {}: {}'.format( package.effname, package.name, package.repo, warning), file=sys.stderr) if package.has_flag(PackageFlags.TRACE): print('Rule trace for {} ({}) {} in {}'.format( package.effname, package.name, package.version, package.repo), file=sys.stderr) for rulenum in package_context.matched_rules: print('{:5d} {}'.format(rulenum, self._rules[rulenum].pretty), file=sys.stderr)
def process(self, package: Package) -> None: # XXX: duplicate code: PackageMaker does the same package.effname = package.projectname_seed package_context = PackageContext() if package.repo != self._repository_name: raise RuntimeError( f'not expected package from repository "{package.repo}" with ruleset for repository "{self._repository_name}"' ) if self._active_statistics is self._next_statistics: if self._active_statistics.get_total_packages() in (10, 100, 1000, 10000, 100000): self._iterator.update_statistics(self._active_statistics) else: if self._next_statistics.get_total_packages( ) > self._active_statistics.get_total_packages() * 1.1: self._active_statistics = self._next_statistics self._iterator.update_statistics(self._active_statistics) self._next_statistics.count_package() for rule in self._iterator.iter_rules_for_package(package): match_context = rule.match(package, package_context) if not match_context: continue self._next_statistics.count_rule_match(rule.texthash) rule.apply(package, package_context, match_context) if match_context.last: break if package_context.warnings and not package.has_flag( PackageFlags.REMOVE): for warning in package_context.warnings: print('Rule warning for {} ({}) in {}: {}'.format( package.effname, package.trackname or '???', package.repo, warning), file=sys.stderr) if package.has_flag(PackageFlags.TRACE): print('Rule trace for {} ({}) {} in {}'.format( package.effname, package.trackname or '???', package.version, package.repo), file=sys.stderr) for rulenum in package_context.matched_rules: print('{:5d} {}'.format( rulenum, self._ruleset.get_rules()[rulenum].pretty), file=sys.stderr)
def is_p_is_patch_matcher(package: Package, package_context: PackageContext, match_context: MatchContext) -> bool: return package.has_flag(PackageFlags.P_IS_PATCH) == is_p_is_patch