comparison roundup/support.py @ 3544:5cd1c83dea50

Features and fixes. Feature: - trackers may configure custom stop-words for the full-text indexer Fixed: - fixes in scripts/import_sf.py - fix some unicode bugs in roundup-admin import - Xapian indexer wasn't actually being used - fix indexing of message content on roundup-admin import
author Richard Jones <richard@users.sourceforge.net>
date Mon, 06 Feb 2006 21:00:47 +0000
parents a2ae11191968
children 1be293265e61
comparison
equal deleted inserted replaced
3543:0735c4587852 3544:5cd1c83dea50
2 places in Roundup code. 2 places in Roundup code.
3 """ 3 """
4 4
5 __docformat__ = 'restructuredtext' 5 __docformat__ = 'restructuredtext'
6 6
7 import os 7 import os, time, sys
8 8
9 class TruthDict: 9 class TruthDict:
10 '''Returns True for valid keys, False for others. 10 '''Returns True for valid keys, False for others.
11 ''' 11 '''
12 def __init__(self, keys): 12 def __init__(self, keys):
56 if not self.sorted : 56 if not self.sorted :
57 self.list.sort () 57 self.list.sort ()
58 self.sorted = True 58 self.sorted = True
59 return iter (self.list) 59 return iter (self.list)
60 60
61 class Progress:
62 '''Progress display for console applications.
63
64 See __main__ block at end of file for sample usage.
65 '''
66 def __init__(self, info, sequence):
67 self.info = info
68 self.sequence = iter(sequence)
69 self.total = len(sequence)
70 self.start = self.now = time.time()
71 self.num = 0
72 self.stepsize = self.total / 100 or 1
73 self.steptimes = []
74 self.display()
75
76 def __iter__(self): return self
77
78 def next(self):
79 self.num += 1
80
81 if self.num > self.total:
82 print self.info, 'done', ' '*(75-len(self.info)-6)
83 sys.stdout.flush()
84 return self.sequence.next()
85
86 if self.num % self.stepsize:
87 return self.sequence.next()
88
89 self.display()
90 return self.sequence.next()
91
92 def display(self):
93 # figure how long we've spent - guess how long to go
94 now = time.time()
95 steptime = now - self.now
96 self.steptimes.insert(0, steptime)
97 if len(self.steptimes) > 5:
98 self.steptimes.pop()
99 steptime = sum(self.steptimes) / len(self.steptimes)
100 self.now = now
101 eta = steptime * ((self.total - self.num)/self.stepsize)
102
103 # tell it like it is (or might be)
104 if now - self.start > 3:
105 M = eta / 60
106 H = M / 60
107 M = M % 60
108 S = eta % 60
109 if self.total:
110 s = '%s %2d%% (ETA %02d:%02d:%02d)'%(self.info,
111 self.num * 100. / self.total, H, M, S)
112 else:
113 s = '%s 0%% (ETA %02d:%02d:%02d)'%(self.info, H, M, S)
114 elif self.total:
115 s = '%s %2d%%'%(self.info, self.num * 100. / self.total)
116 else:
117 s = '%s 0%% (ETA %02d:%02d:%02d)'%(self.info, H, M, S)
118 sys.stdout.write(s + ' '*(75-len(s)) + '\r')
119 sys.stdout.flush()
120
61 # vim: set et sts=4 sw=4 : 121 # vim: set et sts=4 sw=4 :

Roundup Issue Tracker: http://roundup-tracker.org/