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.21

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.21
File Size Uploaded Provenance Actions
flexablelib-2.0.21.tar.gz 207.0 kB Without provenance Details for flexablelib-2.0.21.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for flexablelib 2.0.21
File Actions
flexablelib-2.0.21-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for flexablelib-2.0.21-cp314-cp314-win_amd64.whl
flexablelib-2.0.21-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.21-cp314-cp314-musllinux_1_2_x86_64.whl
flexablelib-2.0.21-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.5+ x86-64, Linux glibc 2.28+ x86-64 Details for flexablelib-2.0.21-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.21-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for flexablelib-2.0.21-cp314-cp314-macosx_11_0_arm64.whl
flexablelib-2.0.21-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for flexablelib-2.0.21-cp313-cp313-win_amd64.whl
flexablelib-2.0.21-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.21-cp313-cp313-musllinux_1_2_x86_64.whl
flexablelib-2.0.21-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.21-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.21-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for flexablelib-2.0.21-cp313-cp313-macosx_11_0_arm64.whl
flexablelib-2.0.21-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for flexablelib-2.0.21-cp312-cp312-win_amd64.whl
flexablelib-2.0.21-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.21-cp312-cp312-musllinux_1_2_x86_64.whl
flexablelib-2.0.21-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.21-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.21-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for flexablelib-2.0.21-cp312-cp312-macosx_11_0_arm64.whl
flexablelib-2.0.21-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for flexablelib-2.0.21-cp311-cp311-win_amd64.whl
flexablelib-2.0.21-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.21-cp311-cp311-musllinux_1_2_x86_64.whl
flexablelib-2.0.21-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.21-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.21-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for flexablelib-2.0.21-cp311-cp311-macosx_11_0_arm64.whl
flexablelib-2.0.21-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for flexablelib-2.0.21-cp310-cp310-win_amd64.whl
flexablelib-2.0.21-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.21-cp310-cp310-musllinux_1_2_x86_64.whl
flexablelib-2.0.21-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.21-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.21-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for flexablelib-2.0.21-cp310-cp310-macosx_11_0_arm64.whl
flexablelib-2.0.21-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details for flexablelib-2.0.21-cp39-cp39-win_amd64.whl
flexablelib-2.0.21-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.21-cp39-cp39-musllinux_1_2_x86_64.whl
flexablelib-2.0.21-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.21-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.21-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details for flexablelib-2.0.21-cp39-cp39-macosx_11_0_arm64.whl
flexablelib-2.0.21-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details for flexablelib-2.0.21-cp38-cp38-win_amd64.whl
flexablelib-2.0.21-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.21-cp38-cp38-musllinux_1_2_x86_64.whl
flexablelib-2.0.21-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.5+ x86-64, Linux glibc 2.28+ x86-64 Details for flexablelib-2.0.21-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
flexablelib-2.0.21-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details for flexablelib-2.0.21-cp38-cp38-macosx_11_0_arm64.whl

Total release size: 4.3 MB

Release files / flexablelib-2.0.21.tar.gz

Download URL flexablelib-2.0.21.tar.gz
Size 207.0 kB
Tags Source
SHA-256 checksum
How to use checksums
123beaca133126b410f0148b770f7f253039afb6844c1ee18b47f447d950dcf6
BLAKE2b-256 checksum
How to use checksums
054ca272fe9d644264ea1a4d6f181b70edb7c4cb8219aa0904f69c1588d9c370
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.21-cp314-cp314-win_amd64.whl

Download URL flexablelib-2.0.21-cp314-cp314-win_amd64.whl
Size 142.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
dae4e6fa3ebf4dafdffd3c7bd6e9221f5515f0d6a7345048ef55b8e2f96b4c30
BLAKE2b-256 checksum
How to use checksums
4caa83a2db391e7e69bb831bcb4872c7d9952523dd4ddc729d9afdd157663950
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.21-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.21-cp314-cp314-musllinux_1_2_x86_64.whl
Size 154.5 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a5bd9849e6f2575a88028b5ed4e2bed32f6b12fdbd96d65019bf3159a3b25e9d
BLAKE2b-256 checksum
How to use checksums
e93fd035e573aa115759ffd2cafe190bdad23ac3b4daffaf33b223ad8b68bb05
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.21-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.21-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 155.0 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
521aa5055c2c3c7361100da1a5f70e52e10de6adb0cb83c7ebcbc91c826ef092
BLAKE2b-256 checksum
How to use checksums
7487d134227155c792313977966d4197df3e6c7b33be12cb732934ef06b182da
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.21-cp314-cp314-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.21-cp314-cp314-macosx_11_0_arm64.whl
Size 138.0 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5fcaaf93a338e1e56506af9b5c86101f79c8946123ec6aa0b9fb843afb025c21
BLAKE2b-256 checksum
How to use checksums
4a0f81f5d55a9f48917187a19c5f5d30e768e0c7c5f879034ff2a65edf13caa4
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.21-cp313-cp313-win_amd64.whl

Download URL flexablelib-2.0.21-cp313-cp313-win_amd64.whl
Size 140.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
25bd6e9d71a715a6492d7284c0ae35daa83f37a67520b0dab91c34e0d9f492b6
BLAKE2b-256 checksum
How to use checksums
3ab7f30ebef09096d372130edae8111415f8b5b4fb6bdc74a0736661c534fad7
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.21-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.21-cp313-cp313-musllinux_1_2_x86_64.whl
Size 154.5 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e5a78c516d6ea82745ee32fe43ec5b5fbd75efec622bf55b3997fa627af7bd16
BLAKE2b-256 checksum
How to use checksums
bd8d2a327e7660f97c5f7ba468f811c48e81371f82f3ceed2859ac12b0e3a101
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.21-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.21-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 155.0 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
00468fee9294ca1d897be28faf41cd6f7bcae5ca1ea64092e1d4d52906617b1a
BLAKE2b-256 checksum
How to use checksums
bcc92c400a62a22c71e618ca5a7158c69d3d5ddc82c29026366db5a31992b0ea
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.21-cp313-cp313-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.21-cp313-cp313-macosx_11_0_arm64.whl
Size 138.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0435a4ba3c64ffc8a45cbf6c5507953fc3e4a61605a1b76ce5551209b5233160
BLAKE2b-256 checksum
How to use checksums
749a8ce46afc5cf97f4726712904aa9d1d157ce423abd61932716be61d9900e3
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.21-cp312-cp312-win_amd64.whl

Download URL flexablelib-2.0.21-cp312-cp312-win_amd64.whl
Size 140.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
e9e4e94e68b1429c1164e4d33c40e1d1daf65cfa6f8fc41b40133b5761746fa8
BLAKE2b-256 checksum
How to use checksums
d2b221daaf6f92ec389019e35f5b6964c9d82b4eba0b176d949d1db6ddb531ca
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.21-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.21-cp312-cp312-musllinux_1_2_x86_64.whl
Size 154.5 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
7e30ca3e2cd133f3a88eb84042d15e8bde77bba1a0f1b10d4156e8bd73c9b36f
BLAKE2b-256 checksum
How to use checksums
14d8c4a04cc8bec2ce1796853be4fdd644dbd116099c63aad293af754c911fad
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.21-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.21-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 155.0 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
4f365198cae3a146f5f18bec5a41f57685c5ba4187c35d6e111c03566fc9877f
BLAKE2b-256 checksum
How to use checksums
8b6e86725b4120789c785e07cf810afa4564a598a4cc7a2a9bfb76fdf836e0a2
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.21-cp312-cp312-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.21-cp312-cp312-macosx_11_0_arm64.whl
Size 138.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
43ff15d4a9b4a5b627d85e8072df6fb5b7bd50cc1cf31bd42ac4a6197438f371
BLAKE2b-256 checksum
How to use checksums
8a74722dd3f409f85c936048106bf8f5dee61b3fd9b7d45f4b1b2f01027203b0
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.21-cp311-cp311-win_amd64.whl

Download URL flexablelib-2.0.21-cp311-cp311-win_amd64.whl
Size 140.7 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e873dd308aa2630f53d0116c2a69e25b4a64db1c5206d02d62f7c1d3e9de11c7
BLAKE2b-256 checksum
How to use checksums
af226b78911b16c1e599f132a6e6cb8a71c3446b0e54d118e009f2d39cbba45b
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.21-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.21-cp311-cp311-musllinux_1_2_x86_64.whl
Size 154.5 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
4cb3744dc041b72f3b0d7adad5c2cf3128510beb4d0d33c44ebe6f9e7e64d748
BLAKE2b-256 checksum
How to use checksums
b209ef0322dafd0be0cd79d44f8cde179d789274beb0ad687256f74193cebf4b
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.21-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.21-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 154.9 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
52cc25f84aea633b67d92e15cc4216bf48fe1b117ece068705b7082390707d9d
BLAKE2b-256 checksum
How to use checksums
25a52427188d9994cc5a635f8c715bd4d75c9b42cf7279348250fb8d13d7ad47
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.21-cp311-cp311-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.21-cp311-cp311-macosx_11_0_arm64.whl
Size 138.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
219e42d2244aa0a2ca26bb37455afe84492587ec6495a4c4c8e5a4540e79a8e0
BLAKE2b-256 checksum
How to use checksums
b628752d87301e13b85d4e3fe490669bdb946bd11abf17f7d1cbb37281289209
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.21-cp310-cp310-win_amd64.whl

Download URL flexablelib-2.0.21-cp310-cp310-win_amd64.whl
Size 140.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
7e60f8adfa2b9fe6b80f390c97ef7e44934bb9a41e35892da4887ff63c82c7d8
BLAKE2b-256 checksum
How to use checksums
e61e2c3122a42023024bf6cb8ab7320ae67550922105f1c24f4a775b536250f6
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.21-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.21-cp310-cp310-musllinux_1_2_x86_64.whl
Size 152.1 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
0f579f0ead83990c8a64bb6324e47a5645296458ac1ca0e455f75742d7d297a8
BLAKE2b-256 checksum
How to use checksums
12d281e92ca2ed7a05224fe3348cb519774e409a95b4fe6a13a86a1b51ac114e
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.21-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.21-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 152.4 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
01e281831d628ddaf7e131a1196896d684a167d2931a5581a25217af7bc37e38
BLAKE2b-256 checksum
How to use checksums
124c5b0c0320a320fe520bbc8f90f7e81872c8f2a05038ec31e1b63f5a38e875
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.21-cp310-cp310-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.21-cp310-cp310-macosx_11_0_arm64.whl
Size 138.0 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3af95c6197af2b9fa48ead77852ba7eb8c3ce1f67f3d0509b03db7915a66c754
BLAKE2b-256 checksum
How to use checksums
d7580451547f0a7fce2fdfa676105d78fb0a6877a06a7edb4730481bf7929591
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.21-cp39-cp39-win_amd64.whl

Download URL flexablelib-2.0.21-cp39-cp39-win_amd64.whl
Size 140.7 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
cb8ea87c4b7a9ca069bed16f39922212f45ee06ac0a5e7f2e5d67fa9f851224a
BLAKE2b-256 checksum
How to use checksums
55c3a67ad3b1ce534283cccd5c3988e167fd350748638a1b4123e3b20f0bfc5b
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.21-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.21-cp39-cp39-musllinux_1_2_x86_64.whl
Size 151.9 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
92577cae983fdeb572945728eaf693ed7b11dbad17bd5a4dc787108b42563171
BLAKE2b-256 checksum
How to use checksums
144aec42cbec145281ec27f3b459b2d4b3e1af9bedba883729cc0b8807f2a260
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.21-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.21-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 152.2 kB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
2a8234264a14e65394d50d3cba56fefe04f2f95c2b27945cfd6359ebc3077647
BLAKE2b-256 checksum
How to use checksums
ad3499ad0c34aec742f89886602591f0800db9e1a9c4326c046b81de58c3d839
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.21-cp39-cp39-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.21-cp39-cp39-macosx_11_0_arm64.whl
Size 138.0 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5a73d4c88eef3f9d6cae276ad30102cd2d2f35140164d6e011182b3e7edbe3ba
BLAKE2b-256 checksum
How to use checksums
8453fcd2113d591177834ed527da6a84b95d1cf50bbbafa93a8be94284be2864
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.21-cp38-cp38-win_amd64.whl

Download URL flexablelib-2.0.21-cp38-cp38-win_amd64.whl
Size 140.6 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
746a8aaffc4b82f4b03109fd611fb475a2c431f992cae601907aed8f9e846868
BLAKE2b-256 checksum
How to use checksums
19f60debbd70c081301cd41b97f7e9a05e3bcc6e658cb4295776e0055a913145
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.21-cp38-cp38-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.0.21-cp38-cp38-musllinux_1_2_x86_64.whl
Size 151.7 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
09944bb7ad93b0bc6623c461ed73346a4a5ab5e339fe649ab6934cf3926afa92
BLAKE2b-256 checksum
How to use checksums
47da86b457bf271ac7f12971575fbfd12a94f5392612bbe38c8b738832625bc4
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.21-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.0.21-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 152.5 kB
Tags CPython 3.8 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
ad42f64f97db45440481c2a76ba524851aff4c45f7acd3f9697e0f1bec5f6116
BLAKE2b-256 checksum
How to use checksums
5285076ccc5785978537f221ffab21a088dc2dcc00ef8f4f7246abc92d485c21
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.21-cp38-cp38-macosx_11_0_arm64.whl

Download URL flexablelib-2.0.21-cp38-cp38-macosx_11_0_arm64.whl
Size 137.8 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fbc54cf0bafbf447164972f3f944ce2ce26ac5af877f30397451f91bc53d555a
BLAKE2b-256 checksum
How to use checksums
7480fbb2e832baff097c14c2c9236f148fa2809a6e158ea65c5e27a9491272cc
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.21

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.21 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