1919
2020
2121STANDARD_FLAGS = {
22- 'seen' : 'Seen' ,
23- 'flagged' : 'Flagged' ,
24- 'delete' : 'Deleted' ,
25- 'draft' : 'Draft' ,
26- 'recent' : 'Recent'
22+ 'seen' : 'Seen' ,
23+ 'flagged' : 'Flagged' ,
24+ 'delete' : 'Deleted' ,
25+ 'draft' : 'Draft' ,
26+ 'recent' : 'Recent'
2727}
2828
2929SEARCH_HEADERS = ['BCC' , 'CC' , 'FROM' , 'TO' ]
@@ -73,7 +73,7 @@ def __init__(self, options, columns):
7373 self .host = options .get ('host' , None )
7474 if self .host is None :
7575 log_to_postgres ('You MUST set the imap host' ,
76- ERROR )
76+ ERROR )
7777 self .port = options .get ('port' , None )
7878 self .ssl = options .get ('ssl' , False )
7979 self .login = options .get ('login' , None )
@@ -87,7 +87,8 @@ def __init__(self, options, columns):
8787
8888 def get_rel_size (self , quals , columns ):
8989 """Inform the planner that it can be EXTREMELY costly to use the
90- payload column, and that a query on Message-ID will return only one row."""
90+ payload column, and that a query on Message-ID will return
91+ only one row."""
9192 width = len (columns ) * 100
9293 nb_rows = 1000000
9394 if self .payload_column in columns :
@@ -97,7 +98,8 @@ def get_rel_size(self, quals, columns):
9798 if qual .field_name .lower () == 'in-reply-to' and \
9899 qual .operator == '=' :
99100 nb_rows = 10
100- if qual .field_name .lower () == 'message-id' and qual .operator == '=' :
101+ if (qual .field_name .lower () == 'message-id' and
102+ qual .operator == '=' ):
101103 nb_rows = 1
102104 break
103105 return (nb_rows , width )
@@ -119,8 +121,8 @@ def imap_agent(self):
119121 return self ._imap_agent
120122
121123 def get_path_keys (self ):
122- """Helps the planner by supplying a list of list of access keys, as well
123- as a row estimate for each one."""
124+ """Helps the planner by supplying a list of list of access keys,
125+ as well as a row estimate for each one."""
124126 return [(('Message-ID' ,), 1 ), (('From' ,), 100 ), (('To' ,), 100 ),
125127 (('In-Reply-To' ,), 10 )]
126128
@@ -153,12 +155,12 @@ def _make_condition(self, key, operator, value):
153155 # Contains on flags
154156 return ' ' .join (['%s%s' % (prefix ,
155157 (STANDARD_FLAGS .get (atom .lower (), '%s %s'
156- % ('KEYWORD' , atom )))) for atom in value ])
158+ % ('KEYWORD' , atom )))) for atom in value ])
157159 elif operator == '&&' :
158160 # Overlaps on flags => Or
159161 values = ['(%s%s)' %
160162 (prefix , (STANDARD_FLAGS .get (atom .lower (), '%s %s' %
161- ('KEYWORD' , atom )))) for atom in value ]
163+ ('KEYWORD' , atom )))) for atom in value ]
162164 return make_or (values )
163165 else :
164166 value = '\\ \\ %s' % value
@@ -184,17 +186,18 @@ def extract_conditions(self, quals):
184186 if qual .list_any_or_all == ANY :
185187 values = [
186188 '(%s)' % self ._make_condition (qual .field_name ,
187- qual .operator [0 ], value )
189+ qual .operator [0 ], value )
188190 for value in qual .value ]
189191 conditions .append (make_or (values ))
190192 elif qual .list_any_or_all == ALL :
191193 conditions .extend ([
192194 self ._make_condition (qual .field_name , qual .operator [0 ],
193- value )
195+ value )
194196 for value in qual .value ])
195197 else :
196198 # its not a list, so everything is fine
197- conditions .append (self ._make_condition (qual .field_name ,
199+ conditions .append (self ._make_condition (
200+ qual .field_name ,
198201 qual .operator , qual .value ))
199202 conditions = [x for x in conditions if x not in (None , '()' )]
200203 return conditions
@@ -211,8 +214,8 @@ def execute(self, quals, columns):
211214 elif column == self .internaldate_column :
212215 col_to_imap [column ] = 'INTERNALDATE'
213216 else :
214- col_to_imap [column ] = 'BODY[HEADER.FIELDS (%s)]' % \
215- column .upper ()
217+ col_to_imap [column ] = ( 'BODY[HEADER.FIELDS (%s)]' %
218+ column .upper () )
216219 headers .append (column )
217220 try :
218221 conditions = self .extract_conditions (quals ) or ['ALL' ]
@@ -237,10 +240,10 @@ def execute(self, quals, columns):
237240 if charset :
238241 try :
239242 item [column ] = decoded_header .decode (
240- charset )
243+ charset )
241244 except LookupError :
242245 log_to_postgres ('Unknown encoding: %s' %
243- charset , WARNING )
246+ charset , WARNING )
244247 else :
245248 item [column ] = decoded_header
246249 yield item
0 commit comments