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.3.tar.gz (69.3 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.3-cp313-cp313-win_amd64.whl (62.2 kB view details)

Uploaded CPython 3.13Windows x86-64

tafra-2.2.3-cp313-cp313-win32.whl (61.5 kB view details)

Uploaded CPython 3.13Windows x86

tafra-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (98.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tafra-2.2.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (98.9 kB view details)

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

tafra-2.2.3-cp313-cp313-macosx_11_0_arm64.whl (58.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tafra-2.2.3-cp312-cp312-win_amd64.whl (62.2 kB view details)

Uploaded CPython 3.12Windows x86-64

tafra-2.2.3-cp312-cp312-win32.whl (61.5 kB view details)

Uploaded CPython 3.12Windows x86

tafra-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (98.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tafra-2.2.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (98.9 kB view details)

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

tafra-2.2.3-cp312-cp312-macosx_11_0_arm64.whl (58.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tafra-2.2.3-cp311-cp311-win_amd64.whl (62.0 kB view details)

Uploaded CPython 3.11Windows x86-64

tafra-2.2.3-cp311-cp311-win32.whl (61.2 kB view details)

Uploaded CPython 3.11Windows x86

tafra-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (95.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tafra-2.2.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.3 kB view details)

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

tafra-2.2.3-cp311-cp311-macosx_11_0_arm64.whl (58.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tafra-2.2.3-cp310-cp310-win_amd64.whl (62.0 kB view details)

Uploaded CPython 3.10Windows x86-64

tafra-2.2.3-cp310-cp310-win32.whl (61.2 kB view details)

Uploaded CPython 3.10Windows x86

tafra-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (94.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tafra-2.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (95.7 kB view details)

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

tafra-2.2.3-cp310-cp310-macosx_11_0_arm64.whl (58.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for tafra-2.2.3.tar.gz
Algorithm Hash digest
SHA256 1abfcb045d7f97d36b08e19f7776b1aefb10ed32656ec31a65a688295ffe941b
MD5 4a44c2326ca05d8ea80a4e33d4716e84
BLAKE2b-256 4c866666488b92fca0da4357dcda45e2e2f962d767293e37523d00e3d062e561

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0de63f697593a9634e0285268c746ca3eefcbfe38692334b0ad7471fb7379433
MD5 40f315374d7154a02d5f917342f1dab9
BLAKE2b-256 68169c2c2d50e311944f0d56bf5f3fe69f823b10951eb746224a32db76a06886

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 79a5f4b283525f404c3946cf0a86032f7179decc9b2e92c14bb67b24a28d5400
MD5 ce84c48d690ea64a86cb3f0045809055
BLAKE2b-256 ac51aa35b5b5405625dad52f512abc2bd0ffef57dca6bafdf1e63f94b40d767f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7993c6d962500422673cb35f93d4e934191f165c63420ad2824bdbb42ecb9702
MD5 5b33ee13791e288785cb1cbf20966ede
BLAKE2b-256 3c8fbd7e08c9d28d176dca4cc3ee6989d23e3eab95baf1175c443a6c67e1c651

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6d7cf9588cce3917d6b3b5eb35e27069b1b668d03f8349098d6b2d37ee02a643
MD5 875b7f6971a97e626ab70af3a2dc01f2
BLAKE2b-256 ae29dec1a7a7f701a55dcf4984adb09bea4f5af153c2b1e1e742c12bc2d34e1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e791d6eb279d9f98f6c4c985a8ce541c40e315b22b004b59c0a9635d32657a8
MD5 ed07f3ce049219c3f1d9c124d625f906
BLAKE2b-256 66749ee183fa28ec5478170da0e05c614601736e670e85cb6ebe38b1be689e7c

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8ce7256eb1b4f97571214f0d2b5bf3cecfc1e36000402cd195c0d72ac62d8602
MD5 a407266de1178656eba90a144b519b9f
BLAKE2b-256 c69b5095b875434ca0af3d3cee7a2d776bb0f53eef106cb0229f2a44c5573154

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 0ee6a994ef8b29e8acfbcd703e754e368d32ad8a3ac524d7fdf953c34d2224cd
MD5 ee0c5477a607f25365cefc7a74ddd20f
BLAKE2b-256 c0b73770292ccf54241511c6fa24b34fa50879f0a3747c9e1c90c6cfc5320f3f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fadcf3e671eca9f6dace4ed9bdcafe8218318481b7f0b3cb372647f689aebc8
MD5 43d26d19234a41da9c4d56664d830e52
BLAKE2b-256 a0a92e16c341a36d7ddf1342c7056998df800560fd0850a8fdb9f9d7d6c4886c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 be75cb4b164f040ec8df29f925ffa8e72656b453671e53136805cda7650a2633
MD5 32aeb7e4ee27a6f48926c0cc626880d7
BLAKE2b-256 ad6ffe0a8cc8dcf4c0e4ae9b6805a3e05492ad6401f7736fac8a589d9bd4837a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5931a49b6b6f82a6488de14ff3285a41e058b196f82a9e52dfee3018b9ed08b7
MD5 de1353f08b0f1691ea034a7c0b934446
BLAKE2b-256 28840a315ffc7fced5f71b8ea56e36ba546cd0065676b9cdd78d66dfad0a6f3f

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6740ddcd36456012789fbe0adff9714f78ed683c282ecebacd49c1ce28d32075
MD5 6b93e798b7d2642320c5be38bce98e0e
BLAKE2b-256 da9e3ca01c6010ccb879617d080d1a4079543493f83b7a562c2de7d1605f27cc

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 b36e4cae082df96fddb0b065e521eefb520739942401953088d0e3806c5fe4c7
MD5 97fa496050016857b7316235e15a896e
BLAKE2b-256 15af8b6564839d3d11aab5100f23ae0b017598090fbadc2989a8e817b5f1a6e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 478e563f82a14aac9d4ad86fb70196271830744d952e02bb0131a1a578b19d29
MD5 87f5cb2c6f07f2579a9b8b48a8ecc997
BLAKE2b-256 f16cdcdf7441593561d5f6e16f84de6c379000ef5f56f9b84a0cdf5ece6b0d36

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a0a2293256efdba0d8c3a3827555cfb2d5482606abb1fa4aff28272b354e08c0
MD5 213d92b64046b6bc3b798d029a99a359
BLAKE2b-256 92d24032a17fa4dedc68551076aab26f4e11471a6fd53141be655d80d9a2c05c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a25974fc8e648351fe3d5c9f65c88a5b8ee41268e1522bd4d131f0f593ad6b6
MD5 a5d5288c53648aef9fb2a07d8dd42e5d
BLAKE2b-256 276ed25903f20e9b72f2d87c2466b715c1f190711be237b91a2d737f0205694e

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 dd2cd983bb3a7cc5086daa831fbe4b62655fee1702399af3762efe4830e9a663
MD5 f3e4e34d19f579fbb12bc2cd56412095
BLAKE2b-256 5245a065e6a40751e3d2b769ef675adb521ab986cbf3eb51f0d287193529d950

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for tafra-2.2.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 5d02b54bba7d2b098ae5289c85048cb0720d24f6f579d7aff2d078b0ba89b709
MD5 b53ef2d5cc04be91280c5a85ccc85a54
BLAKE2b-256 27d08e0de7de97dbfc088a47523d7cbb363ec8054792c891931b3c4f0459dd13

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3821354660a614c51ea66b3f1531c95c617bd857464120780759f1d7713bbd2e
MD5 f6a2b75f68eafb9e3e025aa26525a0e2
BLAKE2b-256 a34ec97ecb784f52b4e59acba0e4a0cc55fd96fe9a32f552ff6bfba761f8004f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 08cb0af8ab2119ffbc8922f5390b46dc3e371e2ea5c0b30eaa374f16a10d6cef
MD5 55516a5b2b8495fb51cc2ffe9c3dcb67
BLAKE2b-256 4d8b589041b431f381bea30f636a560348bbe420ad586c0825c4a97fe1031e61

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tafra-2.2.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 046a8f4d37f633e492bf7a24d786f3ca18a99edc538cca483a3d9dd0824949d9
MD5 7d5f17f765f10a3fa57bbf18b24dfbd4
BLAKE2b-256 41673a82203f2f6135cbfed7d869ab1cb09e910e9b06f81853571cc103f5fefa

See more details on using hashes here.

Provenance

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