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.5.tar.gz (398.4 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.5-cp313-cp313-win_amd64.whl (370.0 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 13.0+ x86-64

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

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.5-cp312-cp312-win_amd64.whl (370.0 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 13.0+ x86-64

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

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.5-cp311-cp311-win_amd64.whl (370.0 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.5-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.5-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.5-cp311-cp311-macosx_13_0_x86_64.whl (423.0 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.5-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.5.tar.gz.

File metadata

  • Download URL: pybcsv-1.5.5.tar.gz
  • Upload date:
  • Size: 398.4 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.5.tar.gz
Algorithm Hash digest
SHA256 92eab0f59137d2fcff708c4d18f314c507e2456fc6bf0d3b1b2a641a924af65f
MD5 dff8504341fc579327c30f498f175e83
BLAKE2b-256 6b6da271b2e2b5ddc27e514cc2175f6b2c32407d1ea1ea6d0e6bdeda40d78ff3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 370.0 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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 362d1616567825d8b78376b01bf8bda36ef0da11fab0c443f66fbb1143eb4e94
MD5 c15dccd9c070eb3029e09df877058b38
BLAKE2b-256 37efc4a377b2f57ec8bec3f979599ea04b056efa974d874d434300f0fb2b0ac3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 59ce5bbfb5104426efa60828ec221181c11e07ff0deecf2b2e5863450cea27d2
MD5 140616d3f17d9dc46bb63eb3de16a1ae
BLAKE2b-256 06646ceaf5d79514c851290694eb510f5f122946cc7a49a9c4e2d745d48df4b9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0faa157ed2cf778784492ae0eb552389df98504f13dc1c09425aa103010d97e5
MD5 3a9d89924aba49fd740beba6649df9a5
BLAKE2b-256 4384e9e0badafa020989a5c2b9fc4c9b9805f2ea2160b57d923ee5cc031032d7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aec7657ad744716c97d2b4eab1bbfb1b718f338eb4d7982755c53741168853be
MD5 b93ebdb06a2ed64b4178e4ae2aa5b546
BLAKE2b-256 fc39b0c4b44e8c64f859dbe724f36dfac02400f2b84e1ff515cc992281a04d5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 49b6ed8b2a973dc26e7f51d472f9eeb29e6e90d4f518cc155bbc02b8337adddc
MD5 6c44c7d365f9e4395af87ce1a59c759d
BLAKE2b-256 3f9ef78c62a4a2e6817bcf95c9eabaecacc67b0e719819de8e07978688ad703d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 bea6fb7fe849d3acc3bc51542fda4e3fb78a974a7adbe9992fb324b44b8fe3b4
MD5 acce8a0b31359664a7a482dc91d41146
BLAKE2b-256 5558b1f3034443f06a92fbf72cd1c24ad42d0b4f092ba7f5340d27497ced3262

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 7b3d8747826e1490779f1023a1d9dfbc0e34f2cef429e1f40435e063f86d983a
MD5 d7757995385f732d3e31919392a522ca
BLAKE2b-256 61a3050a2ad62261d252cf782305dad25968981b27753fb518b982119007a862

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 370.0 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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e401a0b5bffdbf66276cbcdd11877a27734ed6af055a43261f9d0fa88d926b79
MD5 4380046362ae0feefd8183a05df9a4c8
BLAKE2b-256 f7c78b19c7d1a723bb7af9bb63440a5191ca5b1bca763adee84fefec40e6b190

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c8982e61e262c8e506bd29525c613b98bcd2a3be5a455c5edfc642097214cb37
MD5 2eab83cf12be5c740dcd2832a5cae05c
BLAKE2b-256 80c3d95e6e5092a7f91b579a7581f041d47b4b74b6bd6558efacccca6d3a2b94

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 55d4399821afd567d8c8bc7eb21a3c5739f00231819aa88832c7c63140bbc87a
MD5 aa5b1a6c2450b126198c50f0a9cc09b1
BLAKE2b-256 afef7352d7409347d441a6d7b4850167748b2e6e6252d2cebc011359c8aa3e10

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f787888252515ac9bb61272ab5f9e0e652b71dd3b2a3dc0423ededb76c5100da
MD5 ed366e09018b5b4d0521b36c868a4921
BLAKE2b-256 4e9e149e54f86151ead9c446abf92d43a773a79fd841baa765eefe778e90f6ee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1c2aa29273621004b53164605ca67b713b9da6e63553fc98f4c4ab02214059f8
MD5 5526c1e5c22a9e9113ee47205cd0816f
BLAKE2b-256 73c9bfe094f171a6732a64f459bd94a07c6db1382a844fd2a2fb42d78ceebdf9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fd436058f9af2c08e7ac55fa03874577c5d4db44678e5ec7873bb69ec5b9c683
MD5 9835894642f55d9709fda8e4f8c8d23b
BLAKE2b-256 1b650f7467bfa9b6da473de450d879732279e130145e6966188c83045985878d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 56911f83bbc095ad23fef9341d9bd6afd7c73d3bb47ab72677f5f6a334702e83
MD5 8a6347f0a4960230edef8c5fa1ae27f2
BLAKE2b-256 3b1b78d0a4536e71cc807cff66b6911e54f6d75be27cb73dc7e471e5d18493c6

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for pybcsv-1.5.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 32e898476073ac5fdc2dea88ea6a0aba6566d788e9df183da56179f0d44386fe
MD5 419bd6595cc33e6ba2a7262d22b0e966
BLAKE2b-256 0723777a36d4b23793b6327f9c1fbe1fff87570ca2923cb03156ec71155dd93a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f07c6a49a4507b34519802329b167480304cdd55dc319ad4cc2d07b10e7852b5
MD5 3495c3d7c81d078cee34d40df2e2f20d
BLAKE2b-256 429e55dab200c35a97545ef4da358306a54bf916989b9ca766442219def48438

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 38cb0d430a49c15d1b43952766b64411135356d85eea8abd1ab12ed481717673
MD5 a7107c04b71425b54a994a8d5c8ce0ad
BLAKE2b-256 febd8e6a2c882f8c778e24a28233fa797ceaa07acacb039b578848f7eed5c51f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1e469e143e233bb610d98f6100b376bb0b1bf8925d40db5c821c45328528d578
MD5 aa11a2384e358c81ccbb39cff39e0e89
BLAKE2b-256 d09d822d53245209651ff55dd60083c5a047aa02c30adb9d8f43ad8100138492

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d4f0e67b9c0554aa5cdcce2c532d48bd6e021ed098a722df453b8f4f6936e6a2
MD5 b933c0e2eb3e41f1880b69cc7645b2eb
BLAKE2b-256 4e0e262f9fac42dbbeccaa506286d5688c50f20c7a6844b1071500a7704d46a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 785c40f032d7c544e713091d5d09b8fc15b5dd7b4fdc4738b1a439a167d4f50e
MD5 9dcbf68996218f2cf8a4bb83e571c746
BLAKE2b-256 9c8ffe5cd75198c7ae9d28055a48448d96469142b7535b61fbf02cefd5d0df2e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.5-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 12c457b8662e674f533a433fca6633f87bfdf7584e1d761ebda1b8144ac657c0
MD5 d63a10d8c218e16b47d3754b68a7a123
BLAKE2b-256 845b8044b3636055792724facf3d71d7e096f2bad761af42be951c46c825958e

See more details on using hashes here.

Provenance

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