Source code for openbases.logger.spinner

# Copyright (c) 2018, Vanessa Sochat All rights reserved.
# See the LICENSE in the main repository at:
#    https://www.github.com/openbases/openbases-python

import os
import sys

import sys
import time
import threading
from random import choice

[docs]class Spinner: spinning = False delay = 0.1
[docs] @staticmethod def spinning_cursor(): while 1: for cursor in '|/-\\': yield cursor
[docs] @staticmethod def balloons_cursor(): while 1: for cursor in '. o O @ *': yield cursor
[docs] @staticmethod def changing_arrows(): while 1: for cursor in '<^>v': yield cursor
[docs] def select_generator(self, generator): if generator == None: generator = choice(['cursor', 'arrow', 'balloons']) return generator
def __init__(self, delay=None, generator=None): generator = self.select_generator(generator) if generator == 'cursor': self.spinner_generator = self.spinning_cursor() elif generator == 'arrow': self.spinner_generator = self.changing_arrows() elif generator == 'balloons': self.spinner_generator = self.balloons_cursor() if delay is None: delay = 0.2 else: self.spinner_generator = self.spinning_cursor() if delay and float(delay): self.delay = delay
[docs] def run(self): while self.spinning: sys.stdout.write(next(self.spinner_generator)) sys.stdout.flush() time.sleep(self.delay) sys.stdout.write('\b') sys.stdout.flush()
[docs] def start(self): self.spinning = True threading.Thread(target=self.run).start()
[docs] def stop(self): self.spinning = False time.sleep(self.delay)