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 = 8192,
            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.7.tar.gz (398.8 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.7-cp313-cp313-win_amd64.whl (370.4 kB view details)

Uploaded CPython 3.13Windows x86-64

pybcsv-1.5.7-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.7-cp313-cp313-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (728.9 kB view details)

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

pybcsv-1.5.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (670.2 kB view details)

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

pybcsv-1.5.7-cp313-cp313-macosx_13_0_x86_64.whl (424.6 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.7-cp313-cp313-macosx_13_0_arm64.whl (394.1 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.7-cp312-cp312-win_amd64.whl (370.5 kB view details)

Uploaded CPython 3.12Windows x86-64

pybcsv-1.5.7-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.7-cp312-cp312-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (728.9 kB view details)

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

pybcsv-1.5.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (670.2 kB view details)

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

pybcsv-1.5.7-cp312-cp312-macosx_13_0_x86_64.whl (424.7 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.7-cp312-cp312-macosx_13_0_arm64.whl (394.1 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.7-cp311-cp311-win_amd64.whl (370.6 kB view details)

Uploaded CPython 3.11Windows x86-64

pybcsv-1.5.7-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.7-cp311-cp311-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (728.2 kB view details)

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

pybcsv-1.5.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (671.3 kB view details)

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

pybcsv-1.5.7-cp311-cp311-macosx_13_0_x86_64.whl (423.6 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.7-cp311-cp311-macosx_13_0_arm64.whl (394.5 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pybcsv-1.5.7.tar.gz
Algorithm Hash digest
SHA256 09f3311dfd894abee00e04849066cf8ec38595ea015d7b041e2a1b7c5cfabb25
MD5 f883e71ce0e5dec3110c13ba9ee9a4ea
BLAKE2b-256 f2e1954aac80928c446091a1946c176417a2a7df16398089b1e81849c901c9fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7.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.7-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pybcsv-1.5.7-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 370.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pybcsv-1.5.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e3fdcab361a645195720bafc061b60772c7ba05b77045d9f7bf89fa82638c486
MD5 2af460c74cc0f03aa28532909e114114
BLAKE2b-256 9c4c9fde686ab171e3bc5b832328d2fa6a7d485e078c3d773e371329bcc0b2ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 16118c92fe153ab8b349ab3c26856b6e8566406a190d6096ee13a77758d40a76
MD5 105d3ea4d1bb7eb51e30d5463dd08fd9
BLAKE2b-256 024a63feae02ef6447486f20864ef26a03a3df6efc9ee00e26513821518eaaae

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 89905fb3d5983347a3d7fcee70bccc5db1bae1501207250070afb0b33c3776b5
MD5 3d0ab4887c99e2269f052d68af6e22e0
BLAKE2b-256 55eb15d245e67af707a28860bb912774066e25703c1c99fa39b67b5e693dd32e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a2352d8649ab6a1bdf8bf3f77bb31c1f740a7ac168f0f212d79282b9c20d597a
MD5 b970b73f758ec881c1f030885800bf1c
BLAKE2b-256 2a173acf60666bd79a12e91d03f336605f908c65d132804ebe252ccb34bcbbf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5e2bfb4500dc12400899c9b09de40112c39ae27628214ea474fa08ed69e98b33
MD5 ae762969a07749572d6b90ed4deb4027
BLAKE2b-256 2065f0a4da2d7b964252afb0c7736df114b5ceebde48086553f758ca80d5eaaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 941ade8af258c0196423aea5a4f5996b085e8e88c3eae0d7b21a6b781810fa69
MD5 2c94435936a8a2f176d25b970278bb88
BLAKE2b-256 59352cc945bcc2f9323b62b319f700be271202e821abc1f588412ac9a53745ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 994123259d1ffa330529877da8d55431fa0e33294345837093ae28ada86f7f9d
MD5 de44ed2b881906dff94d42eeb25b9466
BLAKE2b-256 bd6498f24d58faf876ef9c5d57f6872e886186d6f1e04895ad2426a65a854273

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pybcsv-1.5.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 370.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pybcsv-1.5.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3ece40d5d4db33d78350ddeb4faba30f04002a0182af675088b2d7fecff38922
MD5 90e8fbc4157be815a845268e9372e9a2
BLAKE2b-256 0b7ac95ad7d491ae3089c4394cde5a0d5c11eec04d26b20b20188effde8459dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 15294c4d4b4cec11386d18e6a139736563ba16e04451784ea00b1fd6fc4311fe
MD5 693b909e882c0213e3f4a601cbe08b4e
BLAKE2b-256 269cf7d4cce89c311eae261b1d9f6398600a895053004f8cff8ef30e0ac26278

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e249ae9302993e4cfdf66eca1aa5bc77561cb4a1ee3644fd7115f0a244c062e2
MD5 fb23b335b948627b08dc8be4fb8d8877
BLAKE2b-256 4991c4d79092d9f2e6e1a0cf9527f56c75b1228abae1e86c20dee20189b0c46f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 854f6370eeddb79b3040e2b3585fd71663caffd2df35b2597629e17152c678d8
MD5 7e1c9c9a471909b5ccd82997ff6f55aa
BLAKE2b-256 9be05e6bf4ad2e592d589a31ad6a39aacbd70f08500d7e2441683f4e8fda27f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b0d8587eb30cde292fa8bdd4ed813d33096030cb88a16eb3f001ebd5d6cbd3e4
MD5 65b9b9ea7a20faa46293674dd825b0a2
BLAKE2b-256 9517ebdf4c872f7db23abc670af957888e4f4047beddb8bf733ac7e83662420f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 7f669faf0dc988f335d122b022809e6f9b8ca0b27fd939500450e6e26d7859d1
MD5 6fe56050782e5a31eaa9c639c578ba16
BLAKE2b-256 1ce5ee09dc1b7ba37511cb3407d9a0ec477238498a8d59d7dcf718580f28bedf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 dec852e674eee084b20b221eae1320b34a1fb9269898a84ba8de7892dc8ab89c
MD5 7198ce258c9814020a7abb76a759b78a
BLAKE2b-256 a4d1c99775301eb92d0292ecd277f31630247284ac170bff2f9fc596f4bd7fde

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pybcsv-1.5.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 370.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pybcsv-1.5.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4bbc88196bf09027ada13eaa08f4047e0a39d73836f4a7a75c68037b0bfe8702
MD5 9f1ae35c9a326d6b1f880a13bb8eb58e
BLAKE2b-256 4565d5960d7abd9bc525259db8bb07f9767e35a99f1ccf8f418e226a776acc67

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 500b50bc0abae3b7f38a2859436222a5ac55a6360e3053842b1d208d09fe71d9
MD5 44fc70836b9d2834389d52356da7b999
BLAKE2b-256 606df7caf2f6bacbdb69e3a416a53368c6de7d4688e976d156d5c2483eb7d9f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 57d13387b37db29d5cb5aca9f75c9ec7a4d711dd27090caf4fbf5d3d6e9fc61a
MD5 c35ca405d04daff20609cf5fa313be33
BLAKE2b-256 0449723bcdfcedb44a8a7d840d04ae3fcdd22a1f9e9b7d4df8486c17230ba1fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a030391df51bc6329bd40f66dd8cfdca6779ced0ed7ea2029b96b201dfe5b96d
MD5 9341f7307c3f131725f96d2fe48ac0d4
BLAKE2b-256 6ffd4d79501ec791f7cb7f1975c5ed837e24e20860e8f4228b330016af75593c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d1e10480f5a5a6f7a628a4e73b440bc7f566d97aa6da17784254fc199b5d57b8
MD5 cfcfaadc6c564c0fabbb551d3b4ff2d3
BLAKE2b-256 4d7d7ceb8b8d01d2817ddaffdc8a786d5b4d6cef77fc253f81b73c88f7001f8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a562336453b218702ea010106c91d539e444f68b73d9dd9f994fc60d5daebdd9
MD5 4b83ac51da24f24f1d53d659a97b096e
BLAKE2b-256 623b9c28b5a0dbe152e978a864fb14141d6620b58483690a6847b170124f38c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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.7-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pybcsv-1.5.7-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1aaa6ee222edd2aacc173afc77b4805f7004254d9ae9c4c2d1d5de99e9220f14
MD5 f49ea669c6b5bf2132094cc7d66c4783
BLAKE2b-256 c98f8da299032631851dd4ea98c2ffcd4976704d31358d97fb7710906cb40aec

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybcsv-1.5.7-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