Module pyboiler.internal.cli.progress

Classes

class Context (name=None, timer=True, etc=True)
Expand source code
class Context(_Progress):
    def __init__(self, name=None, timer=True, etc=True):
        self.timer = timer
        self.etc = etc

        self._cache = {}
        if name is not None:
            self._cache["name"] = name

    def __enter__(self, name=""):
        self._cache = {
            "name": self._cache.get("name", name),
            "percent": 0,
            "start": time.perf_counter(),
            "last": None,
            "dur": None,
            "est": None,
            "itr": 0,
            "message": ""
        }
        return self

    def __exit__(self, *args, **kwargs):
        self.show(1.0)
        print()
        self._cache = {}

    def update(self, percent, message=""):
        self._cache["percent"] = percent
        self._cache["message"] = message

    def show(self, percent=None, message=None):
        if percent is not None:
            self._cache["percent"] = percent
        if message is not None:
            self._cache["message"] = message
        self._cache["itr"] += 1

        if self.timer is True:
            cur = time.perf_counter()
            if self._cache["last"] is not None:
                if cur - self._cache["last"] < 0.2:
                    return
            self._cache["last"] = cur
            if self.etc is True:
                self._cache["dur"] = self._cache["last"] - self._cache["start"]

                perc_per_itr = self._cache["percent"] / self._cache["itr"]
                time_per_itr = self._cache["dur"] / self._cache["itr"]
                est_itr_tot = 1 / perc_per_itr
                self._cache["est"] = est_itr_tot * time_per_itr
        print(type(self)._fmt(self._cache["percent"], self._cache["message"], self._cache["dur"], self._cache["est"]), end="\r")

Ancestors

  • pyboiler.internal.cli.progress._Progress

Subclasses

Methods

def show(self, percent=None, message=None)
def update(self, percent, message='')
class ContextColored (name=None, timer=True, etc=True)
Expand source code
class ContextColored(_ProgressColored, Context):
    pass

Ancestors

  • pyboiler.internal.cli.progress._ProgressColored
  • Context
  • pyboiler.internal.cli.progress._Progress
class Simple
Expand source code
class Simple(_Progress):
    def bar(self, percent, message, rt=None, et=None):
        print(type(self)._fmt(percent, message, rt, et), end="\r")

Ancestors

  • pyboiler.internal.cli.progress._Progress

Methods

def bar(self, percent, message, rt=None, et=None)
class SimpleColored
Expand source code
class SimpleColored(_ProgressColored):
    def bar(self, percent, message, rt=None, et=None):
        print(type(self)._fmt(percent, message, rt, et), end="\r")

Ancestors

  • pyboiler.internal.cli.progress._ProgressColored
  • pyboiler.internal.cli.progress._Progress

Methods

def bar(self, percent, message, rt=None, et=None)