Skip to main content

High-performance Python bindings for the BCSV (Binary CSV) library with pandas integration

Project description

PyBCSV — Python Bindings for BCSV Library

High-performance Python bindings for the BCSV (Binary CSV) library — fast, compact time-series storage with pandas integration.

Features

  • High Performance: Binary format with optional LZ4 compression and delta encoding
  • Pandas Integration: Columnar DataFrame read/write via numpy zero-copy
  • Type Safety: Preserves column types and data integrity (10 numeric types + strings)
  • Cross-platform: Linux (x86_64, ARM64), macOS (x86_64, ARM64), Windows (AMD64)
  • Context Managers: All readers/writers support with statements
  • Streaming I/O: Row-by-row read/write, never loads entire file into memory
  • Direct Access: Random-access reads by row index via ReaderDirectAccess
  • Sampler: Bytecode VM for server-side row filtering and column projection
  • CSV Interop: Convert between CSV and BCSV via from_csv() / to_csv()

Installation

pip install pybcsv

# With pandas support
pip install pybcsv[pandas]

Quick Start

Write and Read

import pybcsv

# Define schema
layout = pybcsv.Layout()
layout.add_column("id", pybcsv.INT32)
layout.add_column("name", pybcsv.STRING)
layout.add_column("value", pybcsv.DOUBLE)

# Write rows (context manager auto-closes)
with pybcsv.Writer(layout) as writer:
    writer.open("data.bcsv")
    writer.write_row([1, "Alice", 123.45])
    writer.write_row([2, "Bob", 678.90])

# Read all rows
with pybcsv.Reader() as reader:
    reader.open("data.bcsv")
    for row in reader:          # iterator protocol
        print(row)
    # or: all_rows = reader.read_all()

Pandas Integration

import pybcsv
import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie'],
    'value': [123.45, 678.90, 111.22]
})

# Write DataFrame (columnar path, numpy zero-copy for numerics)
pybcsv.write_dataframe(df, "data.bcsv")

# Read back as DataFrame
df_read = pybcsv.read_dataframe("data.bcsv")

CSV Conversion

import pybcsv

pybcsv.from_csv("input.csv", "output.bcsv")   # CSV → BCSV
pybcsv.to_csv("output.bcsv", "output.csv")    # BCSV → CSV

Polars Integration

Zero-copy Polars DataFrame I/O via the Arrow C Data Interface:

import pybcsv

# Read BCSV → Polars DataFrame (zero-copy via Arrow)
df = pybcsv.read_polars("data.bcsv")

# Write Polars DataFrame → BCSV
pybcsv.write_polars(df, "output.bcsv", row_codec="delta")

Install with the optional Polars dependency:

pip install pybcsv[polars]

Random Access

import pybcsv

with pybcsv.ReaderDirectAccess() as da:
    da.open("data.bcsv")
    print(f"Total rows: {len(da)}")
    row = da[42]         # read row 42 directly (O(1) seek)
    print(da.read(100))  # alternative syntax

Available Types

Constant Description
pybcsv.BOOL Boolean
pybcsv.INT8 / pybcsv.UINT8 8-bit integers
pybcsv.INT16 / pybcsv.UINT16 16-bit integers
pybcsv.INT32 / pybcsv.UINT32 32-bit integers
pybcsv.INT64 / pybcsv.UINT64 64-bit integers
pybcsv.FLOAT 32-bit float
pybcsv.DOUBLE 64-bit float
pybcsv.STRING Variable-length string

API Reference

Layout

layout = pybcsv.Layout()                              # empty layout
layout = pybcsv.Layout([ColumnDefinition("x", INT32)]) # from list

layout.add_column(name: str, type: ColumnType)
layout.add_column(col: ColumnDefinition)
layout.column_count() -> int
layout.column_name(index: int) -> str
layout.column_type(index: int) -> ColumnType
layout.has_column(name: str) -> bool
layout.column_index(name: str) -> int
layout.get_column_names() -> list[str]
layout.get_column_types() -> list[ColumnType]
layout.get_column(index: int) -> ColumnDefinition
len(layout)           # column count
layout[i]             # ColumnDefinition at index i

Writer

writer = pybcsv.Writer(layout: Layout, row_codec: str = "delta")
writer.open(filename: str, overwrite: bool = False,
            compression_level: int = 1, block_size_kb: int = 64,
            flags: FileFlags = FileFlags.BATCH_COMPRESS)  # raises RuntimeError on failure
writer.write_row(values: list)
writer.write_rows(rows: list[list])     # batch write
writer.flush()
writer.close()
writer.is_open() -> bool
writer.row_count() -> int
writer.row_codec() -> str
writer.compression_level() -> int
writer.layout() -> Layout

# Context manager
with pybcsv.Writer(layout) as w:
    w.open("out.bcsv")
    w.write_row([...])

Row codec options: "flat", "zoh" (zero-order hold), "delta" (default).

Reader

reader = pybcsv.Reader()
reader.open(filename: str)              # raises RuntimeError on failure
reader.read_next() -> bool              # advance to next row
reader.read_row() -> list | None        # read+advance, None at EOF
reader.read_all() -> list[list]         # read remaining rows
reader.close()
reader.is_open() -> bool
reader.layout() -> Layout
reader.row_pos() -> int                 # current row index
reader.row_value(column: int) -> Any    # typed value from current row
reader.row_dict() -> dict               # current row as {name: value}
reader.file_flags() -> FileFlags
reader.compression_level() -> int
reader.version_string() -> str
reader.creation_time() -> str
reader.count_rows() -> int              # total row count

# Iterator protocol
for row in reader:
    print(row)

# Context manager
with pybcsv.Reader() as r:
    r.open("data.bcsv")
    for row in r:
        print(row)

ReaderDirectAccess

Random-access reader — reads any row by index without scanning.

da = pybcsv.ReaderDirectAccess()
da.open(filename: str, rebuild_footer: bool = False)
da.read(index: int) -> list             # read row at index
da.row_count() -> int
da.layout() -> Layout
da.close()
da.is_open() -> bool
da.file_flags() -> FileFlags
da.compression_level() -> int
da.version_string() -> str
da.creation_time() -> str

len(da)               # row count
da[i]                 # read row at index i

CsvWriter / CsvReader

Native CSV I/O with the same Layout-based schema.

# Write CSV
csv_w = pybcsv.CsvWriter(layout, delimiter=',', decimal_sep='.')
csv_w.open(filename, overwrite=False, include_header=True)
csv_w.write_row(values)
csv_w.write_rows(rows)
csv_w.close()

# Read CSV
csv_r = pybcsv.CsvReader(layout, delimiter=',', decimal_sep='.')
csv_r.open(filename, has_header=True)
for row in csv_r:       # iterator support
    print(row)
csv_r.close()

Sampler

Bytecode VM for filtering and projecting rows from an open Reader.

reader = pybcsv.Reader()
reader.open("data.bcsv")

sampler = pybcsv.Sampler(reader)
sampler.set_conditional("col_a > 10")    # filter expression
sampler.set_selection("col_a, col_b")    # column projection

result = sampler.output_layout()         # SamplerCompileResult (bool-testable)
if result:
    for row in sampler:                  # iterate matching rows
        print(row)

FileFlags

pybcsv.FileFlags.NONE
pybcsv.FileFlags.ZERO_ORDER_HOLD
pybcsv.FileFlags.NO_FILE_INDEX
pybcsv.FileFlags.STREAM_MODE
pybcsv.FileFlags.BATCH_COMPRESS
pybcsv.FileFlags.DELTA_ENCODING

# Combinable with | and &
flags = pybcsv.FileFlags.BATCH_COMPRESS | pybcsv.FileFlags.NO_FILE_INDEX

Utility Functions

# Pandas integration (requires pandas)
pybcsv.write_dataframe(df, filename,
                       compression_level=1,
                       row_codec="delta",
                       type_hints=None)  # dict[str, ColumnType]
pybcsv.read_dataframe(filename, columns=None)  # -> pd.DataFrame

# CSV conversion (requires pandas)
pybcsv.from_csv(csv_file, bcsv_file, compression_level=1, type_hints=None)
pybcsv.to_csv(bcsv_file, csv_file)

# Columnar I/O (numpy arrays)
pybcsv.read_columns(filename) -> dict[str, np.ndarray | list[str]]
pybcsv.write_columns(filename, columns, col_order, col_types,
                     row_codec="delta", compression_level=1)
# Type utilities
pybcsv.type_to_string(column_type) -> str

Testing

pip install pybcsv[test]
python -m pytest tests/ -v

File Structure

python/
├── pybcsv/
│   ├── __init__.py           # Public API and exports
│   ├── __version__.py        # Version (setuptools-scm)
│   ├── bindings.cpp          # C++ nanobind bindings
│   └── pandas_utils.py       # Pandas/CSV integration
├── examples/
│   ├── basic_usage.py        # Core BCSV operations
│   ├── pandas_integration.py # DataFrame examples
│   ├── advanced_usage.py     # DirectAccess, Sampler, CSV, columnar I/O
│   └── performance_benchmark.py
├── tests/                    # 17 test modules (pytest)
├── benchmarks/               # Python benchmark runner
├── pyproject.toml
└── README.md

Known Limitations

  • Arrow string columns: 2 GB per batch. The Arrow C Data Interface uses utf8 format ("u") with int32 offsets, limiting the total byte size of any single string column within one batch to ~2 GB. An OverflowError is raised at runtime if this limit is exceeded. For most workloads this is not an issue. If you hit this limit, consider splitting data into smaller batches.

  • No native null/missing value support. BCSV is a fixed-width binary format without a null bitmap. When writing a pandas DataFrame with NaN/None values, they are coerced to zero, False, or empty string by default (with a warning). Use strict=True in write_dataframe() to reject NaN values instead.

Compatibility

  • Python: 3.11, 3.12, 3.13
  • Platforms: Linux (x86_64, ARM64), macOS (x86_64, ARM64), Windows (AMD64)
  • Compilers: GCC 13+, Clang 16+, MSVC 2022 17.4+, Apple Clang (Xcode 15.4+)
  • C++ Standard: C++20
  • Dependencies:
    • numpy >= 1.19.0 (required)
    • pandas >= 1.0.0 (optional — pip install pybcsv[pandas])

License

MIT — see LICENSE for details.

Publishing

Wheels are built automatically via GitHub Actions (cibuildwheel) and published using Trusted Publisher (OIDC) — no API tokens required.

  • TestPyPI: every push to main/master or version tags
  • PyPI: only on v* tags (e.g. git tag v1.4.0 && git push origin v1.4.0)
  1. Trigger the publish workflow:
  • The workflow triggers on pushes to the release branch or via manual workflow_dispatch.
  1. Install from TestPyPI for verification:
# in a fresh virtualenv
python -m venv venv && source venv/bin/activate
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple pybcsv
python -c "import pybcsv; print(pybcsv.__version__)"

If the import and version check succeed the wheel is good for release.

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

pybcsv-1.5.4.tar.gz (398.1 kB view details)

Uploaded Source

Built Distributions

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

pybcsv-1.5.4-cp313-cp313-win_amd64.whl (370.1 kB view details)

Uploaded CPython 3.13Windows x86-64

pybcsv-1.5.4-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pybcsv-1.5.4-cp313-cp313-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (726.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pybcsv-1.5.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (669.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pybcsv-1.5.4-cp313-cp313-macosx_13_0_x86_64.whl (423.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.4-cp313-cp313-macosx_13_0_arm64.whl (393.7 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.4-cp312-cp312-win_amd64.whl (370.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pybcsv-1.5.4-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pybcsv-1.5.4-cp312-cp312-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (726.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pybcsv-1.5.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (669.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pybcsv-1.5.4-cp312-cp312-macosx_13_0_x86_64.whl (424.0 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.4-cp312-cp312-macosx_13_0_arm64.whl (393.7 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.4-cp311-cp311-win_amd64.whl (370.2 kB view details)

Uploaded CPython 3.11Windows x86-64

pybcsv-1.5.4-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pybcsv-1.5.4-cp311-cp311-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (727.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pybcsv-1.5.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (669.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pybcsv-1.5.4-cp311-cp311-macosx_13_0_x86_64.whl (423.0 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.4-cp311-cp311-macosx_13_0_arm64.whl (393.9 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

Details for the file pybcsv-1.5.4.tar.gz.

File metadata

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

File hashes

Hashes for pybcsv-1.5.4.tar.gz
Algorithm Hash digest
SHA256 36c838d9bbdb4be7295bb950465d858e27c6df04d0d5a7c57397ae58eba900da
MD5 79ab66e679a863276acc78f6c2ced623
BLAKE2b-256 e2dd3e6c2a19e12e86cb36d466f7710fe489952f958bb2c1d7a52adc3f102165

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4.tar.gz:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pybcsv-1.5.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 370.1 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 pybcsv-1.5.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a3f22904f0db6f6e285991eaf771c93960a0e49cfe6d86ed329f1bfc1b728a0e
MD5 023c2f6f0ce4be4d16c11f032781daa5
BLAKE2b-256 9577c6427325e47d27cfa7d12f7a3bf7848bb06d3f076ecb64f20986f4423700

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp313-cp313-win_amd64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 94c5f2026e24681eeeab8a653c1f0f464dbf345224a4ee23683aa0d851c33cbd
MD5 ca96c3ff62be08db40c169b2617a019c
BLAKE2b-256 2cac8bc938fcc157ae31fe0397c447ba371e37b4e6999f393677f3424010330a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ce415db85bc3ce3093f0295e2decf01dba54d72893647ad8c4f5b0d3751b553b
MD5 d072fac5443eeec40109f39b7172581e
BLAKE2b-256 88d2ffe196d2b6e9dc114ef89ae921920512560b75aaa46351d58e17b236bb5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ad2a413c4a64df2b3a940ab27d23dd63391922f3e06116223aada896ea90975a
MD5 4a0874958269a00f642a9d61df5c215d
BLAKE2b-256 1bbd876747ef9e41d3d8329c4473e8e394bb43062a059661bc9121714991f10f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e20809e62877b3499bc08da09728ebf5b1bd883792b9196615c8d55a8f838227
MD5 82f0a0a00068148130fe0d5159bbc34c
BLAKE2b-256 a9822ce30bbc08506e439f9219c2e5383497950cc8f7aee6d46b9b97e4eec288

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 08740533d3320dabd90e221ef1678570072898655f66b61807d9522738f64023
MD5 30ebcee9da8a63e33e4deffaa2634a04
BLAKE2b-256 eb1fd62b102d2e10b2351d105373976e6c187216bcedd4f4b3e386babe76ac0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp313-cp313-macosx_13_0_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 8aa644879b2f346f318115ba9b2110b37025ddd66530efca12e739e76ca7c731
MD5 b69367473d96fc332d117e088a3ff8a5
BLAKE2b-256 1cd21d3740a88c27d56a8eea522f8d20c6e843298dc902692087e51ba01ac486

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp313-cp313-macosx_13_0_arm64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pybcsv-1.5.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 370.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 pybcsv-1.5.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 454284431be6094b58672f36ff6fb97f22b2fbd4ef77bc11f2f8454309a86de4
MD5 ffc15d3f44a7c720a25f3fdd337f7594
BLAKE2b-256 473b5204655248710328fcee9e5ff07e24908c91ba02f738821b6b07f946a617

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp312-cp312-win_amd64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fcc52600c2f8ce7b1ae9e697b7203b19983b2daddbd288a3549ee4b84c590afa
MD5 c0820f0bbd8f9507bc0acbb7d59c13e8
BLAKE2b-256 c18ae420c7dcc2a05abc573b3a09d77c86cfc0d666aa93d42e6bd22cd7396ab4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2efbd82cb7477a6aa47a84f2e700a0777ad285a89263845ffe52a19dd137dc5a
MD5 dc1c3073d4c080c9d62ad90725991f25
BLAKE2b-256 9795f74106ae53c52bae470798f5e060bcfbe36c0d0adcb4944d1f36767c1992

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e9e122300bf3bd9de5d70dd88ffd18fa9646dc8de67458a69d591340ecf7597f
MD5 63bf5cbc8dfb8154b34cbe0c13f13943
BLAKE2b-256 4925f3cdcefb5399f21dd08b0e572d6623325f78ffe89763d400428d031eec68

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5765c85a13b29d091fdd3c441757e8959e967668328785a79b4ff224f86ddcdc
MD5 f8094d9200c5555994ffe418b2ff33b8
BLAKE2b-256 19d74885276970d8fd6cbef970342bbb296222f2bbfb20454366b99eb0bf8ad7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4e3e528570056958886d1a14676adedda14f8ba52ded03bb147b056874570dfe
MD5 c8670197f0ed4aeace75e42d511332c6
BLAKE2b-256 a31386fe1d5e4cbe5a7c21a427d517c9aca3fb862dd8f59dc2c08d39ea5005fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp312-cp312-macosx_13_0_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a63c5792c44a47d442e2de4653de5f7b6c3798988de57d68521e216eb1416b6f
MD5 1a6ee5783a4d2e44c9b52f1d09410a70
BLAKE2b-256 53f31cc173444f34db6dbf1d8181d5da4cf822db4ef73030eab2540a1c4607f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp312-cp312-macosx_13_0_arm64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pybcsv-1.5.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 370.2 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 pybcsv-1.5.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4dd037695af11725cbb5b4d0e669ad7054bd607a7bc56695dd7eeb121ceddcb3
MD5 0ff6a1b091fab72ba39b083a3e60a93b
BLAKE2b-256 5a1c4a43472fc540d8c706dcf5a3b03a1f04c47df658e5d25d293cf71d9e1f00

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp311-cp311-win_amd64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1b95830d9c1ad197003f8f2e8d7977853470ff37d12eaee57030ba43b0d2121b
MD5 b2e78996a769513c6b15ea73b99ca523
BLAKE2b-256 6ee4aa090e273cb4dd104fe41cc5567a97661be95eb6493f9bc4c51458cbe3dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fc597be7576523671c1543987c78e0a80ee446220c4fca35a393436d10e54125
MD5 9f9343cb32b9e775afb903ddd898c4ec
BLAKE2b-256 d4099da174e007194a69f64bcebe7eb28f7c264f5c04a513a19778a61da9982a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1ee6950e26b385709bd73f07a76020a7193a63b02ab8d605d842f682acf1d3e
MD5 9192def28a9bfa9088518a2d3fe61ab8
BLAKE2b-256 fde200cf0bb14e4e4a254f8f4659d33506a185550d17768ec569d367e443711f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 033114baa6a6f6f0c6b730799c47dc102048688ad7694d19e8a8258cd0777599
MD5 a174a94441b2146d465025e8f650b9ab
BLAKE2b-256 e9fe2d315007cf2a1938953626e901c53d967cf3f020e4ca7c555fb55dd70883

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 c10fec681e8c9b90ed8f30c548378226df5f2987e25361c6aee762736f5376f8
MD5 11ee29846a0f76ecf6e8904c7bdfaad3
BLAKE2b-256 f999e5cefb3e0bd02c3cb774688c5890e52f811d06bd1a156702cc969be2d309

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp311-cp311-macosx_13_0_x86_64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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

File details

Details for the file pybcsv-1.5.4-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.4-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 6ff02a17bf5df7add639fdc5b1c34227ff25335490aa013ed937cc792488855d
MD5 681342f8635d5da9f21b55ae67bafcf8
BLAKE2b-256 2eaebbe150674be8ef479e94f277b4aceeb6b04c4ea6d54008d8e2dd9c1dc7d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.4-cp311-cp311-macosx_13_0_arm64.whl:

Publisher: build-and-publish.yml on webertob/bcsv

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