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.

Changed in 2.3.0: an explicit None is a missing cell, just like a padding gap or table.missing. It displays missing_value (blank by default), not the text "None". Set table.missing_value = '?' to show gaps explicitly. Use the string "None" if you want that literal text. This applies to printing, compose(), pagination, streaming, and transposition in every style.

Missing cells do not turn numeric columns into text: numeric alignment and the decimal axis are preserved, and overflow='wrap' does not split floats because a column contains None. Raw rows and exports still represent gaps as None; rendering Table(rows=table.rows) reproduces the same cells (copy headers and display settings too if you changed them).

table = Table(rows=[[924.87], [None], [1.25]])
assert 'None' not in table.compose()
assert Table(rows=table.rows).compose() == table.compose()
table.missing_value = '?'  # changes the display, not stored None values

See missing-cell semantics for migration details.

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')

Since 2.2.0 every export writes the table as print(table) shows it: rows in sort_by order (with sort_reverse and callables), row_filter applied, hide_columns left out, and the text formats (to_csv, to_markdown, to_html, to_rst, to_asciidoc, to_latex) hold the formatted strings — float_format, int_format, leading_zeros, custom_format, strip_cells — without padding or colour. Empty cells are empty strings.

table.sort_by, table.sort_reverse = 'Uptime', True
table.row_filter = lambda row: row[1] < 99.9
table.float_format = '.1f'
table.to_markdown()                  # same rows, order and numbers as print(table)

to_records() keeps the stored Python values (numbers stay numbers, gaps are None) in display order; to_records(formatted=True) gives the printed strings. to_excel() writes numbers as numbers and turns simple format specs (',d', '.2f', '.1%', '{:,.2f}'…) into the cell's Excel number format.

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.

table.rows is a copy of the stored data, in insertion order and with None in empty cells (sorting, filtering and formats do not touch it), so editing it does not change the table. Use add_row and set_cell instead:

table.set_cell(0, 'Uptime', 98.2)    # row position, column position or header
table.set_cell(1, 2, table.missing)  # empty a cell

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

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.3.1
File Size Uploaded Provenance Actions
flexablelib-2.3.1.tar.gz 244.4 kB Without provenance Details for flexablelib-2.3.1.tar.gz

Built distributions (wheels)

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

Total release size: 4.6 MB

Release files / flexablelib-2.3.1.tar.gz

Download URL flexablelib-2.3.1.tar.gz
Size 244.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e660a234bbc9e08c89fa14e5198d6da1431966d982eac1f0e754004525100e57
BLAKE2b-256 checksum
How to use checksums
7fefc42da280087f7e41165dd6a4e05bfb5e1b28e39e5edbb63ef5b24cc53b2a
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.3.1-cp314-cp314-win_amd64.whl

Download URL flexablelib-2.3.1-cp314-cp314-win_amd64.whl
Size 152.9 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
d988ee5783f61603ce70feb6bad968f2efa40184cec24c2d713d58ad41e868a8
BLAKE2b-256 checksum
How to use checksums
23df086a85e65ea4fc08045cc879f270b8ee4f5eca8cf5234eba6151f81e3767
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.3.1-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.3.1-cp314-cp314-musllinux_1_2_x86_64.whl
Size 165.3 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
837cdb7d75d1722460b086b166468c22dad9b0a3a3056d36d3d924ab97de76e9
BLAKE2b-256 checksum
How to use checksums
27ffa6add2be0f50df8da98ee07b32c237a56d85be2b08daf28840c9e046b366
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.3.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.3.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 165.7 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
3675ece518c16cb2e957740b172c722126f7be0f452bfc1f3a38ee2dd13c86c7
BLAKE2b-256 checksum
How to use checksums
485c41adfca42b4c8ad1d29eb64d62403759d8c8b0b99f91fe0dcd20adaabaea
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.3.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL flexablelib-2.3.1-cp314-cp314-macosx_11_0_arm64.whl
Size 148.8 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3907a60486986c89ed0bdf705450b628dd24977d98f5763c80a6ed2229c9f86e
BLAKE2b-256 checksum
How to use checksums
bd61cd0ca494455d654ddcca30ab132dfe518d4d83112eef6cacaca5baec8c51
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.3.1-cp313-cp313-win_amd64.whl

Download URL flexablelib-2.3.1-cp313-cp313-win_amd64.whl
Size 151.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
b601f8b13b6fcde070bc3499bc775a41d10564bbd16955e42a6944f83de8c1cb
BLAKE2b-256 checksum
How to use checksums
330e37f21e500faf9fa45105bae423383a1f4f6ce8840e19034f0117dbfb4e7f
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.3.1-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl
Size 165.3 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
401d0fe4e3b24d610ad723ea0ea89a4c07572aab7d03e27abc75f3ef330839cb
BLAKE2b-256 checksum
How to use checksums
158be2720565445ebf7218c312a32070189e5a89d7894315c6adb75fd13cc3f1
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.3.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.3.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 165.7 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
511b0e69cf995dcfb01f99253150969736bc2d6bb590c6f958ef46592bf32df6
BLAKE2b-256 checksum
How to use checksums
fc810d0ef6c7b3b958ef1eccfb4b0c45e240f67a5ac9f4f318087d34fd855f64
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.3.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL flexablelib-2.3.1-cp313-cp313-macosx_11_0_arm64.whl
Size 148.8 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
18ba9eee367a7ac8403c192572999bc612a54abf0d96ad97c36dd223dd23798b
BLAKE2b-256 checksum
How to use checksums
82fc474eb246f5dcbdc9ea2e8bdc01cad78051c0ab372228a25b6ee549e85b5c
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.3.1-cp312-cp312-win_amd64.whl

Download URL flexablelib-2.3.1-cp312-cp312-win_amd64.whl
Size 151.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
cb3e91aa46ad0fe60611204748426c8d4be35f6c3f6367aca40944c823d09d54
BLAKE2b-256 checksum
How to use checksums
b7f026472ea4f2cc0c3aa52ff5eb102d987eef3626addc38a2769ec7428fc417
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.3.1-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Size 165.2 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
7f4cc1d8ff229422d799f59b933c1561aa14ad66cd25d5857b540ec1407a59cf
BLAKE2b-256 checksum
How to use checksums
da0a872bd891d7aab53f41eba782896f7a084eb4a02e22f2a035659ae05f6a31
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.3.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.3.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 165.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
05f5f3b66e2eb0678dbfe550783ccc26c70c5c6a791a1414796305b4ed1dab83
BLAKE2b-256 checksum
How to use checksums
9cd2f7298e30c80fb43f4ea68e69bdd840d210dfcf7cc83f029b40d45f9a4bb2
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.3.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL flexablelib-2.3.1-cp312-cp312-macosx_11_0_arm64.whl
Size 148.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8b314e52fb5f193784fe4fdb146d5ab7c2b0896ce29d1d3e216296a496402492
BLAKE2b-256 checksum
How to use checksums
3d20dc87d29c0726b14313ede97344f35768ec8932ebda91ceabad5f1dea4340
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.3.1-cp311-cp311-win_amd64.whl

Download URL flexablelib-2.3.1-cp311-cp311-win_amd64.whl
Size 151.5 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
0020a55dd00f45d4a4f8f7995e9d72c3bb8bba77af38fa2d5dc957aa943ebfa2
BLAKE2b-256 checksum
How to use checksums
0c9a4ca3fee3ff450e82f7758548e9e6c22e1cb87c8d487a9256fedd77eab955
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.3.1-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl
Size 165.2 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6a260d328dc8d2cb1fb524265efe27165a70e7734c7cf534960c8f63dc3b4d1b
BLAKE2b-256 checksum
How to use checksums
f5e28ac033efc0b7f6e6e47fb01551b0e5d5c26e8986af2086c8b19e4097a804
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.3.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.3.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 165.6 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
ae08a8cd3539a8a545a7c67e34f99efa3bb173c4ad3480e46aa4df77c51c6adc
BLAKE2b-256 checksum
How to use checksums
c96aaff78a15a9708839099408d7d0fd31db8cdc013e265baf58d93db74d0f61
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.3.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL flexablelib-2.3.1-cp311-cp311-macosx_11_0_arm64.whl
Size 148.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
72b6d9e4090e81f8d113bd29018ebcbd5b434003358a711eb9efb4dd02fdd00e
BLAKE2b-256 checksum
How to use checksums
95f47caaeae67631022fc6c6eb10a21e2ac62112e2ee26d39241456759b360e8
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.3.1-cp310-cp310-win_amd64.whl

Download URL flexablelib-2.3.1-cp310-cp310-win_amd64.whl
Size 151.5 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
00ed819ec5e455aa48d2a3446fab5099ea1307c70d61d08915499922feb1b953
BLAKE2b-256 checksum
How to use checksums
b1a8747aede6f90a8f6129e173937316902864de583a5ad268bb767d15744141
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.3.1-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl
Size 162.8 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
8114c7ba54431f662337c33a159801c1e22f8b48672d6b72d0659c0ea4d09294
BLAKE2b-256 checksum
How to use checksums
b3367cae1c14c84cdea7025b451d60609f3223b4bddc6262b554e1603cf47196
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.3.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.3.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 163.1 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
81501e70a310ca8aa0f766d540dd58dc2e7f923430e534edaf3bc11e7bf6c52d
BLAKE2b-256 checksum
How to use checksums
f5044723c9469d1cadc8bdd009de0d8d3c6f14324c4a39420af1030e67fa99b5
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.3.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL flexablelib-2.3.1-cp310-cp310-macosx_11_0_arm64.whl
Size 148.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bddd52be5d03003a04363d88e0c813236aabc1d8deb72f7ef4198b86510e0ac9
BLAKE2b-256 checksum
How to use checksums
024f392cf756ab0f8f5d53a3ecbd3f3e5e86e6893c0f70b79f41c30ac77a20b8
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.3.1-cp39-cp39-win_amd64.whl

Download URL flexablelib-2.3.1-cp39-cp39-win_amd64.whl
Size 151.5 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
fc8680328cc37947b408b00ad2faeac9fb4cb550ac7860306b8ab05de455178e
BLAKE2b-256 checksum
How to use checksums
b42d7e32414e063077def6b0cade76bdb2f347fdddc3d422e11a52538553d81a
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.3.1-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl
Size 162.7 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
46fce79311753276ed39cecc0bb1cbb84115f88c6323de3397dc9d7b91d2e173
BLAKE2b-256 checksum
How to use checksums
41f713d09fad063626f527f3cdd26327bc55939ae026f2c75a4023dc30f957b4
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.3.1-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.3.1-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 162.9 kB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
b69d4279defef65ed3ed45b3f9c16704959505e17c8f8cb2ecf4c3d1ad40788d
BLAKE2b-256 checksum
How to use checksums
f7f9f5a4fcd86945780f6d90add993a8e0ebb2f95b4e444dfc29b6ff4bc6e4b2
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.3.1-cp39-cp39-macosx_11_0_arm64.whl

Download URL flexablelib-2.3.1-cp39-cp39-macosx_11_0_arm64.whl
Size 148.8 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
faab7429702e7a19396ee5786cbbab2cbfa5b617cf160a7dc3bbf92666c01810
BLAKE2b-256 checksum
How to use checksums
bed9bbb1db0b88f29bfcf418284e0f2a5e9818c2c90644bdba4e95fc1e273ba9
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.3.1-cp38-cp38-win_amd64.whl

Download URL flexablelib-2.3.1-cp38-cp38-win_amd64.whl
Size 151.4 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
a9f9bdf327dd4e5fa67e0ca7e3ede923c1101030670d2471e252eed60fb1782f
BLAKE2b-256 checksum
How to use checksums
c386aa21743cca1d4bfc83107906ca67539209d62a8eca09eed6ba13866a289e
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.3.1-cp38-cp38-musllinux_1_2_x86_64.whl

Download URL flexablelib-2.3.1-cp38-cp38-musllinux_1_2_x86_64.whl
Size 162.4 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
8fdea796dd43c42beccee31e3eac41983f98f22200be6ab47b1ea83da8e2ff6d
BLAKE2b-256 checksum
How to use checksums
d0687bbc2b0c8f7630f9e6f0ee24b94e222a70f0a82a616e83746f4c14a91627
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.3.1-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL flexablelib-2.3.1-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 163.2 kB
Tags CPython 3.8 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
f4919c016d45ab7921b9774538f9203ed1ba3c9b5b65d311f1553154f21f701c
BLAKE2b-256 checksum
How to use checksums
bbd202b6e1a856a8219b2232603e7b5f0e70de31aec4b72de30700ef99a05822
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.3.1-cp38-cp38-macosx_11_0_arm64.whl

Download URL flexablelib-2.3.1-cp38-cp38-macosx_11_0_arm64.whl
Size 148.5 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
35d602975cefb74e12872d2670abf433abdd81311d328385289e40d83526481c
BLAKE2b-256 checksum
How to use checksums
d6c969fbe196f9be36ea7a85fd75c03d70dc0b4702a823c2cef2f6b6d7c805af
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.3.1

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