from argparse import ArgumentParser, ArgumentError
try:
- from progress.bar import IncrementalBar
+ from progress.bar import FillingCirclesBar as KamakiProgressBar
+ # IncrementalBar
except ImportError:
# progress not installed - pls, pip install progress
pass
self.suffix = '%(percent)d%%'
super(ProgressBarArgument, self).__init__(help, parsed_name, default)
try:
- IncrementalBar
+ KamakiProgressBar
except NameError:
print('Warning: no progress bar functionality')
if self.value:
return None
try:
- self.bar = IncrementalBar()
+ self.bar = KamakiProgressBar()
except NameError:
self.value = None
return self.value
r.release()
# upload_* auxiliary methods
- def _put_block_async(self, data, hash):
+ def _put_block_async(self, data, hash, upload_gen=None):
event = SilentEvent(method=self._put_block, data=data, hash=hash)
event.start()
+ if upload_gen:
+ upload_gen.next()
return event
def _put_block(self, data, hash):
if upload_cb:
upload_gen = upload_cb(len(missing))
upload_gen.next()
+ else:
+ upload_gen = None
self._init_thread_limit()
offset, bytes = hmap[hash]
fileobj.seek(offset)
data = fileobj.read(bytes)
- r = self._put_block_async(data, hash)
+ r = self._put_block_async(data, hash, upload_gen)
flying.append(r)
unfinished = []
for i, thread in enumerate(flying):
if thread.isAlive() or thread.exception:
unfinished.append(thread)
- else:
- if upload_cb:
- upload_gen.next()
+ #else:
+ #if upload_cb:
+ # upload_gen.next()
flying = unfinished
for thread in flying:
thread.join()
+ #upload_gen.next()
failures = [r for r in flying if r.exception]
if len(failures):
status=505,
details=details)
- while upload_cb:
- try:
- upload_gen.next()
- except StopIteration:
- break
-
def upload_object(self, obj, f,
size=None,
hash_cb=None,
if missing is None:
return
+
try:
self._upload_missing_blocks(missing, hmap, f, upload_cb=upload_cb)
except KeyboardInterrupt: