Skip to main content

Tafra: essence of a dataframe

Project description

Tafra: a minimalist dataframe

PyPI version Python versions Coverage Status Documentation

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.

Category Members
Tafra Tafra
Aggregations Union, GroupBy, Transform, IterateBy, InnerJoin, LeftJoin, CrossJoin
Aggregation Helpers union, union_inplace, group_by, transform, iterate_by, inner_join, left_join, cross_join
Chunking / Partitioning chunks, chunk_rows, partition, concat
Custom Aggregations percentile, geomean, harmean
Constructors as_tafra, from_dataframe, from_series, from_records
SQL Readers read_sql, read_sql_chunks
Destructors to_records, to_list, to_tuple, to_array, to_pandas
Properties rows, columns, data, dtypes, size, ndim, shape
Iter Methods iterrows, itertuples, itercols
Functional Methods row_map, tuple_map, col_map, pipe
Dict-like Methods keys, values, items, get, update, update_inplace, update_dtypes, update_dtypes_inplace
Data Exploration head, tail, sort, sample, describe, value_counts, drop_duplicates
Time Series shift
Other Helper Methods select, copy, rename, rename_inplace, coalesce, coalesce_inplace, _coalesce_dtypes, delete, delete_inplace
Printer Methods pprint, pformat, to_html
Indexing Methods _slice, _index, _ndindex

Getting Started

Install from conda-forge (includes pre-built C extension -- no compiler needed):

conda install tafra -c conda-forge

Or install from PyPI with pip:

pip install tafra

Note: conda install provides a pre-built binary with the C extension already compiled for your platform. pip install from PyPI will attempt to compile the C extension from source; if no C compiler is available, the package installs without it and falls back to pure Python + numpy.

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.9
  • numpy >=2.1
  • A C compiler (optional, for the _accel extension):
    • Windows: Visual Studio Build Tools (with Windows SDK) or MinGW-w64
    • Linux: gcc (usually pre-installed, or apt 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:

  1. Use a Developer Command Prompt (recommended): Open "Developer Command Prompt for VS" or "Developer PowerShell for VS" from the Start menu. This runs vcvarsall.bat automatically and sets all required paths.

  2. 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 tafra 2.2.0. See benchmarks for full benchmarks against pandas 2.3/3.0 and polars 1.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.02 ms
pd.DataFrame():  2.80 ms   # 140x slower
pl.DataFrame():  0.04 ms   # 2x slower

# Column access: 100k rows, per access
tf['x']:         0.13 µs
df['x']:         1.81 µs   # 14x slower (pandas 2.3)
plf['x']:        0.70 µs   # 5x slower

tafra uses vectorized numpy operations (np.bincount, ufunc.reduceat) and an optional C extension (single-pass aggregation, hash joins) for GroupBy and joins. With the C extension:

# GroupBy: 10k rows, 50 groups, sum + mean
Tafra+C: 0.15 ms
pandas:  0.73 ms   # 5x slower
polars:  0.60 ms   # 4x slower

# Transform: 10k rows, 50 groups
Tafra+C: 0.06 ms
pandas:  0.60 ms   # 10x slower
polars:  1.67 ms   # 28x slower

# Equi inner join: 1k x 1k
Tafra+C: 0.08 ms
pandas:  0.93 ms   # 12x slower
polars:  1.53 ms   # 19x slower
  • Import note If you assign directly to the Tafra.data or Tafra._data attributes, you must call Tafra._coalesce_dtypes afterwards in order to ensure the typing is consistent.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tafra-2.2.0.tar.gz (61.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tafra-2.2.0-cp313-cp313-win_amd64.whl (55.1 kB view details)

Uploaded CPython 3.13Windows x86-64

tafra-2.2.0-cp313-cp313-win32.whl (54.0 kB view details)

Uploaded CPython 3.13Windows x86

tafra-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (86.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tafra-2.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (85.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tafra-2.2.0-cp313-cp313-macosx_11_0_arm64.whl (51.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tafra-2.2.0-cp312-cp312-win_amd64.whl (55.1 kB view details)

Uploaded CPython 3.12Windows x86-64

tafra-2.2.0-cp312-cp312-win32.whl (54.1 kB view details)

Uploaded CPython 3.12Windows x86

tafra-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (86.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tafra-2.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (85.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tafra-2.2.0-cp312-cp312-macosx_11_0_arm64.whl (51.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tafra-2.2.0-cp311-cp311-win_amd64.whl (54.9 kB view details)

Uploaded CPython 3.11Windows x86-64

tafra-2.2.0-cp311-cp311-win32.whl (54.0 kB view details)

Uploaded CPython 3.11Windows x86

tafra-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (83.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tafra-2.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (82.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tafra-2.2.0-cp311-cp311-macosx_11_0_arm64.whl (51.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tafra-2.2.0-cp310-cp310-win_amd64.whl (54.9 kB view details)

Uploaded CPython 3.10Windows x86-64

tafra-2.2.0-cp310-cp310-win32.whl (53.9 kB view details)

Uploaded CPython 3.10Windows x86

tafra-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (82.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tafra-2.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (82.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tafra-2.2.0-cp310-cp310-macosx_11_0_arm64.whl (51.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file tafra-2.2.0.tar.gz.

File metadata

  • Download URL: tafra-2.2.0.tar.gz
  • Upload date:
  • Size: 61.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0.tar.gz
Algorithm Hash digest
SHA256 3f7efeab82a90801bfa48e9d1d4ef30b5be74ed8c1951e112e0a13e64d42f468
MD5 b359bd4857894541fa06739b9a29b89f
BLAKE2b-256 757419073a9d75cc64034a3cc1d99ea1655fa5fa1071f0ebb2193366aa75f6be

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0.tar.gz:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 55.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7b5064ae6886b89a1c45d05e2957d1861e6aa29de3144063e8e89f6604a52bc5
MD5 b05413eb2b68112b2a4a3f9c316e3ed4
BLAKE2b-256 804200544e9c8e884d2318faecdfbf5ca865a83b7b5be2db4353cb21f692994b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: tafra-2.2.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 37f67d8426cd3b2855ea6b683e73c3144f981225926bbb2ed64609e639d32009
MD5 b735208d1382a0abcbff359a8b4e94e6
BLAKE2b-256 170ab97ec1dba518e8910a6a9665bc5885a4c054d0b5f2cafee8d4e7a98fb0fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp313-cp313-win32.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73a215c6aff8f15383a59dd3091a994b8adc846aaa4ca4503799e0e43b2837c6
MD5 d51b4bd691550c5d2af332ba4eed5cab
BLAKE2b-256 8a9c324174cfef07313f61495e5523fbf534e7b25b387413803bd7f89651032b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4e66332c16f61725bca00930dc2f01e0272e5b3086a38dacc40f7d890339df2f
MD5 21ba20deecfda43d11547d045e815bf3
BLAKE2b-256 7667afc1a9bedb98d219fac33affd3a39f29dfafab4cab5478a1d1a74b1dce5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 968f30cd9d7f654523c2aef278b26ecb2a9fa3d90ac21dec3634373926caf912
MD5 fd9744fa410dcdb2723fbcd3c44ee885
BLAKE2b-256 b678fa33c9d0e5b5f01a561f99b9499ff65872f77f44761e51c7b97ce62a0634

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 55.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3111b1441ba66f7222d8b2cc00f500b5f05c5fd7128ec67a13679e91710e0315
MD5 2dc7ff1af21b8f98489d69ff38abd7d5
BLAKE2b-256 c02219b08ee8c89bfd2ac2af5d61298ac035838bbeba1dca253a275eef498c20

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: tafra-2.2.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 54.1 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 9cc674cb0581b3d53f328582d4d063c227148cd85f921154045e7cbd69e3c6b7
MD5 9ab27a803bff233fecb2b0bd032ce8d7
BLAKE2b-256 73e5b4826a866caa1b47be50d41b9f9c0b493770561bac91c55fd0d4348e719a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp312-cp312-win32.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9156a838cee84a6d45220775baa262d08971ae6b82fe4db2fd9bb9d829342d9
MD5 841cf9cd5ec1ed7748a2cc0a13044335
BLAKE2b-256 f72ae2bed909073a9f3f5383a47fd8d6ce264b848d56d081cc099707466799b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8000da83d589e215506eb62fd95279503e47f5e0b80229f8bd5e12de1c228acf
MD5 6f051b8d005e98815b36fd669c0406d9
BLAKE2b-256 905375291d6e304de5ef741168293098dd5f7694b2dfa25bb9c29ee82b562b88

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31b3753d1cc77fa41305d3299820045e5e919fb2e25da6ed4b17b8322a448bfc
MD5 daf305c4e71351b5f2e70f90f8b69f02
BLAKE2b-256 1155bd5637c7f7307a84c93b6e9e2b34e6526720f1c4cd6f72bf0df51d25e1b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0d769cd521ded739112e063f1a76db9930de91108f8f5d2aaf6b1e2a6fc284b1
MD5 16d29599f6d91a54886ffc0793a8a887
BLAKE2b-256 420d109cbc2ee6edc30c55b265d30610153d93581d7054b81fdb82166976e5a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: tafra-2.2.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 e041f0f412f9a7a17dc81480f3e9be81d38a6ebe92d77c0aac108bf0ef6e82a3
MD5 5554b3c11a80ce8f8130aa03c81a158d
BLAKE2b-256 7358d6a2fd3d919024d5c294aaac75e4774e0b5962733bc26d88d338d2023926

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp311-cp311-win32.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6928ebc4bb9ad2a3a04d3985c54aef041fcc9210d6b7e46dac606d75e40a471c
MD5 d68cfd6c610c8185e97a839c966e519b
BLAKE2b-256 41b8d3de814c79f21be846591701a1da7ca022388d4544c7aa072828ac7bf97d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7858e06d9da5050adf8c8469e63612205370ed1cf4a622212bc52f9f102afd88
MD5 8a1289a9a9c30c6fd0486c7a99692006
BLAKE2b-256 cfc187d54be93c1acb4c3944bd1efc1637fb22c60131239ea074c33fb29a25a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7f7701dc0cde5e9d5586db0b5af3c405d546bad158b1395fb3cdd1017155f25
MD5 052f7f9ded5d75789612e493e3e09c0b
BLAKE2b-256 589a335e861c426745bd93c82d6972a9d6cbd9348c62f274cfe645929f492b81

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 aa04a2929fdbf795d735bf941e887a3833608491f6242ab72d29e7479fe3d984
MD5 c0527f77c2a4d1c50eb1567411a710ca
BLAKE2b-256 fd995bffb1470fb6b086a115f2f21dfdb5034a92324a20a163f833d869257c46

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: tafra-2.2.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 53.9 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tafra-2.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 898f9bcb469a357c65ffba7edcdcb0ba74fead946606c5589998be0090d31750
MD5 1f5e203b186ec3cacd687611d6bbe17a
BLAKE2b-256 e7e8ce82877893930409436bf84e2a00200413f3addd1dca29ea832b0dc2035f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp310-cp310-win32.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c114d7ba1bf615d52e9c479ea6f351629a60471ef3eec66289b9a44afcc56bae
MD5 73127b86fb7a2478deb0609cd02769f5
BLAKE2b-256 3a0799ec8e754612abcb490c6e59a80293bf02582f0083f673677cd4aca9f438

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4e72458c845bc91a43749a55045b6785940e40032a697222a920fd830b3f67eb
MD5 9fded1fd09f7d97e0a3beaf4c57cb61b
BLAKE2b-256 abdefcba5df152bea94b7759d5fc668940a5116475a97a7de9e2286cf3611090

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tafra-2.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21f44567ac3281afbd7c596d64eb2209208b04ac56b2973b3f4eb42caba572e0
MD5 fcebdb3fe142cbc5391294f8364ea22d
BLAKE2b-256 67a71ddc37fff4735766c3f7bc60fa72e02e10ce1a6aed0f284fd5992b781ed4

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on petbox-dev/tafra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page