Display spinners (in CLI) through Python standard logging

dahlia dahlia Last update: Nov 09, 2021

logging-spinner: non-intrusive spinner for Python

Latest PyPI versionBuild Status

Demo session

This library helps to display loading spinners in CLI in non-intrusive manner.Applications/libraries don't have to depend on any third-party API, but onlyneed to log loading messages through Python's standard logging library:

logger = logging.getLogger('myapp.logger')logger.info('Loading data...', extra={'user_waiting': True})# some long taking process goes here...logger.info('Finished loading!', extra={'user_waiting': False})

At the outest code of the application, setup a SpinnerHandler:

from logging_spinner import SpinnerHandlerlogger = logging.getLogger('myapp')logger.setLevel(logging.INFO)logger.addHandler(SpinnerHandler())

SpinnerHandler is only aware of log records with user_waiting extrafield and displays them with a spinner.

See also sample.py code.

Author and license

Written by Hong Minhee and distributed under GPLv3 or later.

Changelog

Version 0.2.2

Released on June 22, 2017.

  • Fixed a ValueError raised when a log record with{'user_waiting': Flase} is made without any previous log recordswith {'user_waiting': True}.

Version 0.2.1

Released on May 21, 2017.

  • Fixed a bug that SpinerHandler had crashed when user_waiting logrecords show a spinner again after a previous spinner was hidden.

Version 0.2.0

Released on May 21, 2017.

  • logging_spinner.UserWaitingFilter was introduced to avoid duplicateprints of a log record with user_waiting extra field.

Version 0.1.0

Released on May 21, 2017. The initial release.

PRAGMA foreign_keys = off; BEGIN TRANSACTION; COMMIT TRANSACTION; PRAGMA foreign_keys = on;

Subscribe to our newsletter