https://github.com/sjmikler/progress-table
Display progress as a pretty table in the command line.
https://github.com/sjmikler/progress-table
progress-bar tabular-data terminal-based
Last synced: 3 months ago
JSON representation
Display progress as a pretty table in the command line.
- Host: GitHub
- URL: https://github.com/sjmikler/progress-table
- Owner: sjmikler
- License: mit
- Created: 2022-11-17T19:42:00.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-15T15:51:32.000Z (4 months ago)
- Last Synced: 2025-04-05T06:00:44.611Z (3 months ago)
- Topics: progress-bar, tabular-data, terminal-based
- Language: Python
- Homepage:
- Size: 23.3 MB
- Stars: 130
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Progress Table
[](https://pypi.org/project/progress-table)
[](https://github.com/sjmikler/progress-table/blob/main/LICENSE.txt)
[](https://codecov.io/gh/sjmikler/progress-table)Lightweight utility to display the progress of your process as a pretty table in the command line.
* Alternative to TQDM whenever you want to track metrics produced by your process
* Designed to monitor ML experiments, but works for any metrics-producing process
* Allows you to see at a glance what's going on with your process
* Increases readability and simplifies your command line logging### Change this:

### Into this:

## Examples
From `examples/` directory:
* Neural network training

* Progress of multi-threaded downloads

* Simulation and interactive display of Brownian motion

* Display of a game board

## Quick start code
```python
import random
import timefrom progress_table import ProgressTable
# Create table object:
table = ProgressTable(num_decimal_places=1)# You can (optionally) define the columns at the beginning
table.add_column("x", color="bold red")for step in range(10):
x = random.randint(0, 200)# You can add entries in a compact way
table["x"] = x# Or you can use the update method
table.update("x", value=x, weight=1.0)# Display the progress bar by wrapping an iterator or an integer
for _ in table(10): # -> Equivalent to `table(range(10))`
# Set and get values from the table
table["y"] = random.randint(0, 200)
table["x-y"] = table["x"] - table["y"]
table.update("average x-y", value=table["x-y"], weight=1.0, aggregate="mean")
time.sleep(0.1)# Go to the next row when you're ready
table.next_row()# Close the table when it's finished
table.close()```
> Go to [integrations](docs/integrations.md)
> page to see examples of integration with deep learning libraries.## Advanced usage
Go to [advanced usage](docs/advanced-usage.md) page for more information.
## Troubleshooting
### Exceesive output
Progress Table works correctly in most consoles, but there are some exceptions:
* Some cloud logging consoles (e.g. kubernetes) don't support `\r` properly. You can still use ProgressTable, but with `interactive=0` option. This mode will not display progress bars.
* Some consoles like 'PyCharm Python Console' or 'IDLE' don't support cursor movement. You can still use ProgressTable, but with `interactive=1` option. In this mode, you can display only a single progress bar.
> By default `interactive=2`. You can change the default 'interactive' with an argument when creating the table object or by setting 'PTABLE_INTERACTIVE' environment variable, e.g. `PTABLE_INTERACTIVE=1`.
### Other problems
If you encounter different messy outputs or other unexpected behavior: please create an issue!
## Installation
Install Progress Table easily with pip:
```
pip install progress-table
```## Links
* [See on GitHub](https://github.com/gahaalt/progress-table)
* [See on PyPI](https://pypi.org/project/progress-table)## Alternatives
* Progress bars: great for tracking progress, but they don't provide ways to display data in clear and compact way
* `tqdm`
* `rich.progress`
* `keras.utils.Progbar`* Libraries displaying data: great for presenting tabular data, but they lack the progress tracking aspect
* `rich.table`
* `tabulate`
* `texttable`