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 = True,
            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=True, 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.0.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.0-cp313-cp313-win_amd64.whl (370.4 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.0-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.0-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.0-cp313-cp313-macosx_13_0_x86_64.whl (423.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

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

Uploaded CPython 3.13macOS 13.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (726.4 kB view details)

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

pybcsv-1.5.0-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.0-cp312-cp312-macosx_13_0_x86_64.whl (424.0 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.0-cp312-cp312-macosx_13_0_arm64.whl (393.6 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (728.9 kB view details)

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

pybcsv-1.5.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (670.9 kB view details)

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

pybcsv-1.5.0-cp311-cp311-macosx_13_0_x86_64.whl (423.2 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.0-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.0.tar.gz.

File metadata

  • Download URL: pybcsv-1.5.0.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.0.tar.gz
Algorithm Hash digest
SHA256 bf0a30345921266f1625dcb2431ffe751f37180b1e05e289eb0d8d4d1d9b3745
MD5 1bcdc7ce58e73b801cc6a4d0c689eb7a
BLAKE2b-256 4224a1a5f6183bf5ed1213394f5cf579bb37d452de22d857db578d2cf7ae1443

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.0-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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e934320e7f5951965eb28cea54567e47e48ba8ffc39374165460c7984e90fee1
MD5 a286a4ed5891f702782b84bdc12fb0d4
BLAKE2b-256 e4313fb6a71a371626e4f8538985da1236cbde9a37af20e499cd592fe797a659

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 98c2df58a03c2044bb593315e8395e53e9bf667ba90bd0f8ed4a3851f0f362b7
MD5 6cc270493483e6c1d92bee2251b30848
BLAKE2b-256 7df0f74ec7d1111706217f65c5c7d08d87330042bd1b55462e0a7158f72aee94

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 85869221bee93177b70c0f362d7322473477b13915514fe94e302164b614220d
MD5 37200ba87a46fd69f19257560bb3852d
BLAKE2b-256 f1bbde473a60361b8b60f74ee3d54c2121d068e776478858c8efeda06aa169b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 38d5d3bae8eaa7a1bea724fa06f91cbdbcb4fc934cf14ca5f1d53d67d4d2a919
MD5 2e3d8177c99bb0bde76a61431d600c0d
BLAKE2b-256 f923334b3e88866b618b460aeb95d168ce45c741550ce31d325a204ab9ef8819

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 47c61ecf2e302cb1dc4b82af6e411e16ace4340a00c3d1c9dc0f0bec17fbe38c
MD5 cb0dcb221c145add05db4566463f691b
BLAKE2b-256 528f11ac527725f12eca14b8965770d99fa78efab9c496b44f3c466b8ff9d501

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d5541268f34cceb1f9c9a61f3efd9a9597d3b399bc786c7221afcec8bcefb251
MD5 3dbc5937fb33636bf573b9f8af57666c
BLAKE2b-256 218c207fed5eaea4716bd8cd6b9687df11d141a36900f67466caf1ae00aac91c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 4e9dc7e7d8840ff3cdebacd13566466c3cd7a8e33c1e665a853006e92fec45b4
MD5 4fdb5b04da136b93780f718ae3f1ff96
BLAKE2b-256 8da4c6e50479e1caebce0c7f2ae202d90e28b3e3665361845807f14bc828d83c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9700e079edeade3ddc3b5f20dbff9b778dd0f67cc9e69059b1705fdb13cdb282
MD5 d4df3fe7ee6a4945f78afdba0d2fe5dd
BLAKE2b-256 354b50b86854eda79ffc5f50fa007c0a74b23ad9279ea7fce6a258b9a9ca3cdb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4df9eee67ddfd818860f94d3f8fade02b413f0da25195824d7786e40b5793a96
MD5 94af78912d909e6b0735962bd543bf4a
BLAKE2b-256 f223f1f8f5e11e2faaf88db0e144f5b1b94ace6a432f88d14785376208806a58

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c570af4d408d8b1b2e22c026611563aad6d8673430cf625f6290d8ac417109b5
MD5 f583d601a1cd385b5356b00d7295881e
BLAKE2b-256 a2f6d3ef39d56ac341cfbb8fc4a6fc1e5645de850e2290a8b4459e1082fcee96

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2f636295760c692f314708b4e84c7fcb5ea5a4f5abaee330923c486babd71b9f
MD5 960c0b1aff04eb5237af179a3e6bf4fa
BLAKE2b-256 b3c272f2628810e9526a8b3976732a430f1dd10e1905615be5da371539c3c67b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 de9de0d02ea48000f884cbddf965dd4a0daac171cddabac6832c78156e1e83de
MD5 23cd44a629897157617952ff033b705e
BLAKE2b-256 e840f40cd4fe2eab7cfe4a0c21690e7dee6a860855e972247d18c3ea31d9e3d9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 2e687b89dc81fd3575c8203053b0496c8c9df5186330ec0db68dc7b097725b40
MD5 b8a8a071b6db7acfd15ca1a1dcc63e8a
BLAKE2b-256 c6a187497517bc921db3ac77c23ad4b7ffbe4c00fbddf1cde94577c33e98a39a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 76efca22709da804d28d4e6a4e12bb9f9785759e05bd2011253790b8c88736fe
MD5 d4101b7e2dc7fb77d35a4ee6d8ac33cf
BLAKE2b-256 635a943f7c47e4742ee218127464cffc5a1d9d07b193093939200e1d89adab3e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f826897ee42c5cfbbfb5ff909e5ba4e72d6b5aa07ecbdaaf6c3db54eaee12ecc
MD5 98768bf98e1b6ecc07fd687bafbbc5b6
BLAKE2b-256 edbd29abca539c2931e1fc1d9227ea7362802aa32c1e46560bdeca935005fbbf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 26ff87997356306f142da9813f7fe8eb141ef963ee30307688211cbddd5e7fd8
MD5 9bc219d8136c5ecca8e60cc3ea1b68d0
BLAKE2b-256 0957e2e5520ee6b423bbf0c3ea0feed82a70fd397ae965507540dbcb8e860250

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7ac63deb936173469c72112ee9aa30415e74927b2a967dff1cbd1832ecf649ea
MD5 1cfebe7e4c7ff3bb09dadd5c7464ede9
BLAKE2b-256 6d3b08f6f41f12b016565401e52446348bba0ece24b88a9e80468aca7181c0ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 81a87164cc340b7de088e50ca3c7101c1752b002643f570c6c02d299bfb5d132
MD5 3e635292137a3a595149e5a4fbad8702
BLAKE2b-256 80834c228b6d186e94b60bdf6135df06919ba28e95447e7022feff42ecb2ec59

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e205eacd3fc723e02d6c1a1583546a4fc1db6658d2908b09f6d8c30bd81845ab
MD5 fa52a8d550ab364eb62a78abbce3c98a
BLAKE2b-256 e32cf25c86ed8e890f98244de8a7ea9b102ef842e98cfedcbfcdc074dc114248

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 af6c85649ec075f508c22a4d0adb117eff0b0c2ae9801ee0709029f08d21d344
MD5 05bbd51951ff237c9a312fceb40dc571
BLAKE2b-256 bca3d39773204ca03512acdcdc46b796cd257c3be347e27041277dcdbd08169d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 7c9aebff8c480e6d0a9171375fe0cdb6a6966435524b96ca30f5bdbce9c2cb37
MD5 15d4ae580f6ce26caa634b451a9a5851
BLAKE2b-256 9e9bda212edc78af47f1971de6439228417604eb857d8b439473cb0cfd1db8c5

See more details on using hashes here.

Provenance

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