Esempio n. 1
0
 def __init__(self, browser, sample_composition_graph, template_graph):
     self.browser = browser
     self.sample_composition = sample_composition_graph
     self.template_graph = template_graph.copy()
     self.log = Loggable(self)
     self.gid = next(self.counter)
     self.solution = None
Esempio n. 2
0
def test_copy(capsys):
    """We expect copies to initially inherit the log level of their parents."""

    logger1 = Loggable("Parent")
    logger1.set_level("INFO")
    logger2 = logger1.copy("newname")
    assert logger2.name == "newname"
    # logger 1 output
    logger1.info("msg")
    log, _ = capsys.readouterr()
    assert "msg" in log

    # logger 2 output
    logger2.info("msg")
    log, _ = capsys.readouterr()
    assert "msg" in log

    logger1.set_level("ERROR")

    # logger 1 output
    logger1.info("msg")
    log, _ = capsys.readouterr()
    assert not log

    # logger 2 output
    logger2.info("msg")
    log, _ = capsys.readouterr()
    assert "msg" in log
Esempio n. 3
0
def test_spawn(capsys):
    """We expect spawned copies to inherit the log level of their parents."""

    logger1 = Loggable("Parent")
    logger1.set_level("INFO")
    logger2 = logger1.spawn("new name")

    # logger 1 output
    logger1.info("msg")
    log, _ = capsys.readouterr()
    assert "msg" in log

    # logger 2 output
    logger2.info("msg")
    log, _ = capsys.readouterr()
    assert "msg" in log

    logger1.set_level("ERROR")

    # logger 1 no output
    logger1.info("msg")
    log, _ = capsys.readouterr()
    assert not log

    # logger 2 no output
    logger2.info("msg")
    log, _ = capsys.readouterr()
    assert not log
Esempio n. 4
0
def test_pickle():

    logger1 = Loggable("Parent")
    s = pickle.dumps(logger1)
    logger2 = pickle.loads(s)

    assert logger1.name == "Parent"
Esempio n. 5
0
    def test_basic_log(self, capsys):
        logger = Loggable("loggable_test")
        logger.set_level("INFO")

        logger.track("INFO").info("log2")
        log, _ = capsys.readouterr()
        assert "INFO" in log
Esempio n. 6
0
    def test_update(self, capsys):
        logger = Loggable("loggable_test")
        logger.set_level("INFO")

        track = logger.track("INFO", total=100).enter()
        track.update(10, "10% there!")
        track.update(20, "20% there!")
        track.exit()
Esempio n. 7
0
 def test_log(self, level, capsys):
     logger = Loggable("test")
     msg = str(uuid4())
     logger.set_level(level)
     logger.log(msg, level)
     log, _ = capsys.readouterr()
     print(log)
     assert msg in log
Esempio n. 8
0
    def test_no_update(self, capsys):
        logger = Loggable("loggable_test")
        logger.set_level("CRITICAL")
        assert not logger.is_enabled("INFO")

        track = logger.track("INFO", total=100).enter()
        track.update(10, "10% there!")
        track.update(20, "20% there!")
        track.exit()
Esempio n. 9
0
    def test_not_enabled(self):
        logger = Loggable("loggable_test")
        logger.set_level("CRITICAL")

        track = logger.track("INFO")
        assert not track.is_enabled()

        track = logger.track("CRITICAL")
        assert track.is_enabled()
Esempio n. 10
0
 def __init__(self,
              cost: float,
              paths: list,
              graph: BrowserGraph,
              item=None):
     self.cost = cost
     self.graph = graph
     self.paths = paths
     self.item = item
     self.log = Loggable(self)
Esempio n. 11
0
 def test_spawn(self, capsys):
     log = Loggable("loggable_test")
     log.set_level("INFO")
     log2 = log.timeit(logging.INFO)
     log2.enter()
     log2.info("log2")
     log2.exit()
     msg, _ = capsys.readouterr()
     assert "started" in msg.lower()
     assert "log2" in msg
     assert "finished" in msg.lower()
Esempio n. 12
0
    def test_prefix(self, capsys):
        log = Loggable("loggable_test")
        log.set_level("INFO")

        timeit = log.timeit(logging.INFO, "prefix")
        timeit.enter()
        timeit.info("Some information")
        timeit.exit()
        log, _ = capsys.readouterr()
        print(log)
        assert "prefix" in log
Esempio n. 13
0
    def test_does_not_log(self, capsys):
        log = Loggable("loggable_test")
        log.set_level("ERROR")

        timeit = log.timeit(logging.INFO)
        timeit.enter()
        timeit.info("ok")
        time.sleep(0.1)
        timeit.exit()
        log, _ = capsys.readouterr()
        print(log)
        assert not log
Esempio n. 14
0
    def __setstate__(self, state):

        self._edge_counter = state["_edge_counter"]
        self._node_counter = state["_node_counter"]
        self.edges = state["edges"]
        self._plans = []
        self._plan_ids = state["plan_ids"]
        self.is_cached = state["is_cached"]
        self._weights = state["_weights"]
        self.updated_at = state["updated_at"]
        self.created_at = state["created_at"]
        # self.browser = state['browser']
        self.log = Loggable(self)
Esempio n. 15
0
    def test_timeit(self, capsys):
        log = Loggable("loggable_test")
        log.set_level("INFO")

        timeit = log.timeit(logging.INFO)
        timeit.enter()
        timeit.info("ok")
        time.sleep(0.1)
        timeit.exit()
        log, _ = capsys.readouterr()
        print(log)
        assert "started" in log.lower()
        assert "ok" in log
        assert "finished" in log.lower()
Esempio n. 16
0
    def test_does_log(self, level, level_as_str, capsys):
        logger = Loggable("test")

        fxn = getattr(logger, level.lower())

        level_str = level

        if not level_as_str:
            level = getattr(logging, level.upper())

        # check log
        logger.set_level(level)
        msg = str(uuid4())
        fxn(msg)
        log, _ = capsys.readouterr()

        print(log)
        assert msg in log
        assert level_str.upper() in log
Esempio n. 17
0
 def __init__(self, browser, plans=None, name=None):
     self.browser = browser
     self.log = Loggable(
         self, "AutoPlanner@{url}".format(url=self.browser.session.url)
     )
     if plans:
         self.plans = plans
         self.browser.update_cache(plans)
     self.weight_container = EdgeWeightContainer(
         self.browser, self._hash_afts, self._external_aft_hash, plans=plans
     )
     self._template_graph = None
     self.model_filters = {}
     if name is None:
         name = "unnamed_{}".format(id(self))
     self.name = name
     self._version = __version__
     self.created_at = str(arrow.now())
     self.updated_at = str(arrow.now())
Esempio n. 18
0
    def test_does_not_log(self, level, capsys):
        logger = Loggable("test")
        fxn = getattr(logger, level.lower())

        # does log
        logger.set_level(level)
        msg = str(uuid4())
        fxn(msg)
        log, _ = capsys.readouterr()
        # print(log)
        assert msg in log
        assert level.upper() in log

        # does not log
        logger.set_level(logging.CRITICAL + 1)
        msg = str(uuid4())
        fxn(msg)
        log, _ = capsys.readouterr()
        assert not log
        assert not _
Esempio n. 19
0
def test_pickle_span():

    logger1 = Loggable("Parent")
    logger1.set_level("INFO")
    logger2 = logger1.spawn("new name")

    assert logger1._children
    assert logger2._children == {}

    logger3 = pickle.loads(pickle.dumps(logger1))
    logger4 = pickle.loads(pickle.dumps(logger2))

    assert dict(logger3._children)
    assert logger3._children[logger2._id] is logger2
    assert logger4._children == {}

    for lvl in ["ERROR", "DEBUG", "INFO"]:
        logger1.set_level(lvl)
        assert logger1.level_name() == lvl
        assert logger2.level_name() == lvl
        assert logger3.level_name() == lvl
        assert logger4.level_name() == lvl
Esempio n. 20
0
    def __init__(self, browser, edge_hash, node_hash, plans, plan_ids=None):
        """EdgeCalculator initializer.

        :param browser: the Browser object
        :type browser: Browser
        :param edge_hash: The edge hashing function. Should take exactly 2 arguments.
        :type edge_hash: function
        :param node_hash: The node hashing function. Should take exactly 1 argument.
        :type node_hash: function
        :param plans: optional list of plans
        :type plans: list
        """
        self.browser = browser
        self.log = Loggable(
            self, "EdgeWeightContainer({})".format(self.browser.session)
        )
        # filter only those plans that have operations
        self._plans = []
        if plan_ids is not None:
            self._plan_ids = plan_ids
        else:
            self._plan_ids = []
        if plans is not None:
            self.plans = plans

        def new_edge_hash(pair):
            h = edge_hash(pair)
            return "{}_{}_{}".format(
                pair[0].field_type.parent_id, h, pair[1].field_type.parent_id
            )

        self.edges = []
        self._edge_counter = HashCounter(new_edge_hash)
        self._node_counter = HashCounter(node_hash)
        self._weights = {}
        self.created_at = str(arrow.now())
        self.updated_at = None
        self.is_cached = False
Esempio n. 21
0
 def logger(self):
     return Loggable(self)
Esempio n. 22
0
 def test_exception_is_raised_for_pbar(self):
     logger = Loggable("test loggable")
     with pytest.raises(ValueError) as e:
         for i in logger.tqdm(range(10), "ERROR"):
             if i == 5:
                 raise ValueError
Esempio n. 23
0
 def test_exception_is_raised_for_track(self):
     logger = Loggable("test loggable")
     with pytest.raises(ValueError) as e:
         with logger.track("ERROR", 100):
             raise ValueError
Esempio n. 24
0
"""DASi's logger."""
from loggable import Loggable

logger = Loggable("dasi")
Esempio n. 25
0
 def __init__(self):
     self.log = Loggable(self)
Esempio n. 26
0
 def test_basic_progress_bar(self):
     log = Loggable("test")
     for x in tqdm(range(10)):
         log.info(x)
         time.sleep(0.01)
     log.info("This is more information")
Esempio n. 27
0
 def test_leveled_progress_bar(self, level):
     log = Loggable("Test")
     for x in log.tqdm(range(10), level, desc="this is a description"):
         log.info(x)
     log.info("This is more information")
Esempio n. 28
0
    def test_timeit(self):
        log = Loggable("loggable_test")
        log.set_level("INFO")

        with log.timeit(logging.INFO, "TimeItTest"):
            log.info("ok")
Esempio n. 29
0
from loggable import Loggable

logger = Loggable("pyblast")
Esempio n. 30
0
 def test_track_iterable(self):
     logger = Loggable("loggable_test")
     logger.set_level("INFO")
     track = logger.track("INFO", desc="This is a progress bar")
     for x in track(range(10)):
         track.info(x)