timer-cm icon indicating copy to clipboard operation
timer-cm copied to clipboard

Optional import stub

Open ringerc opened this issue 6 years ago • 2 comments

Hi, thanks for the convenient little library.

I wanted it to be optional so I wrote the following little import stub. Consider adding it to your README for the convenience of others.

Instead of:

from timer_cm import Timer

I stub out the API if the import fails with:

try:
    from timer_cm import Timer
except ImportError as ex:
    # You should pip3 install timer_cm
    # see https://github.com/mherrmann/timer-cm/blob/master/timer_cm.py
    # But we provide a dummy to reduce dependencies
    class Timer:
        def __init__(self, name, print_results=None):
            pass
        def __enter__(self):
            return self
        def __exit__(self, *_):
            pass
        def child(self, name):
            return self
        def print_results(self):
            pass

that way with Timer('foo'): etc all work as expected and just do nothing.

ringerc avatar Jun 07 '19 01:06 ringerc

Thanks! Why do you want it to be optional?

mherrmann avatar Jun 07 '19 05:06 mherrmann

@ringerc nice idea to share your solution back to this project. I think since this is a common pattern and totally dependent on the user's project, it's not necessary to update the readme.

can also do:

from contextlib import contextmanager
@contextmanager
def Timer(*args, **kwargs):
    yield None

micahjsmith avatar Jun 20 '21 22:06 micahjsmith