Cython: Progress bar: added a cut option to choose whether to do line
breaks every tenth of the full bar, set to False by default for lighter printing
This commit is contained in:
@ -51,6 +51,7 @@ cdef class ProgressBar:
|
|||||||
cdef int lastlog
|
cdef int lastlog
|
||||||
cdef bint ontty
|
cdef bint ontty
|
||||||
cdef int fd
|
cdef int fd
|
||||||
|
cdef bint cut
|
||||||
|
|
||||||
cdef bytes _head
|
cdef bytes _head
|
||||||
cdef char *chead
|
cdef char *chead
|
||||||
|
@ -6,11 +6,14 @@ Created on 27 mars 2016
|
|||||||
@author: coissac
|
@author: coissac
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
from ..utils cimport str2bytes, bytes2str
|
from ..utils cimport str2bytes, bytes2str
|
||||||
from .config cimport getConfiguration
|
from .config cimport getConfiguration
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
cdef class ProgressBar:
|
cdef class ProgressBar:
|
||||||
|
|
||||||
cdef clock_t clock(self):
|
cdef clock_t clock(self):
|
||||||
cdef clock_t t
|
cdef clock_t t
|
||||||
cdef timeval tp
|
cdef timeval tp
|
||||||
@ -22,11 +25,14 @@ cdef class ProgressBar:
|
|||||||
|
|
||||||
return t
|
return t
|
||||||
|
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
off_t maxi,
|
off_t maxi,
|
||||||
dict config={},
|
dict config={},
|
||||||
str head="",
|
str head="",
|
||||||
double seconde=0.1):
|
double seconde=0.1,
|
||||||
|
cut=False):
|
||||||
|
|
||||||
self.starttime = self.clock()
|
self.starttime = self.clock()
|
||||||
self.lasttime = self.starttime
|
self.lasttime = self.starttime
|
||||||
self.tickcount = <clock_t> (seconde * CLOCKS_PER_SEC)
|
self.tickcount = <clock_t> (seconde * CLOCKS_PER_SEC)
|
||||||
@ -38,7 +44,6 @@ cdef class ProgressBar:
|
|||||||
if not config:
|
if not config:
|
||||||
config=getConfiguration()
|
config=getConfiguration()
|
||||||
|
|
||||||
|
|
||||||
self.ontty = sys.stderr.isatty()
|
self.ontty = sys.stderr.isatty()
|
||||||
|
|
||||||
if (maxi<=0):
|
if (maxi<=0):
|
||||||
@ -47,7 +52,7 @@ cdef class ProgressBar:
|
|||||||
self.maxi = maxi
|
self.maxi = maxi
|
||||||
self.head = head
|
self.head = head
|
||||||
self.chead = self._head
|
self.chead = self._head
|
||||||
|
self.cut = cut
|
||||||
|
|
||||||
self.logger=config[config["__root_config__"]]["logger"]
|
self.logger=config[config["__root_config__"]]["logger"]
|
||||||
self.wheel = '|/-\\'
|
self.wheel = '|/-\\'
|
||||||
@ -62,6 +67,7 @@ cdef class ProgressBar:
|
|||||||
'##########' \
|
'##########' \
|
||||||
'##########'
|
'##########'
|
||||||
|
|
||||||
|
|
||||||
def __call__(self, object pos):
|
def __call__(self, object pos):
|
||||||
cdef off_t ipos
|
cdef off_t ipos
|
||||||
cdef clock_t elapsed
|
cdef clock_t elapsed
|
||||||
@ -111,7 +117,7 @@ cdef class ProgressBar:
|
|||||||
self.arrow=(self.arrow+1) % 4
|
self.arrow=(self.arrow+1) % 4
|
||||||
|
|
||||||
if days:
|
if days:
|
||||||
<void>fprintf(stderr,b'\r%s %5.1f %% |%.*s%c%.*s] remain : %d days %02d:%02d:%02d',
|
<void>fprintf(stderr,b'\r%s %5.1f %% |%.*s%c%.*s] remain : %d days %02d:%02d:%02d\t',
|
||||||
self.chead,
|
self.chead,
|
||||||
percent*100,
|
percent*100,
|
||||||
fraction,self.diese,
|
fraction,self.diese,
|
||||||
@ -119,7 +125,7 @@ cdef class ProgressBar:
|
|||||||
50-fraction,self.spaces,
|
50-fraction,self.spaces,
|
||||||
days,hour,minu,sec)
|
days,hour,minu,sec)
|
||||||
else:
|
else:
|
||||||
<void>fprintf(stderr,b'\r%s %5.1f %% |%.*s%c%.*s] remain : %02d:%02d:%02d',
|
<void>fprintf(stderr,b'\r%s %5.1f %% |%.*s%c%.*s] remain : %02d:%02d:%02d\t',
|
||||||
self.chead,
|
self.chead,
|
||||||
percent*100.,
|
percent*100.,
|
||||||
fraction,self.diese,
|
fraction,self.diese,
|
||||||
@ -127,6 +133,7 @@ cdef class ProgressBar:
|
|||||||
50-fraction,self.spaces,
|
50-fraction,self.spaces,
|
||||||
hour,minu,sec)
|
hour,minu,sec)
|
||||||
|
|
||||||
|
if self.cut:
|
||||||
tenth = int(percent * 10)
|
tenth = int(percent * 10)
|
||||||
if tenth != self.lastlog:
|
if tenth != self.lastlog:
|
||||||
|
|
||||||
@ -141,11 +148,10 @@ cdef class ProgressBar:
|
|||||||
else:
|
else:
|
||||||
self.cycle+=1
|
self.cycle+=1
|
||||||
|
|
||||||
property head:
|
|
||||||
|
|
||||||
|
property head:
|
||||||
def __get__(self):
|
def __get__(self):
|
||||||
return self._head
|
return self._head
|
||||||
|
|
||||||
def __set__(self,str value):
|
def __set__(self,str value):
|
||||||
self._head=str2bytes(value)
|
self._head=str2bytes(value)
|
||||||
self.chead=self._head
|
self.chead=self._head
|
||||||
|
Reference in New Issue
Block a user