Skip to main content

Provides a convenient way to dynamically display multiple progress bars to the terminal.

Project description

pypbars

build Code Grade codecov vulnerabilities PyPI version python

The pypbars module provides a convenient way to dynamically display multiple progress bars to the terminal. The pypbars.ProgressBars class is a subclass of l2term.Lines that displays lists to the terminal, and uses progress1bar.ProgressBar to render the progress bar.

Installation

pip install pypbars

example1

Create ProgressBars using a lookup list containing unique values, these identifiers will be used to get the index of the appropriate ProgressBar to be updated. The convention is for the function to include logger.write calls containing the identifier and a message for when and how the respective progress bar should be updated. In this example the default regex dict is used but the caller can specify their own, so long as it contains regular expressions for how to detect when total, count and optional alias are set.

Code
import asyncio
import random
import uuid
from pypbars import ProgressBars

async def do_work(worker, logger=None):
    logger.write(f'{worker}->worker is {worker}')
    total = random.randint(10, 65)
    logger.write(f'{worker}->processing total of {total} items')
    for count in range(total):
        # mimic an IO-bound process
        await asyncio.sleep(random.choice([.1, .2, .3]))
        logger.write(f'{worker}->processed {count}')
    return total

async def run(workers):
    with ProgressBars(lookup=workers) as pbars:
        doers = (do_work(worker, logger=pbars) for worker in workers)
        return await asyncio.gather(*doers)

def main():
    workers = [str(uuid.uuid4()) for _ in range(12)]
    print(f'Total of {len(workers)} workers working concurrently')
    results = asyncio.run(run(workers))
    print(f'The {len(workers)} workers processed a total of {sum(results)} items')

if __name__ == '__main__':
    main()

example1

Development

Clone the repository and ensure the latest version of Docker is installed on your development server.

Build the Docker image:

docker image build \
-t \
pypbars:latest .

Run the Docker container:

docker container run \
--rm \
-it \
-v $PWD:/code \
pypbars:latest \
bash

Execute the build:

pyb -X

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

pypbars-0.1.1.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

pypbars-0.1.1-py3-none-any.whl (4.3 kB view hashes)

Uploaded Python 3

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