A python-tabulate wrapper for producing tables from generators
Project description
A python-tabulate wrapper for producing tables from generators.
Motivation
lazy_table is useful when (i) each row of your table is generated by a possibly expensive computation and (ii) you want to print rows to the screen as soon as they are available.
For example, the rows in the table below correspond to numerically solving an ordinary differential equation with progressively more steps. See examples/euler_vdp.py for the code to generate this table.
Here is the same example with a progress bar.
Installation and usage
Install lazy_table via pip:
$ pip install lazy_table
In your Python code, add
import lazy_table as lt
Now, generating your own lazy table is as simple as calling lt.stream
on a generator that yields one or more lists, where each list is a row of your table (see the example below).
Example
As a toy example, consider printing the first 10 Fibonacci numbers in a table.
Since this is a relatively cheap operation, we will pretend it is expensive by adding an artificial sleep(1)
call beteween Fibonacci numbers.
import time
import lazy_table as lt
def fib_table(n):
x0, x1 = 0, 1
yield [0, x0]
yield [1, x1]
for i in range(2, n + 1):
time.sleep(1) # Simulate work
x0, x1 = x1, x0 + x1
yield [i, x1]
lt.stream(fib_table(10), headers=['N', 'F_N'])
Your final table should look like this:
N F_N
--- -----
0 0
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34
10 55
You can also specify an "artist" that determines how the table is rendered.
For example, the ConsoleWithProgress
artist displays a progress bar alongside the table indicating the percentage of rows completed:
n = 10
artist = lt.artists.ConsoleWithProgress()
lt.stream(fib_table(n), headers=['N', 'F_N'], n_rows=n + 1, artist=artist)
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 lazy-table-0.2.1.tar.gz
.
File metadata
- Download URL: lazy-table-0.2.1.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc724a895ad55f3b65129a95f4bab58b5787a03d282470c4ddb02ff33386d433 |
|
MD5 | 5089a25fb552ef4abf3316f3b53f3a86 |
|
BLAKE2b-256 | 61c8444ab09de64d906cca5895caf1b553f4f0e48ed01d3175276153df81e923 |
File details
Details for the file lazy_table-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: lazy_table-0.2.1-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 342f19a49befc7fc31c393f6bd665938b75e0f73cef1560c7f228c860fc76a14 |
|
MD5 | 0271b4f4be9ffab32c80008e004efdc8 |
|
BLAKE2b-256 | b55db71cd562429fd16d698610bebe7e4e8d88ed8222d2e084bcb051e6c6b701 |