Skip to main content

Log and progress bar manager for console, notebooks, web...

Project description

https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Proglog/master/logo.png

Proglog is a simple logging system for Python. It allows to build complex libraries while giving the user control on the management of logs and progress bars.

What problem does it solve ?

The simplest way to get progress bars in python is with tqdm

from tqdm import tqdm
for i in tqdm(range(10000)):
  ...
76%|████████████████████████████         | 7568/10000 [00:33<00:10, 229.00it/s]

While this is great for quick scripts, it works less well when you want to:

  • Log more than just progress bars, for instance pictures, text, or any python object.

  • Selectively mute some progress bars.

  • Let your project’s users customize the way the logs and progress bars are handled, for instance to send the progress over to some webclient instead of the console.

Proglog solves this by sending the logs to any backend, such as tqdm, or some web database. You can change where the data is sent just by using a different logger class, without modification of your core code.

It does so by having a single logger used everywhere in your project:

logger = TqdmProgressBarLogger()
for i in logger.iter_bar(main=range(10)):
    for j in logger.iter_bar(sub=range(10)):
        ... do suff here
    if i == 3:
        logger(message="We just passed i=3")
We just passed i=3
main:  50%|████████████▌            | 5/10 [00:04<00:04,  1.20it/s]
sub:  100%|████████████████████████| 10/10 [00:00<00:00, 10.26it/s]

Now the complete logging behaviour can be customized by modifying the logger definition, for instance TqdmProgressBarLogger(ignored_bars=['sub']) to mute the sub bar, or logger=RqWorkerBarLogger(job=some_rq_job) to update the status of a python-rq asynchronous job.

Installation

You can install Proglog through PIP

sudo pip install proglog

Alternatively, you can unzip the sources in a folder and type

sudo python setup.py install

To use the tqdm notebook-style progress bars you need to install and enable iwidgets:

sudo pip install ipywidgets
sudo jupyter nbextension enable --py --sys-prefix widgetsnbextension

Licence

Proglog is an open-source software originally written at the Edinburgh Genome Foundry by Zulko and released on Github under the MIT licence (copyright Edinburgh Genome Foundry). Everyone is welcome to contribute !

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

proglog-0.1.4.tar.gz (8.4 kB view details)

Uploaded Source

File details

Details for the file proglog-0.1.4.tar.gz.

File metadata

  • Download URL: proglog-0.1.4.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for proglog-0.1.4.tar.gz
Algorithm Hash digest
SHA256 142f3781914f9b2e65783e5e55462ac8780c924bb7dfd80aa3136182c46df59e
MD5 c99276df7d85c09d2842aee3d8a54f9c
BLAKE2b-256 fea4b869acc892a483bd0959a85f88d29382510098e74e250c54a7b3b858839f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page