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.1.tar.gz (397.7 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.1-cp313-cp313-win_amd64.whl (370.4 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (726.4 kB view details)

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

pybcsv-1.5.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (669.7 kB view details)

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

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

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.1-cp313-cp313-macosx_13_0_arm64.whl (393.8 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.1-cp312-cp312-win_amd64.whl (370.4 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.1-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.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (669.8 kB view details)

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

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

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.1-cp312-cp312-macosx_13_0_arm64.whl (393.8 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.1-cp311-cp311-win_amd64.whl (370.5 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (729.0 kB view details)

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

pybcsv-1.5.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (670.8 kB view details)

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

pybcsv-1.5.1-cp311-cp311-macosx_13_0_x86_64.whl (423.1 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.1-cp311-cp311-macosx_13_0_arm64.whl (394.0 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pybcsv-1.5.1.tar.gz
Algorithm Hash digest
SHA256 6966a56cc7075ad479ece47e099c10d7b27d787319d62c03833be439504b048e
MD5 54a7834d6759229d1f552627fbb922ae
BLAKE2b-256 18c500a3d3959188ae9fccf13062624ff40562ba02af0d46dde637cf2c3c5c74

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.1-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.7

File hashes

Hashes for pybcsv-1.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9c2ccf6dd5cfa4107b24c34b4f0d2d89548df4f6c6d70292b80502f8f2dbad1d
MD5 1c8205f5ab6d58d68c1ed9ee07863683
BLAKE2b-256 ee51ee5cabe4666d3147e7bedc0726291c61afb514685dbfbe28765e6b11ae37

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8772692e35951a0fa37cc3ae3067196658bea207352b698a3147e96d3d26615d
MD5 949f7f0153d7d28c47c5ba2c0343bc54
BLAKE2b-256 82dd77e35268769aa7852c7c696011c6486d76eabefb151c698a776c07138dcc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2b384c8bafab93d8af90eecfa711d66eda312d4602e5691807fa694826eea084
MD5 15f2c594cee6a0d28ead55b8b3ea65f5
BLAKE2b-256 c3d33db69e35b1a1747d69c5aba072eb41b14a77121932eb676b09efc07ac701

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6cbdb5edc93306638654d83405639ebb80376f9b9a5a4b1fa77799e29587fe43
MD5 5475a56e9c6b292c5bb7b888d5bb94c6
BLAKE2b-256 ced91addf5dcd42c0d1c767edd53be614579917c6673b9c59f9a16c6ca0664e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dfe27c4ca3ed0892dc1c5e09da7d603a7ca70b799006364030b588c15844eacc
MD5 f718175eb22bb07b42c7858d0181fbc0
BLAKE2b-256 b6c5b68cd0e079ce4e5ce79091dd4ef07c8d31a89ba97bdb15e39065bfaa310f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 673c7d24504ce0a23e4d2a8ebfbfca490ea1a9044c4c4f3a82ca192473d848a0
MD5 0adca53d1fd56658785f5e67ba9e7082
BLAKE2b-256 dcc0862505cc54b24891f92629e6a5d87689fd8bceea2cf2ff6eec292751e4d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ecd34fec1c6f5dd02c24acdb073c1121b8ee1cb0bf9a8d0ce0f1da7d7e3ce7d0
MD5 3c8b5d6b25ccf972cdbaeb39fd656c41
BLAKE2b-256 50d9e00fcca337440b139bec963942027d751966d77d3f9ef8e4acafa7d4d0d9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 370.4 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 pybcsv-1.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0f9892fde5589e12c41674f387a3475895c17ddc2c85ab8315ef5f5170d2fd8c
MD5 c84a063b11e8d12a5e2d992bb3475e5c
BLAKE2b-256 edb39d783492604e2b4c89ff63ecda6ed0f12db1c7928ca006476a38a47cca8c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5a229479009353d2fd1c767443521168c2c3339d684eafd875a4a886fc8583a2
MD5 5cac97aa27e0f9b4fd753ed4ecb17e8e
BLAKE2b-256 5d206b683dfafa3d8fb43f7514f18685a0646538dbed5eb4537ee918c64e5ba6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8eccf26d5483413f2db52ef03f825d01cd7d64a02a4a1e4e14a100931b596814
MD5 52efdf4e2ec04500e208a134577b5a65
BLAKE2b-256 93982b6ad97cf5140a682c512a1dad77b03f68ec783f6986b5f264f68340a5f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a1645fcb2eeb4cbc1130dc7010862030301c8165cfeb090d64b661087fb26257
MD5 250ad9e00dd1fa89d5ce172c78334a01
BLAKE2b-256 6b3d206c831cf2dc4c2d9af0b9e605c3f415a7701a64ee5873bdd39f5644f683

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f1156822a839274e24ea6da61b59cc07ab8b741c7a7a6fc125e2fcf65b4601b6
MD5 516dfcef27107f1504c961a5418f6877
BLAKE2b-256 e81b77875132332ce4de7c33a1db261d8cdab169d6eb98ff6c6891f9b8881911

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8703c6cd9817f883313f821a9a4f634e11a433d31b08c5c5bba0156a86afa31d
MD5 77b87900ee9c4dab022803383aa29b5f
BLAKE2b-256 ce04a1b50f47b8ff606370a7b9991dbb6bd0485a3a8740515186b002901fa128

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bbb18bf456f76019b816bf8d67b8b8d8bf68dee8f4d377801b4a7c308df43ada
MD5 5a64a3b4eba5d3e166d74dc488fc1678
BLAKE2b-256 45546f236178f5251c4bcf9af2bd1a6ea16d991f3cf4ecedcbcff24eb03d3984

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 370.5 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 pybcsv-1.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9101707e58408a20bb7c879fb317139d9000e26f365dd46c7673129cf2def693
MD5 cdcdf2de0b0bc0840c442cf95b31bdda
BLAKE2b-256 ba86e56832f76fdb1ac9fe40250c7d4410b2241ef2c4551cccf04d0f5c22d6a4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 628af3f4403166a0738a908b6700feee1b7f9d144cf717ed3d07d269158378a4
MD5 7853fd88291062ae5a25cc2e21b3d90d
BLAKE2b-256 feb71aa6aab81bd102cc58a3975ed27ad668629bf8af73bafba40ef1f12556bd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8f31e721ac470377603eba4a4728f3d2a74044aee39b0560ad5b5661a3645210
MD5 abfa36c93878a8fb705818d6ed6d44ec
BLAKE2b-256 3169b0c21d57d8a37cbec99912927d149725e20b03a9ff789593a97932edcef5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d1fdb5e258d11125685c0498e35f5bb4dafc0f77fae2ea8ebc79b11317ef5392
MD5 3cd3d284f80008eb09df334139c2f615
BLAKE2b-256 4c5b9bf4b1aca6d6fea98913ff1b3bca25ff5dfd0fcd9d80afa28a01381c18f6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dc70c2d7a6b0640d73d6a96980ed0d3d71f8264b60ba2d6b771b5abd9c5814bd
MD5 34b7b8d9b42ed48d6267fe3a0cb89fa9
BLAKE2b-256 f4aadde63449a3cf8832e99eebf4d77eadf5cb47f1f49d557d1b408cb86714f2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 b097774fa5efe6fd4820c97bbf95974a890528ada999831365d3d07329d01f4c
MD5 59ee06c45f6dbb2d873e71013b63ab58
BLAKE2b-256 999ee0380f1fe0fb149fe8f0ca5cdc0653adb9407d424bb0fc6ccc2cd520c4a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 0c2ead72dbda960c1d5c03e1a9b345b0a974acd15be17c859369d6de58570215
MD5 e9d2a158dab27b9ebe8ec12377a14a5b
BLAKE2b-256 1eafebfec3deb4a7840e22f8c5561b3e26bd25c79d18dec0556f82ae817c538e

See more details on using hashes here.

Provenance

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