Skip to main content

flexablelib

Fast, dependency-free terminal tables for Python.
56 border styles · ANSI colours · cell merges · decimal alignment · width fitting · CSV / Markdown / HTML / Excel / LaTeX I/O

PyPI version Python versions Tests Downloads per month Development status License: MIT Typed


flexablelib turns rows and columns into readable tables for terminals, logs, reports and docs. It has no runtime dependencies, ships prebuilt wheels with an optional C speed-up, and is covered by 1,000+ tests on Python 3.8 – 3.14.

A rounded flexablelib table with a coloured header and a red value

Install

pip install flexablelib

Optional extras: pip install "flexablelib[pandas]", "flexablelib[excel]", "flexablelib[html]" or "flexablelib[all]". The base install stays dependency-free.

30-second quickstart

from flexablelib import Table

table = Table(
    rows=[
        ["api-gateway", "eu-west-1", 99.982, 1240],
        ["auth", "us-east-1", 99.9, 312],
        ["billing", "us-east-1", 98.75, 87],
    ],
    headers=["Service", "Region", "Uptime %", "RPS"],
)
table.style_name = "rounded"            # 56 styles, see style_examples.md
table.header_color = "bold cyan"
table.color_rule = lambda value, row, column: (
    "red" if column == "Uptime %" and value < 99.5 else None
)
print(table)
╭─────────────┬───────────┬──────────┬──────╮
│ Service     │ Region    │ Uptime % │  RPS │
├─────────────┼───────────┼──────────┼──────┤
│ api-gateway │ eu-west-1 │   99.982 │ 1240 │
│ auth        │ us-east-1 │   99.9   │  312 │
│ billing     │ us-east-1 │   98.75  │   87 │
╰─────────────┴───────────┴──────────┴──────╯

Numbers align on the decimal point, colours never break alignment, and the same table exports anywhere:

table.to_markdown()                # GitHub / docs
table.to_html("report.html")       # self-contained, sortable, offline
table.to_csv("out.csv"); table.to_latex(); table.to_rst(); table.to_asciidoc()
table.to_excel("report.xlsx")      # pip install "flexablelib[excel]"
Table.from_csv("sales.csv"); Table.from_markdown(md); Table.from_pandas(df)
Styles — 56 presets, from ascii to blocks
Several border styles
Themes — table.apply_theme("ocean")
Theme presets
Text on borders — table.border_text("Production", where="top")
Labels written into the table frame
Cell merges — table.merge_cells(0, 0, last_row=1)
Vertically merged cells
Zebra rows, footer, caption
Striped rows with a footer and caption
Decimal alignment — floats and scientific notation
Numbers aligned on the decimal point

More: all 56 styles · wrapping and ellipsis overflow · per-column / per-cell colour and alignment · vertical alignment · paginate() · stream() for live rows · transpose() · nested tables · fit_terminal() · hide_columns · sort_by · Roman / custom index.

How it compares

A factual feature matrix from our survey of 89 table libraries. A dash means the feature was not found in that library's documentation during the survey, not a claim that it is impossible there.

flexablelib tabulate prettytable rich
Runtime dependencies none none wcwidth markdown-it-py, pygments
Border style presets 56 many tablefmt — (hrules/vrules toggles) box styles
Decimal-point alignment ✓ ✓ — —
Row and column cell merges ✓ — — —
ANSI colours (header, rows, cells, borders) ✓ — — ✓
Zebra rows / caption / footer ✓ — — ✓
Text written on borders ✓ — — —
Wrap / truncate / ellipsis overflow ✓ — max width ✓
Sorting, pagination ✓ — ✓ —
Exports CSV, MD, HTML, Excel, RST, AsciiDoc, LaTeX HTML, LaTeX, MD, RST, org, jira, … HTML, CSV, JSON, LaTeX — (console)
Readers CSV, Markdown, HTML, dicts, pandas, Excel — CSV, DB cursor, HTML —
Nested tables ✓ — — ✓ (renderables)

rich is a full terminal-rendering toolkit (markup, live displays, progress bars) and tabulate covers many more markup dialects; pick flexablelib when you want a dependency-free, table-focused library with styling, merges and I/O in one place.

Production notes

  • Zero runtime dependencies. Readers/writers that need a third-party package (pandas, openpyxl, lxml) are opt-in extras and imported lazily.
  • Performance. Rendering 10,000 rows × 6 columns takes ~157 ms with the C extension (~172 ms pure Python), on par with prettytable, ~1.3× faster than tabulate and ~18× faster than rich's table. pandas to_string() is faster still (~85 ms). Full method and numbers: docs/BENCHMARKS.md.
  • Wheels. Prebuilt for CPython 3.8 – 3.14 on Linux (manylinux, musllinux), Windows x64 and macOS arm64. Anywhere else it builds from source or falls back to pure Python — installation never fails for want of a compiler. from flexablelib.fast import implementation; implementation() tells you which backend is live.
  • Colour safety. Escape sequences are emitted only to a TTY by default, never when NO_COLOR is set; FORCE_COLOR or table.use_colors = True overrides. Logs and files stay clean.
  • Unicode. Widths are measured in terminal columns, so CJK, emoji and coloured text stay aligned.
  • Windows. Box-drawing styles need a UTF-8 console (chcp 65001 or PYTHONUTF8=1; Windows Terminal is usually UTF-8 already). ASCII styles (ascii, grid, psql, markdown, …) work on any code page.
  • Typed. Ships py.typed (PEP 561).
  • Stability. flexablelib follows semantic versioning: within 2.x, public Table attributes and methods are not removed or renamed without a deprecation period; new features arrive in minor/patch releases and every release is listed in the CHANGELOG.
  • Support. Bugs and requests: issues. Security reports: SECURITY.md. Contributions: CONTRIBUTING.md.

Windows console encoding

chcp 65001
set PYTHONUTF8=1

(PowerShell: $env:PYTHONUTF8=1.)

Guide

Usage

Creating a table is simple.

Code Example

from flexablelib import Table

new_table = Table()
print(new_table)

Output

++
++
++

This is an empty table. It has no data so it only displays this strange thing.

A table that has columns but no rows — a query that came back empty — shows its headers rather than raising:

┌──────┬───────┐
│ name │ value │
╞══════╪═══════╡
└──────┴───────┘

It's possible to add data as columns or rows, or even alternating each one. Any untitled column will be named automatically.

Code Example

new_table.add_column('Name', ['Jade', 'John', 'Jane'])
new_table.add_column('Age', [20, 30, 40])
new_table.add_column('Results', [9.651, 3, 245.7])
print(new_table)

Output

+----------------------+
| Name   Age   Results |
+======+=====+=========+
| Jade |  20 |   9.651 |
| John |  30 |   3     |
| Jane |  40 | 245.7   |
+------+-----+---------+

Code Example

new_table = Table()
new_table.add_column('Name', ['Jade', 'John', 'Jane'])
new_table.add_column('Age', [20, 30, 40])
new_table.add_column('Test\nResults', [9.651, 3, 245.7])
new_table.add_row(['Piotr\nBaltimore', 27, 3.5])
new_table.add_row(['Sam', 21, 0.6519])
print(new_table)

Output

+----------------------------+
| Name        Age       Test |
|                    Results |
+===========+=====+==========+
| Jade      |  20 |   9.651  |
| John      |  30 |   3      |
| Jane      |  40 | 245.7    |
| Piotr     |  27 |   3.5    |
| Baltimore |     |          |
| Sam       |  21 |   0.6519 |
+-----------+-----+----------+

As it is visible, the table will format automatically new lines and data types, for now without trying to parse strings that could be converted to another type.

The Table class offers a variety of options that allow things like showing the index of each row, changing the style of the table, hiding the headers, etc.

See style examples here.

Code Example

new_table = Table()
new_table.add_column('Name', ['Jade', 'John'])
new_table.add_column('Age', [20, 30])
new_table.add_column('Test\nResults', [9.651, 3, 245.7])
new_table.add_row(['Piotr\nBaltimore', 27, 3.5])
new_table.add_row(['Sam', 21])
new_table.show_index = True
new_table.style_name = 'pretty_columns'
new_table.missing_value = '?'
print(new_table)

Output

╒═══╤═══════════╤═════╤═════════╕
│ i │ Name      │ Age │    Test │
│   │           │     │ Results │
╞═══╪═══════════╪═════╪═════════╡
│ 0 │ Jade      │  20 │   9.651 │
│ 1 │ John      │  30 │   3     │
│ 2 │ ?         │   ? │ 245.7   │
│ 3 │ Piotr     │  27 │   3.5   │
│   │ Baltimore │     │         │
│ 4 │ Sam       │  21 │       ? │
╘═══╧═══════════╧═════╧═════════╛

The missing value aligns as if it was of the same type of the other data in the column.

This shows how to get the row and column count. If the index is shown, this count remains unaffected by that column, although, you can get the internal count.

Code Example

new_table.show_index = False
new_table.show_headers = False
print(new_table)
print('row:', new_table.row_count)
print('columns:', new_table.column_count)
new_table.show_index = True
print(new_table)
print('internal_row_count:', new_table.internal_row_count)
print('internal_column_count:', new_table.internal_column_count)

Output

╒═══════════╤════╤═════════╕
│ Jade      │ 20 │   9.651 │
│ John      │ 30 │   3     │
│ ?         │  ? │ 245.7   │
│ Piotr     │ 27 │   3.5   │
│ Baltimore │    │         │
│ Sam       │ 21 │       ? │
╘═══════════╧════╧═════════╛
row: 5
columns: 3
╒═══╤═══════════╤════╤═════════╕
│ 0 │ Jade      │ 20 │   9.651 │
│ 1 │ John      │ 30 │   3     │
│ 2 │ ?         │  ? │ 245.7   │
│ 3 │ Piotr     │ 27 │   3.5   │
│   │ Baltimore │    │         │
│ 4 │ Sam       │ 21 │       ? │
╘═══╧═══════════╧════╧═════════╛
internal_row_count: 5
internal_column_count: 4

Colour

Colour the header, the borders, whole columns, whole rows, or individual cells. Specs accept names, attributes, 256-colour indexes and hex triples.

table.header_color = 'bold cyan'
table.border_color = 'grey'
table.column_colors = {'Service': 'bright_white'}
table.color_rule = lambda value, row, column: (
    'red' if column == 'Delta' and value < 0 else None
)

color_rule receives the original value, so numeric comparisons work directly.

Colour is emitted only to a terminal by default, and never when NO_COLOR is set. FORCE_COLOR or table.use_colors = True overrides that. Because compose() returns a string you may send anywhere, the default errs toward not embedding escape sequences in something bound for a file.

Widths are measured in terminal columns, not characters, so coloured cells and CJK or emoji data stay aligned.

Reading and writing

Table.from_csv('sales.csv')          # numeric columns parsed and aligned
Table.from_html(markup)              # standard library parser, no dependency
Table.from_dicts(records)
Table.from_pandas(dataframe)         # pip install flexablelib[pandas]
Table.from_excel('report.xlsx')      # pip install flexablelib[excel]

table.to_csv('out.csv')
table.to_markdown()
table.to_html('report.html', paginate=25)
table.to_excel('report.xlsx')

to_html writes one self-contained file — the stylesheet and the sorting, filtering and pagination script are inline — so it works offline and from a file:// URL.

Text formats deliver everything as strings, and a column of strings is left-aligned. parse_str_numbers converts numeric-looking text so it aligns as numbers; the readers turn it on for you:

table.parse_str_numbers = True

Values with leading zeros are left alone, so '007' stays a string.

Merging cells

Render a rectangular block as a single cell, across columns, down rows, or both. Coordinates are inclusive, zero-based, and ignore the index column.

table.merge_cells(0, 0, last_column=2, value='Quarter summary')
table.merge_cells(1, 0, last_row=3)                # keeps the top-left content
table.merge_cells(0, 0, 2, 2, value='Total', align='r')

A merge never widens the table -- columns are still sized by their unmerged content -- so text longer than its span is truncated.

Notes

  • A column named "i" does not collide with the index column (utils.IndexColumnTitle).
  • Exponential numbers align on the decimal / exponent axis with the rest of the float column.
  • Shrinking a float column drops decimals instead of chopping characters, so decimal alignment survives a terminal fit (#23).

Open work and the issue map: docs/ISSUES.md.

Project Layout

flexablelib/                 # GitHub repository
├── flexablelib/            the Python package (no runtime dependencies)
│   ├── __init__.py          public API: Table, TableComposition, SeparatorLine
│   ├── table.py             the Table class — state and render orchestration
│   ├── columns.py           type inference, alignment, column widths
│   ├── style_compositions.py   the 56 border styles, as data
│   ├── table_strings.py     separator lines and data rows
│   ├── cells.py             cell padding, justification, wrapping
│   ├── options.py           constants and defaults
│   └── utils.py             type predicates and small helpers
├── tests/                   pytest suite — see ARCHITECTURE.md#testing
├── docs/                    issue history and design notes
├── logos/                   brand assets — see logos/README.md
├── ARCHITECTURE.md          how it all fits together
├── style_examples.md        all 56 styles rendered
├── package.json             canonical version number (no npm deps)
└── setup.py                 reads the version from package.json

Run the tests from the repository root:

pip install -r requirements-dev.txt
python -m pytest

See ARCHITECTURE.md for the rendering pipeline, how styles are defined, and how to add one.

Metadata

Release files for flexablelib 2.0.20

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flexablelib 2.0.20
File Size Uploaded Provenance Actions
flexablelib-2.0.20.tar.gz 202.7 kB Without provenance Details for flexablelib-2.0.20.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for flexablelib 2.0.20
File Actions
flexablelib-2.0.20-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for flexablelib-2.0.20-cp314-cp314-win_amd64.whl
flexablelib-2.0.20-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details for flexablelib-2.0.20-cp314-cp314-musllinux_1_2_x86_64.whl
flexablelib-2.0.20-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for flexablelib-2.0.20-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.20-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for flexablelib-2.0.20-cp314-cp314-macosx_11_0_arm64.whl
flexablelib-2.0.20-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for flexablelib-2.0.20-cp313-cp313-win_amd64.whl
flexablelib-2.0.20-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for flexablelib-2.0.20-cp313-cp313-musllinux_1_2_x86_64.whl
flexablelib-2.0.20-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for flexablelib-2.0.20-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.20-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for flexablelib-2.0.20-cp313-cp313-macosx_11_0_arm64.whl
flexablelib-2.0.20-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for flexablelib-2.0.20-cp312-cp312-win_amd64.whl
flexablelib-2.0.20-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for flexablelib-2.0.20-cp312-cp312-musllinux_1_2_x86_64.whl
flexablelib-2.0.20-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for flexablelib-2.0.20-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.20-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for flexablelib-2.0.20-cp312-cp312-macosx_11_0_arm64.whl
flexablelib-2.0.20-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for flexablelib-2.0.20-cp311-cp311-win_amd64.whl
flexablelib-2.0.20-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details for flexablelib-2.0.20-cp311-cp311-musllinux_1_2_x86_64.whl
flexablelib-2.0.20-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for flexablelib-2.0.20-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.20-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for flexablelib-2.0.20-cp311-cp311-macosx_11_0_arm64.whl
flexablelib-2.0.20-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for flexablelib-2.0.20-cp310-cp310-win_amd64.whl
flexablelib-2.0.20-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details for flexablelib-2.0.20-cp310-cp310-musllinux_1_2_x86_64.whl
flexablelib-2.0.20-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details for flexablelib-2.0.20-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.20-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for flexablelib-2.0.20-cp310-cp310-macosx_11_0_arm64.whl
flexablelib-2.0.20-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details for flexablelib-2.0.20-cp39-cp39-win_amd64.whl
flexablelib-2.0.20-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details for flexablelib-2.0.20-cp39-cp39-musllinux_1_2_x86_64.whl
flexablelib-2.0.20-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details for flexablelib-2.0.20-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.20-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details for flexablelib-2.0.20-cp39-cp39-macosx_11_0_arm64.whl
flexablelib-2.0.20-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details for flexablelib-2.0.20-cp38-cp38-win_amd64.whl
flexablelib-2.0.20-cp38-cp38-musllinux_1_2_x86_64.whl CPython 3.8 CPython 3.8 Linux musl 1.2+ x86-64 Details for flexablelib-2.0.20-cp38-cp38-musllinux_1_2_x86_64.whl
flexablelib-2.0.20-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for flexablelib-2.0.20-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.20-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details for flexablelib-2.0.20-cp38-cp38-macosx_11_0_arm64.whl

Total release size: 4.3 MB

Release files / flexablelib-2.0.20.tar.gz

Download URL flexablelib-2.0.20.tar.gz
Size 202.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4e46186e8082ea18638db2917409cb92459f5da57f0ccd2dce69dc66cb4ab4e3
BLAKE2b-256 checksum
How to use checksums
abdb806521870a83a581ea7587b6edcc57b828c873354a673a898761d8b6ed24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp314-cp314-win_amd64.whl

Download URL flexablelib-2.0.20-cp314-cp314-win_amd64.whl
Size 140.8 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
b88f7a6c1e96c4920b1bb76b56eab672995e88e6680bbe65fa541c8f1ee53459
BLAKE2b-256 checksum
How to use checksums
7fb7f774f3b781a02d87e1c71871ca23cfd165a571e3977aafc46b4162432057
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.20-cp314-cp314-musllinux_1_2_x86_64.whl
Size 153.3 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ae865e92f352c0ac34f32fbb53ca088cda484c6e50c2bda3362856f4521cc27b
BLAKE2b-256 checksum
How to use checksums
0432e548b832db44a9ca8ce2aa543a0c20af43e5d4a4ed6618afd346dd715991
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.20-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 153.8 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
5db1ec72b7b30f3ebc87f0867d35f82d6e799ec3fe239476e959800c3df7e232
BLAKE2b-256 checksum
How to use checksums
1165a22c84c905511fa86abf88fc2a56f080b82cbf4798b9ea94b5c80d5d59d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp314-cp314-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.20-cp314-cp314-macosx_11_0_arm64.whl
Size 136.8 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ae9ab809fdac7778dfafa5a9ddf827afc232178606e98cf72c3dca19a26ac4d8
BLAKE2b-256 checksum
How to use checksums
8c53b65eba60c8d62a94db68a2d74171b4c51f8c340ce7202a0e7660988fee9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp313-cp313-win_amd64.whl

Download URL flexablelib-2.0.20-cp313-cp313-win_amd64.whl
Size 139.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
b22a3f1964a89e36435e6c2d53dfea0b92b4b55309fd29b6fc10b2c81c7051cb
BLAKE2b-256 checksum
How to use checksums
3cb1ab81e3d2bfb78ab1066793b1ec580ae0e6306ea74c97e5d209203bfc2d29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.20-cp313-cp313-musllinux_1_2_x86_64.whl
Size 153.4 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9b17f81675b397f87ca46615ed7d9390dbcbab8ebad4c71b1ebc416d7ee06605
BLAKE2b-256 checksum
How to use checksums
90e4b85fba778b84d8cbf57101fd8696584f07d430f5fb854c393458685fc8b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.20-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 153.8 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
e7efdc1355b1b89f69124d56b036065e35f8c64c99c2561f3e56173f9ed3bf35
BLAKE2b-256 checksum
How to use checksums
c1f63c1393335c20ae1baa75102fb5e9c47f0886fb05482b0adc7ec53500db14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp313-cp313-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.20-cp313-cp313-macosx_11_0_arm64.whl
Size 136.8 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d6073cb62f0268924ea0f48998936d6377713122de41ea082beb007126b1a20a
BLAKE2b-256 checksum
How to use checksums
0bf8931b8cb7268cf257f564f29f8e217211cb09092750ae3e33bac99849c5be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp312-cp312-win_amd64.whl

Download URL flexablelib-2.0.20-cp312-cp312-win_amd64.whl
Size 139.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
40c731f4a5de38e366ebffc6838b960525c37065dafbbc57277afa5f46b46c70
BLAKE2b-256 checksum
How to use checksums
7cdf46cfe95430e82d52a76b68219276d1c5f17817d2d15800908e4dc5e75d2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.20-cp312-cp312-musllinux_1_2_x86_64.whl
Size 153.3 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5537e6b57512f686bb23ed33d36105ad7513bf1be40e0a2e9d2613175c715c10
BLAKE2b-256 checksum
How to use checksums
fe5d3d5909094862697485d6d51fd8a78d72fd4687ca0425ffe818baa416bf05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.20-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 153.8 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
88d0e2e2ac2a85943268eb4f0827797bb6247a589ec6a6efcb19acb2d8bccbb5
BLAKE2b-256 checksum
How to use checksums
16913b239e10aad92b04a1346642d2158f5cf1494b9ccf84588920d8bff41cca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp312-cp312-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.20-cp312-cp312-macosx_11_0_arm64.whl
Size 136.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
59f33d8cd0e9f25ab2894fbb3ca336e387b039e917f6463debaa8c13ad7138ec
BLAKE2b-256 checksum
How to use checksums
29742e1cef27618aad6f61cdc7f741fffcd11ecf057d7bf6ff14e1d8e8ffa673
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp311-cp311-win_amd64.whl

Download URL flexablelib-2.0.20-cp311-cp311-win_amd64.whl
Size 139.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
623f7b27d293dd01731d03d82b3e484874ef387a95722b1d574cf2df7691303c
BLAKE2b-256 checksum
How to use checksums
21e3d78cd34fcf40b2a42833b3927ebc478551a83c70acadf0be605af0f6e580
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.20-cp311-cp311-musllinux_1_2_x86_64.whl
Size 153.3 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ff9ab8e04b028a4993983d58a4ebd0625ec974fdad40b999f06d32731d68ecd1
BLAKE2b-256 checksum
How to use checksums
8b3d35495de3c759d563cbe8c1a12e7e55b60f47ac0d9ecd369a9fe8518125bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.20-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 153.7 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
121849480a8484c522cbca7cb1e63a38c721e43f6de88875d542ac7618b9994e
BLAKE2b-256 checksum
How to use checksums
58f36ea2e360bed342046637079d832c84182657023e9cac5f7b53ee80cb2abb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp311-cp311-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.20-cp311-cp311-macosx_11_0_arm64.whl
Size 136.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
30b8e9dc6ba20f0aa7cef2e2def2297e0f4ca5c57012cc875e9e1fc09ad5746a
BLAKE2b-256 checksum
How to use checksums
410c83e913e689cc89f1f67c1e1389961a01573b8ee831d0d44ed31c6ae8be52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp310-cp310-win_amd64.whl

Download URL flexablelib-2.0.20-cp310-cp310-win_amd64.whl
Size 139.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
20f864160f5711334d40929a937573934d010d9d37621f014918fd291cdf3685
BLAKE2b-256 checksum
How to use checksums
3af4627a7f646b004dd942e5385082d4f4c6568bf1bcf45683b96a297c42e260
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.20-cp310-cp310-musllinux_1_2_x86_64.whl
Size 150.9 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c3b68e3414ea6257bb70a35c29e831d24702bb2b69d512f2f7fc0cb576fa0281
BLAKE2b-256 checksum
How to use checksums
6be3eb05230423b38379f1b62c5f2e4a5ba099dc4a87befd1886e327328a77fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.20-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 151.2 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
efb250785134b6ea19721477521f698764a845b8bc86ed24d5c658b5fc51aa3c
BLAKE2b-256 checksum
How to use checksums
c4d4e67ef9f96fa66d18c74978b6b2fb929c1c3313112cab5260f6b700f24f49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp310-cp310-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.20-cp310-cp310-macosx_11_0_arm64.whl
Size 136.9 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8d5696b3cb01b360a6d0d957f763e87bc7b1b9df4eb0cfcd73f66a44a32f6be9
BLAKE2b-256 checksum
How to use checksums
6073b59650af9b12b71f749fef67c32acd8429c55c9bc269e46cf2b87007180e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp39-cp39-win_amd64.whl

Download URL flexablelib-2.0.20-cp39-cp39-win_amd64.whl
Size 139.4 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
d2eaeb0015e42a2c6cfbbfb49130aac37a5f1e4c08c92b1a0e8f590deda77312
BLAKE2b-256 checksum
How to use checksums
3985c8f4831c3037d174daec164c78626e13f9a7d169f5a94b488aea86f676cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.20-cp39-cp39-musllinux_1_2_x86_64.whl
Size 150.7 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5782189672d587e44bea6c40d1f127b75c9ed6df273462420faff610782ef81f
BLAKE2b-256 checksum
How to use checksums
ea6c8dd5263b5b8342299f948e008eef0dd01fff99a235b1337e5f6685378f36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.20-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 151.0 kB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
7e5739e7428c6274221261b909abedf4ef7377109cf68789cd5b1da449a4c0ed
BLAKE2b-256 checksum
How to use checksums
a91d1bbb2e656aca01dfbd5ea471f58cc178256f9a9117a7c0184cc30e1007fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp39-cp39-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.20-cp39-cp39-macosx_11_0_arm64.whl
Size 136.9 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
23bb2e0cfcf04f4e212d8e25f3d57a4e236b6f114dbeff3952e758ff88da81ba
BLAKE2b-256 checksum
How to use checksums
c3f420065f73d8f557673d179e92947295b7caf84adbd9a55fb1e700055931c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp38-cp38-win_amd64.whl

Download URL flexablelib-2.0.20-cp38-cp38-win_amd64.whl
Size 139.3 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
ba69d4d3a02fc2d2da05f23ae40082558482b8c2dc76998d6f8d99e90bbd3258
BLAKE2b-256 checksum
How to use checksums
870013e956daac64f006be582d65ff858355eeb349ea63ddba714fba02478528
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp38-cp38-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.20-cp38-cp38-musllinux_1_2_x86_64.whl
Size 150.5 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e986cf0fed4c5e6900c1d04bcd74a552ae9d4c792725ec0bf60d12258b0b9334
BLAKE2b-256 checksum
How to use checksums
94b6340cedb4044dfbcd816d4b0ad89a5c8053a1c8207e4b4d94c644e5af7f93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.20-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 151.3 kB
Tags CPython 3.8 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
d8526dc05975836a93843b7ddca3373c44e74fffabfb9db4f132afc065f8cd0b
BLAKE2b-256 checksum
How to use checksums
48150fdcb4a425b76a2c0dd4fed192eb95ddef4e3a1d212adc01fc453b48913c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / flexablelib-2.0.20-cp38-cp38-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.20-cp38-cp38-macosx_11_0_arm64.whl
Size 136.6 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d99e5264e053bf59b7bfed0c5dbe681fe8e3a24acc75162a60f7cfeae0428774
BLAKE2b-256 checksum
How to use checksums
20677d71eedc304625df3f898d0dc65e7edcdd8543c40e0f10bd0f9a657197f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for flexablelib 2.0.20

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.0.20 This release

29 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page