root/releases/pkgcore-checks/0.3/pkgcore_checks/stale_unstable.py @ ferringb%2540gmail.com-20070207174621-yb3eqrqc6jtmdgse

Revision ferringb%2540gmail.com-20070207174621-yb3eqrqc6jtmdgse, 1.6 KB (checked in by Brian Harring <ferringb@…>, 2 years ago)

kill off to_str, no longer used; use short_desc and long_desc properties instead

Line 
1# Copyright: 2006 Brian Harring <ferringb@gmail.com>
2# License: GPL2
3
4import time
5from pkgcore_checks.base import Template, versioned_feed, Result
6from pkgcore_checks import addons
7
8day = 24*3600
9
10
11class StaleUnstableKeyword(Result):
12    """
13    packages that have unstable keywords that have been unstable for over a
14    month
15    """
16   
17    __slots__ = ("category", "package", "version", "keywords", "period")
18
19    threshold = versioned_feed
20   
21    def __init__(self, pkg, period):
22        Result.__init__(self)
23        self._store_cpv(pkg)
24        self.keywords = tuple(x for x in pkg.keywords if x.startswith("~"))
25        self.period = period
26
27    @property
28    def short_desc(self):
29        return "no change in %i days for unstable keywords [ %s ]" % (
30            self.period, ', '.join(self.keywords))
31   
32
33class StaleUnstableReport(Template):
34    """Ebuilds that have sat unstable for over a month"""
35
36    feed_type = versioned_feed
37    required_addons = (addons.ArchesAddon,)
38    known_results = (StaleUnstableKeyword,)
39
40    def __init__(self, options, arches, staleness=long(day*30)):
41        Template.__init__(self, options)
42        self.arches = options.arches
43        self.staleness = staleness
44        self.start_time = None
45
46    def start(self):
47        self.start_time = time.time()
48
49    def feed(self, pkg, reporter):
50        unchanged_time = self.start_time - pkg._mtime_
51        if unchanged_time < self.staleness:
52            return
53        unstable = [x for x in pkg.keywords if x.startswith("~")]
54        if not unstable:
55            return
56        reporter.add_report(
57            StaleUnstableKeyword(pkg, int(unchanged_time/day)))
Note: See TracBrowser for help on using the browser.