Tafra: a minimalist dataframe
The tafra began life as a thought experiment: how could we reduce the idea
of a dataframe (as expressed in libraries like pandas or languages
like R) to its useful essence, while carving away the cruft?
The original proof of concept
stopped at "group by".
This library expands on the proof of concept to produce a practically
useful tafra, which we hope you may find to be a helpful lightweight
substitute for certain uses of pandas.
A tafra is, more-or-less, a set of named columns or dimensions.
Each of these is a typed numpy array of consistent length, representing
the values for each column by rows.
The library provides lightweight syntax for manipulating rows and columns,
support for managing data types, iterators for rows and sub-frames,
pandas-like "transform" support and conversion from pandas Dataframes,
and SQL-style "group by" and join operations.
Getting Started
pip install tafra
Or from conda-forge:
conda install tafra -c conda-forge
Both provide pre-built wheels with the C extension compiled for your platform. No compiler needed.
Building from source
To build from source (including the optional C extension):
git clone https://github.com/petbox-dev/tafra.git
cd tafra
pip install -e .
Requirements:
- Python >=3.10
- numpy >=2.1
- A C compiler (optional, for the
_accelextension):- Windows: Visual Studio Build Tools (with Windows SDK) or MinGW-w64
- Linux:
gcc(usually pre-installed, orapt install build-essential) - macOS: Xcode Command Line Tools (
xcode-select --install)
If no C compiler is available, the package installs without the extension and falls back to pure Python + numpy at runtime. To verify the C extension is active:
>>> from tafra._accel import groupby_sum
>>> print("C extension active")
To build a distributable wheel:
pip install build
python -m build
Windows build notes
The C extension requires the MSVC compiler to find the Windows SDK headers.
If you get fatal error C1083: Cannot open include file: 'io.h', the
Windows SDK include/lib paths are not set. Two options:
-
Use a Developer Command Prompt (recommended): Open "Developer Command Prompt for VS" or "Developer PowerShell for VS" from the Start menu. This runs
vcvarsall.batautomatically and sets all required paths. -
Use MinGW-w64 instead of MSVC:
python setup.py build_ext --inplace --compiler=mingw32
MinGW-w64 can be installed via conda (
conda install m2w64-gcc -c conda-forge) or from winlibs.com.
If building with python -m build (which creates an isolated environment),
use --no-isolation to inherit your shell's environment variables, or run
from a Developer Command Prompt:
python -m build --no-isolation
A short example
>>> from tafra import Tafra
>>> t = Tafra({
... 'x': np.array([1, 2, 3, 4]),
... 'y': np.array(['one', 'two', 'one', 'two']),
... })
>>> t.pformat()
Tafra(data = {
'x': array([1, 2, 3, 4]),
'y': array(['one', 'two', 'one', 'two'])},
dtypes = {
'x': 'int', 'y': 'str'},
rows = 4)
>>> print('List:', '\n', t.to_list())
List:
[array([1, 2, 3, 4]), array(['one', 'two', 'one', 'two'], dtype=object)]
>>> print('Records:', '\n', tuple(t.to_records()))
Records:
((1, 'one'), (2, 'two'), (3, 'one'), (4, 'two'))
>>> gb = t.group_by(
... ['y'], {'x': sum}
... )
>>> print('Group By:', '\n', gb.pformat())
Group By:
Tafra(data = {
'x': array([4, 6]), 'y': array(['one', 'two'])},
dtypes = {
'x': 'int', 'y': 'str'},
rows = 2)
group_by vs partition
group_by reduces -- one row per group, applies aggregation functions:
>>> tf.group_by(['wellid'], {'total_oil': (np.sum, 'oil')})
# Returns: one row per wellid, with summed oil
partition splits -- returns all original rows, grouped into sub-Tafras
for independent processing (e.g., multiprocessing):
>>> from concurrent.futures import ProcessPoolExecutor
>>> def forecast_well(tf):
... """Run a forecast on one well's production data."""
... # tf contains all rows for a single well, sorted by date
... return compute_forecast(tf['date'], tf['oil'])
>>> parts = tf.partition(['wellid'], sort_by=['date'])
>>> with ProcessPoolExecutor(max_workers=4) as pool:
... results = list(pool.map(
... forecast_well, [sub for _, sub in parts]))
>>> combined = Tafra.concat(results)
With 8 workers and ~13 ms of work per group, partition achieves ~5x
speedup over serial execution. For light aggregations (sum, mean, std),
group_by is 10-100x faster -- use it instead. See
benchmarks for
detailed benchmarks.
chunks splits by row count (for data-parallel workloads where group
integrity doesn't matter):
>>> for chunk in tf.chunks(n=4, sort_by=['date']):
... process(chunk)
Flexibility
Have some code that works with pandas, or just a way of doing things
that you prefer? tafra is flexible:
>>> df = pd.DataFrame(np.c_[
... np.array([1, 2, 3, 4]),
... np.array(['one', 'two', 'one', 'two'])
... ], columns=['x', 'y'])
>>> t = Tafra.from_dataframe(df)
And going back is just as simple:
>>> df = pd.DataFrame(t.data)
Timings
Note: Benchmarks collected with
tafra2.2.0. See benchmarks for full benchmarks againstpandas2.3/3.0 andpolars1.39.
Lightweight means performant. By minimizing abstraction to access the
underlying numpy arrays, tafra provides dramatic speedups over
pandas and polars on construction and access:
# Construction: 100k rows, 5 columns
Tafra(): 0.01 ms
pd.DataFrame(): 4.22 ms # 422x slower
pl.DataFrame(): 0.03 ms # 3x slower
# Column access: 100k rows, per call
tf['x']: 0.09 µs
df['x']: 11.47 µs # 127x slower
plf['x']: 0.57 µs # 6x slower
tafra uses vectorized numpy operations (np.bincount,
ufunc.reduceat) and an optional C extension (single-pass aggregation,
hash-based composite key encoding, hash joins) for GroupBy and joins:
# GroupBy: 10k rows, 50 groups, sum + mean
Tafra+C: 0.15 ms
pandas: 0.71 ms # 5x slower
polars: 0.54 ms # 4x slower
# Transform: 1M rows, 1k groups
Tafra+C: 8.44 ms
pandas: 20.90 ms # 2.5x slower
polars: 9.62 ms # 1.1x slower
# Numba JIT: 1M rows
Tafra: 7.74 ms
pandas: 7.81 ms # same (numpy underneath)
polars: 7.87 ms # +2% (arrow→numpy conversion)
Dtype metadata
Each Tafra tracks column dtypes in _dtypes — a dict of user-declared
type labels (e.g. 'str', 'int64', 'float64'). This metadata is the
source of truth for dtype validation in joins, unions, and dtype updates.
Use update_dtypes_inplace to change a column's type:
>>> t.update_dtypes_inplace({'x': 'str'}) # converts to StringDType
>>> t.update_dtypes_inplace({'x': 'float64'}) # converts to float64
If you assign directly to Tafra.data or Tafra._data, you must call
Tafra._coalesce_dtypes() to resync the metadata.
Left join null handling
When a left join has unmatched rows, right-side columns are filled with native null values where possible:
- String columns →
StringDType(na_object=None)withNone - Float columns → original dtype with
NaN - Datetime/timedelta columns → original dtype with
NaT - Int/bool/bytes columns →
objectdtype withNone(a warning is emitted)
Metadata
Release files for tafra 2.2.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tafra-2.2.5.tar.gz | 76.9 kB | Details |
Built distributions (wheels)
Total release size: 1.6 MB
Release files / tafra-2.2.5.tar.gz
| Download URL | tafra-2.2.5.tar.gz |
|---|---|
| Size | 76.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
68d00f6fd70b3bb99297783565b67f765415586a1ec0c0ab6d87c1465c67586b
|
|
BLAKE2b-256 checksum How to use checksums |
017bbde47ae826fce16f26a3d7aa0875a2834ed669c5bcb1d7f4e16df7acdad8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp313-cp313-win_amd64.whl
| Download URL | tafra-2.2.5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 62.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
463ad2ede4f6c450b0dac0656560cece37eea74951e37809494bb63250b71046
|
|
BLAKE2b-256 checksum How to use checksums |
add288fc1a6b2e4ebae30128ff6e4c076e23e895de4cf503429aae3ae04acea4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp313-cp313-win32.whl
| Download URL | tafra-2.2.5-cp313-cp313-win32.whl |
|---|---|
| Size | 61.7 kB |
| Tags | CPython 3.13 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
663252380aa8456e8342616835e1cc2f6c077036738b8f0024a95adf49618a0d
|
|
BLAKE2b-256 checksum How to use checksums |
5bfdb9a99026466d7b668ddb073ee7923b5e4d9b19c767a72001f2bc7decd9e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | tafra-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 98.6 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a5cd65237fa224940e3f2e303d3d992d1bd2b12b4a316277a932c790a731dbee
|
|
BLAKE2b-256 checksum How to use checksums |
a087d7328622d9ca1cc205ab52ae90877d9b02374ce5bfd8fe62ad871ab65943
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | tafra-2.2.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 99.1 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
566914c994e175443a48ba82f82fafa2299ac456648c1205713b29ab1c2dd467
|
|
BLAKE2b-256 checksum How to use checksums |
284a109cd078d4a900aa8ad0168515b43d21ece321e54bc4d48eed60bd8d84c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | tafra-2.2.5-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 58.7 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
486977f4f91138865327f02a5b9bb72feb7ec41c934f6f3151c6f928af3970fb
|
|
BLAKE2b-256 checksum How to use checksums |
a3907ff05fe69b3d6a71137616fa4c9e968f6318cd1b5dfd00d3f6f742f19b67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp312-cp312-win_amd64.whl
| Download URL | tafra-2.2.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 62.4 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1224834a8d7ae4750b906f103447924319faa1832c7b45cf46941575944122e0
|
|
BLAKE2b-256 checksum How to use checksums |
a61b77146e6fc805fb013eebe19b9fa2286b808458dd0b472fcc348b0820d669
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp312-cp312-win32.whl
| Download URL | tafra-2.2.5-cp312-cp312-win32.whl |
|---|---|
| Size | 61.7 kB |
| Tags | CPython 3.12 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
44c108affa8806c9f099ee0a605b47f32512b17104c177314a134f43ec78e75b
|
|
BLAKE2b-256 checksum How to use checksums |
5c97bbab78238ba3df3085ef5f9b7135bb330756268207d3727c449483229e5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | tafra-2.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 98.7 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
d257947d42e7da47e1bf6d2bef6f3f97bfe67b8133d2d22cc86fce9235373410
|
|
BLAKE2b-256 checksum How to use checksums |
ffdbad04bbe22787368fc34ba64752b5fc51952a3cbbb37cf5bc1fdf4b05346e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | tafra-2.2.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 99.2 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
6848ac913e89b05f213a49d00f8bc3675627886ceed76345400c5c5dcb66336d
|
|
BLAKE2b-256 checksum How to use checksums |
14e171906c6bce893261b809409dab4746b21f678b54388591a184d95541b7ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | tafra-2.2.5-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 58.7 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
63cdf2cfe6cdd44e443340a20ed396940069579813962175d0400bfd88e70464
|
|
BLAKE2b-256 checksum How to use checksums |
6c9cab76e32a0cbb3e6834c146e8768fd34e0e295ab25da06fa2249b75fce6bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp311-cp311-win_amd64.whl
| Download URL | tafra-2.2.5-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 62.2 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9c3362857376acd9d50c585a037898ce48a3fb6c73ff4c159a64eeee931b7315
|
|
BLAKE2b-256 checksum How to use checksums |
8fd39778107da5e0d37100da87ac3b2497e471e28376d0497dae09ee4223680e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp311-cp311-win32.whl
| Download URL | tafra-2.2.5-cp311-cp311-win32.whl |
|---|---|
| Size | 61.5 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
90b4d9191fe8594b3db6d8f53b5bd11ccef35b55837bc87cd047e5797b7c7b82
|
|
BLAKE2b-256 checksum How to use checksums |
53ba4f61e3c0c42e245a83c2152055d2fefc9ebdb74ad5fe787c273f2a345adf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | tafra-2.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 95.6 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
91bdabb3afec1c5a7e4afa61788f8332a1289b470488be23a2f54daac575f2d2
|
|
BLAKE2b-256 checksum How to use checksums |
f50e4d3278ea1f8c13e07e1d09bdc418b4151e1f188b7c32081e3143d4bfb099
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | tafra-2.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 96.6 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
3dd6535c5d38083fc4dd96073b2325fdc0399e4bfcfeffe5ccc50371b325316e
|
|
BLAKE2b-256 checksum How to use checksums |
2b788ed1dba12c507104750b920075b09d8916fbc75859e55792d57dd171f5ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | tafra-2.2.5-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 58.7 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
af2a7633377a9b16998058627286657c8901af1de45cb59ee40a4d628d6657c8
|
|
BLAKE2b-256 checksum How to use checksums |
82f6601a7894ca373f670fb1dc1a96bf3d7394fe75c95fd340dc645e94e88b5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp310-cp310-win_amd64.whl
| Download URL | tafra-2.2.5-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 62.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
eba4aac55d551b2291935faf53b04dccfea13133d0dabf0debeb280955ed06d3
|
|
BLAKE2b-256 checksum How to use checksums |
3c9a26f24fb4c181c18a1739d77ffc3e4696d559f4366b5ac56709165af93c8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp310-cp310-win32.whl
| Download URL | tafra-2.2.5-cp310-cp310-win32.whl |
|---|---|
| Size | 61.5 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
a55091545570cdb4c9cec5bb134dcdbe49d041ebeaa827f04f001264acf93b11
|
|
BLAKE2b-256 checksum How to use checksums |
5abe94e833e80c76da0a5fde1282437209a7d7d529109b4ef0890c0cc7232bb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | tafra-2.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 94.9 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
61e41b6c8a39a4834ff68c115ddbcdb09edcf33e0492fd7b9cddd0b53fbe376a
|
|
BLAKE2b-256 checksum How to use checksums |
5f1f250a3c3d99bac0cdcdbf235ed01b91a8f80714fbe5eedcb9d59c4a6e2871
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | tafra-2.2.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 96.0 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
67eb36a85312eb75b02d0d157ae15a685e7c2894403c7b1ca84c897398f82ac3
|
|
BLAKE2b-256 checksum How to use checksums |
5fad65c10597bb8d6017b43456898d2d2464da7a27b534a1894e926f02dc71b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / tafra-2.2.5-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | tafra-2.2.5-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 58.7 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
af1d90e7cd1c90b46b248a35c1f85ba7784815ff7b127a14a87cfbf8ea3e3e97
|
|
BLAKE2b-256 checksum How to use checksums |
185609526da1cecd61310359f66c1b121155ba11cea875e6a2ec6b4e4ffeb91b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency log