A library for tracking, computing, and formatting time estimates. (Based on `tqdm`).
Project description
ETA Time
A library for tracking, computing, and formatting time estimates in Python. (Based on tqdm
.)
Why?
tqdm is probably the most popular option for Python programmers to show progress in their programs. However, I wasn't happy with the default formatting code options, and wanted something that was easier to read and understand for an average user.
In addition, I wanted to be able to access information like ETA in my code. While tqdm
sort of lets you do this, it's not well documented, and you would have to dig through the source code to get the values and formulas you want.
etatime
is my answer to this. It's a minimal wrapper around tqdm
that adds additional formatting codes and well-documented progress stats tracking.
Basic Usage
The main feature of this library is the EtaBar
class. This is a wrapper for the tqdm.tqdm
class that provides variables which track important ETA state information for use elsewhere in your code.
This uses another package I made called timefmt
to format the times into human-readable text.
For more information on the :=
(walrus) operator, see the documentation.
import time, random
import timefmt
from etatime import EtaBar
for item in (eta := EtaBar(range(9999999))): # Creates a progress bar which tracks stats
... # Do your processing here
print(f"Done processing {eta.stats.total_items} items in {timefmt.td.long(eta.stats.elapsed_timedelta)}!\n")
Here is an example of the sort of output this produces:
14%|█▍ | 1432400/9999999 | R: 0:00:02 | ETA: 5:22:13 PM
...
100%|██████████| 9999999/9999999 | R: ??? | ETA: ???
Done processing 9999999 items in 2 seconds!
You can get more verbose information by replacing the for loop with this:
from etatime import EtaBar
for item in (eta := EtaBar(range(9999999), bar_format="{l_bar}{bar}{r_barL}")):
... # Do your processing here
Here is an example of the long output:
35%|███▌ | 3545009/9999999 | R: 1 second | ETA: 5:26:11 PM MST
All keyword arguments other than bar_format
get passed directly to tqdm.tqdm
. bar_format
is pre-processed by etatime
in order to inject some new custom formatting codes:
startS
: The starting time in short digit format.startL
: The starting time written out in plain english.currentS
: The current (loop start time) time in short digit format.currentL
: The current (loop start time) time written out in plain english.elapsedS
: The elapsed time in short digit format.elapsedL
: The elapsed time written out in plain english.remainingS
: The remaining time in short digit format.remainingL
: The remaining time written out in plain english.etaS
: The ETA time in short digit format.etaL
: The ETA time written out in plain english.r_barS
=="| {n_fmt}/{total_fmt} | {remainingS} | {etaS}"
r_barL
=="| {n_fmt}/{total_fmt} | {remainingL} | {etaL}"
The following attributes are available in the stats
data class of the EtaBar
instance:
total_items
rate
initial
n
percent
start_time
(seconds)start_datetime
current_time
(seconds)current_datetime
elapsed_time
(seconds)elapsed_timedelta
remaining_time
(seconds)remaining_timedelta
eta_time
(seconds)eta_datetime
Full Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file etatime-3.5.4.tar.gz
.
File metadata
- Download URL: etatime-3.5.4.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d48ec84c7d6daba4c6cc11d9acac9604f709cad935d6910925229315850d288 |
|
MD5 | 131107b56bb0eff6ef5156abbd3dc19b |
|
BLAKE2b-256 | e1dc44275bfbc8c40da86b71948858e91d7c3dd6142b712b45113a36268c7bbb |
File details
Details for the file etatime-3.5.4-py3-none-any.whl
.
File metadata
- Download URL: etatime-3.5.4-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fe8ab862318f4ea31a9a105ed3e746078b070936ffaf5311aed7199bac8e9f3 |
|
MD5 | 8d893b41188ab38ba37609f21e084dc8 |
|
BLAKE2b-256 | 4f3ec2bfd79ea9b086ec54617fe765eb07680fef875b1347a3cbd870602c7053 |