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

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 _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.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 columnsStringDType(na_object=None) with None
  • Float columns → original dtype with NaN
  • Datetime/timedelta columns → original dtype with NaT
  • Int/bool/bytes columnsobject dtype with None (a warning is emitted)

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.2.tar.gz (68.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.2-cp313-cp313-win_amd64.whl (61.9 kB view details)

Uploaded CPython 3.13Windows x86-64

tafra-2.2.2-cp313-cp313-win32.whl (61.2 kB view details)

Uploaded CPython 3.13Windows x86

tafra-2.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (98.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tafra-2.2.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (98.6 kB view details)

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

tafra-2.2.2-cp313-cp313-macosx_11_0_arm64.whl (58.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tafra-2.2.2-cp312-cp312-win_amd64.whl (61.9 kB view details)

Uploaded CPython 3.12Windows x86-64

tafra-2.2.2-cp312-cp312-win32.whl (61.2 kB view details)

Uploaded CPython 3.12Windows x86

tafra-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (98.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tafra-2.2.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (98.7 kB view details)

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

tafra-2.2.2-cp312-cp312-macosx_11_0_arm64.whl (58.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tafra-2.2.2-cp311-cp311-win_amd64.whl (61.7 kB view details)

Uploaded CPython 3.11Windows x86-64

tafra-2.2.2-cp311-cp311-win32.whl (61.0 kB view details)

Uploaded CPython 3.11Windows x86

tafra-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (95.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tafra-2.2.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.1 kB view details)

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

tafra-2.2.2-cp311-cp311-macosx_11_0_arm64.whl (58.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tafra-2.2.2-cp310-cp310-win_amd64.whl (61.7 kB view details)

Uploaded CPython 3.10Windows x86-64

tafra-2.2.2-cp310-cp310-win32.whl (61.0 kB view details)

Uploaded CPython 3.10Windows x86

tafra-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (94.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tafra-2.2.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (95.4 kB view details)

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

tafra-2.2.2-cp310-cp310-macosx_11_0_arm64.whl (58.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tafra-2.2.2.tar.gz
  • Upload date:
  • Size: 68.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.2.tar.gz
Algorithm Hash digest
SHA256 c1644ae0e252099a178a56f2de0c55df74c4d4c7e9b919802cef31681bfb6ad2
MD5 2ed17b90d808d0d74cb39bf22eaf7ae4
BLAKE2b-256 f1251fb7d542945bbe3ba756ccbd0bf6f9da8b33250e5100e7999c5c9ea56168

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2.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.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 61.9 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 71ffdd611a72c1a3c75274fbeed785993b00ec7ec369d016e30ff9f07f1318b3
MD5 eade28d6d60c0eb2cfad5bd1f3df9abb
BLAKE2b-256 7ca8a448940ae8a82df38a33357d43cd4d38066b8e83c709f923bdef34ef4890

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp313-cp313-win32.whl.

File metadata

  • Download URL: tafra-2.2.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 61.2 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.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 7d84cf97349f7a532e13bc7b0b0f1166cf6112bfa9235a4a30920d04acb25c3c
MD5 4050bfb8b4ab01ec22f59c63010a8afd
BLAKE2b-256 eaa8cadf2e1d81326c6faadc6c5b682aa523bb8e1e7c2c6901337bf8a859aae1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a5938182612d4a30062f5921329cc69c8b83db26f2d49a148e0efa1c8f58e3e8
MD5 925d04b8cb99ad6072e0a52d09da518a
BLAKE2b-256 6a6006714cc4bef30273a530f522afc00754056c3d488650cd9b0abf95e39c74

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 12ebf01b5109dad5ae8505b76ad68bd4f498388cd7c3089956ec4cc43ddd7cbd
MD5 94be30daabf63cce6e02c206df0e5638
BLAKE2b-256 56956df52f0cc3ca75fd3dae1db59a554b099798d8197f6a97322d926360742e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec35e943cc2c94b641f45f2e9a612db09be0989d108ec0db31e09bbe92ed43c0
MD5 56529b57821102cf0f7dde1af7e68b97
BLAKE2b-256 7d91be4cbc9c364a66f47c16a9915964fbeee102f1fc8391eb746a742b609861

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 61.9 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ab389f8a5102224a29425fb8980193b63c57fd05c6cff754b1fb712552943cc3
MD5 c0b797dcb5ed640289f7b1c3a9b37574
BLAKE2b-256 da55de1627a5aec9703fcd7fcf773ecceae3ec1571c7a38ccfdd664c945a0b88

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp312-cp312-win32.whl.

File metadata

  • Download URL: tafra-2.2.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 61.2 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.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 1d43f4724bcfd07ea491b49aab5476b26269db5d8d24673ce7e32036e1e576b1
MD5 a0edca557c9640e7b21ed39672bc634b
BLAKE2b-256 ab56e62e4abff35fc27dd1683e5b7aec46ad710162e8705c3b8563ee8e479a51

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d03e0ca6f1a6350aaaedff28baca9e4f5d3738f91bafc474f32ec37bf893e10
MD5 3a3bb34461f109e2a4add6e758a396b4
BLAKE2b-256 21b658fb7fd1bc4d90d4e638574262677c7451eb8d9b0ce58ed2c1789619c272

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b1b534a81f0d0ae7cbbcfc9613897204cff27c5f683e0b48a9fe93e01e799a6e
MD5 6ed7aced642c9a73a2e3e21657b1afcc
BLAKE2b-256 27adf50d6b120693583ff48a7de84b988fd61dcdfb65dc60dcdf40fc4ce46011

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e42b8efce67b0fe34f97466a0b9d627d34888546ba163b9e5e7813fb6cc52a7c
MD5 ae01f028d3f37bab5ad1b3f65db54d28
BLAKE2b-256 f4e86cdd6f0811b0c7de09bfbf222313bb998a1e1c6400fcd018ddb3b0d0f1e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 61.7 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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ff9de76e15c4ed5cebc4d36602efe99cce178671772ac079665f5cf5ba71b968
MD5 810ec4c7a9fa5fae1d91deed7d428c31
BLAKE2b-256 e02f2d292db2d7a51ac818dfeaf86bf0a6a75615268e55795434710e7beab9e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp311-cp311-win32.whl.

File metadata

  • Download URL: tafra-2.2.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 61.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.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 1263d07c93c35406e06a8f369a6bfe1cfb70744c7eadecf9e57272ef46ba0669
MD5 b648db4eb40dc5d5611c2f138fa1af3b
BLAKE2b-256 f964d7f9a75052b12aebebb1ed7e66b7b501661816432a5b8aab26a223bf1214

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 368b28ec971d736d4f5c1babc13a87b4bb3952068fa021b26b83359e740b9f4c
MD5 ccfbf5eb10998aec8190a224ee414d55
BLAKE2b-256 99469663104b7866bbec4990195ed3a53fa10bf27237ed1c64980d1d57ddbdce

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 06cedc27b1aabf181e1472162584c61fd9218f003582f9ec818f7d798cfbba19
MD5 f564b4d1691183dfe1ca9c9cca0ab45c
BLAKE2b-256 de9a809ea6fe4fee50a39eb349f916437a3d0e9b814f498c83950838912448bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13576aebb9e8ea50b05738e6751211659340346f0cc16876072cdb47818141e5
MD5 6844de20da8d2b85ce53f9ad1bf4be54
BLAKE2b-256 738d69e340edfa1d4c41a3f0cafa3fe6b9e00495f9aed78c562e25dad2fca3cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tafra-2.2.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 61.7 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 621b95d68c34f7195ea587a470db13ed3adb0fa215c9daa3ea0bf5bd70b38da2
MD5 3dc46ef08928668b5f3ed524c1a0c60e
BLAKE2b-256 910b94cd88025dab3af9499324757c92ba8363818fa705402ba600739613ccc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp310-cp310-win32.whl.

File metadata

  • Download URL: tafra-2.2.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 61.0 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.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 e2c840cc4b55f63458dd7838b9127e2725829f9f0e5047f72626d447a4e32334
MD5 752b8d2196b3950939259f40da18237e
BLAKE2b-256 0a4ff6fe189c81f8a2eab451fc44d01f81f16671858f24ccf09810d6f79579fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f374f1bca5463834c5245af2f9205f12ee8add8b1c9cfb69acc1f6a5cb0935e
MD5 396c13f265b74ff3bc17ce6258d882e3
BLAKE2b-256 703dcbf1019386c1a4d5590bf96d6f4a4e5cbbc5956a0b6a9aacfde6e7c10728

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 255482680d2a17a935889ab4da16e7495a976a70d50b6f2ac92e7f143cb4fef0
MD5 5e5af2484c78996a4740976f5bf393b2
BLAKE2b-256 94e815db88822475617d8d82c01fe897dd94c38601b918e777825945c2fe0ba7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tafra-2.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb63e9c1abcf628626283f667617cc544129c37397df570cc00b81cb37d7c919
MD5 354ad92ccda9e05493dca75c35ffa952
BLAKE2b-256 ec5b56eaa9b9135f4ac5baa0b0a192a5eb06bd714be63baf49cbb5443f055264

See more details on using hashes here.

Provenance

The following attestation bundles were made for tafra-2.2.2-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