author | Tero Marttila <terom@paivola.fi> |
Tue, 19 Feb 2013 20:10:21 +0200 | |
changeset 2 | 5a8a32cbc944 |
permissions | -rw-r--r-- |
2
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
import logging; log = logging.getLogger('pvl.syslog.filter') |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
import re # XXX |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
import os.path, fnmatch |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
class SyslogFilter (object) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
Match syslog messages fields against given patterns. |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
@classmethod |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
def build (cls, **filters) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
Match using given non-None fields. |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
# drop None's |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
return cls(dict((attr, regex) for attr, regex in filters.iteritems() if regex is not None)) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
def __init__ (self, filters) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
Match using given { field: regex }. |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
self.filters = filters |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
def match_glob (self, attr, glob, value=None) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
Match prog as glob. |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
if not glob : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
return { attr: value } |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
if not value : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
# require |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
return False |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
# normalize |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
value = value.strip() |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
# match |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
if fnmatch.fnmatch(value, glob) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
return { attr: value } |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
else : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
return False |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
match_facility = match_glob |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
def match_prog (self, attr, glob, prog=None) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
Match prog as glob. |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
if prog : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
# normalize |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
prog = prog.strip().lower() |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
if prog.startswith('/') : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
# leaves postfix/* intact, but fixes /usr/bin/cron |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
_, prog = os.path.split(prog) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
# match |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
return self.match_glob(attr, glob, prog) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
REGEX_TYPE = type(re.compile('')) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
def match_regex (self, attr, regex, value=None) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
Match given value against given pattern. |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
if not regex : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
return { attr: value } |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
if not value : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
# XXX: optional = match empty string? |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
value = '' |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
else : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
# normalize; XXX: unicode? |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
value = str(value).strip() |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
# match |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
match = regex.match(value) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
if not match : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
return False |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
# as match-values |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
matches = { attr: match.group(0) } # whole match |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
matches.update(match.groupdict()) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
# TODO match.expand? |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
return matches |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
def filter (self, item) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
Match given item. Returns any matched values (including regexp capture groups) across all fields. |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
""" |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
match = None |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
matches = {} |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
104 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
for attr in self.filters : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
# filter |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
107 |
filter = self.filters[attr] |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
108 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
# lookup match-func |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
match = getattr(self, 'match_{attr}'.format(attr=attr), None) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
111 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
if match : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
113 |
pass |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
elif isinstance(filter, self.REGEX_TYPE) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
116 |
match = self.match_regex |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
117 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
118 |
else : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
119 |
match = self.match_glob |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
121 |
# apply match |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
122 |
if attr in item : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
123 |
match = match(attr, filter, item[attr]) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
124 |
else : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
125 |
match = match(attr, filter) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
126 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
127 |
log.debug("%s: %s", attr, match) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
128 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
129 |
if match : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
130 |
# match |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
131 |
matches.update(match) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
132 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
133 |
else : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
134 |
# reject |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
135 |
return |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
136 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
137 |
# test last match |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
138 |
if match is None : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
139 |
# empty filter -> all None |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
140 |
return True |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
141 |
else : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
142 |
return matches |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
143 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
144 |
def process (self, items) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
145 |
for item in items: |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
146 |
match = self.filter(item) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
147 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
148 |
if match : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
149 |
yield item |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
150 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
151 |
__call__ = process |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
152 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
153 |
def __nonzero__ (self) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
154 |
return bool(self.filters) |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
155 |
|
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
156 |
def __repr__ (self) : |
5a8a32cbc944
import pvl.syslog from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
157 |
return repr(self.filters) |