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.8.tar.gz (415.5 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.8-cp313-cp313-win_amd64.whl (387.9 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (754.2 kB view details)

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

pybcsv-1.5.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (689.1 kB view details)

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

pybcsv-1.5.8-cp313-cp313-macosx_13_0_x86_64.whl (447.1 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.8-cp313-cp313-macosx_13_0_arm64.whl (416.0 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.8-cp312-cp312-win_amd64.whl (387.9 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (754.3 kB view details)

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

pybcsv-1.5.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (689.1 kB view details)

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

pybcsv-1.5.8-cp312-cp312-macosx_13_0_x86_64.whl (447.2 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.8-cp312-cp312-macosx_13_0_arm64.whl (415.9 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.8-cp311-cp311-win_amd64.whl (388.3 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (754.5 kB view details)

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

pybcsv-1.5.8-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (693.3 kB view details)

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

pybcsv-1.5.8-cp311-cp311-macosx_13_0_x86_64.whl (446.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.8-cp311-cp311-macosx_13_0_arm64.whl (416.5 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: pybcsv-1.5.8.tar.gz
  • Upload date:
  • Size: 415.5 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.8.tar.gz
Algorithm Hash digest
SHA256 ae28ff4c8fead0531cc0da9c4848d503d25d4c03334773e4fe03e45c0feb5bb9
MD5 8c5da4e72aa29e28db0fa024959f222b
BLAKE2b-256 adf1b3c00b2e6f63fbc70b094bbf4f483261afc4643b094357b588e0422fc148

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 387.9 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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7cbc949e817899f3e9e0c54dca054d7fed92c3754bf1e3295dd742b1b13b5b51
MD5 10249fb893215b83bae26fde6a59e5aa
BLAKE2b-256 5d35dba3c80fa7f8236c19ef020c484bb54923decd972be7000390d101f705ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 903f211e575d2a1c2bb9709cf4d61c47f5f32c955b89fca0ebc8898e588d9a0f
MD5 3e951c83aa7fa7d44b6051ccd7d29ec2
BLAKE2b-256 39a3345e793a365cbaaf4b6e9d4a6bfca3670f6873f1911bf439a6f81911ccdb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 111db7f205e3641d225846c56ea77705e5b0662daea823c71fd31a2347f96d9d
MD5 81b3a6a9e6963610db6cd85570ef2395
BLAKE2b-256 3e890447f8411f88343f55c8570b1de0e5ce38216c73aa67ace697989187f377

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b5552b2aae7643be240c7c47b37d8fabedb07e409989ae499110b1ecca93f919
MD5 702c7dec060344372f1ae81f54a40231
BLAKE2b-256 747b1bf56e35aed7e0b189ef096a495e7ceee9fe82ac356052833fd695bb0b08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 64b4507a8c41e8b82c9163484daa9ee2a050767b8ae8939826b994b0a2268818
MD5 e72bd0a006e53ff565ce49942eb873c9
BLAKE2b-256 31f60e998f757865a1f9963f5a78ea491512382ffd1811899c9a852b63230ed0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 ee380a58f2d380383f5ca4a32c7606c4b10a2140f0fc2c8bb1ef6ed1cb705223
MD5 c5849384ff0043d2d69c1281f0646e35
BLAKE2b-256 76df1ba40353d3a1017226eb16b7bbdbea592307f57f3bfd49af005c0374d20a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 67fcf683213d2d3deeae20776fa478c9814c1316d7588552d3fd1988078d8db8
MD5 a5cf76ce27001c53a7250bb5d4434cae
BLAKE2b-256 848fe2c15b00d31d51d566c03b98b4671d7a6d198da410f472fa0dd7834fa887

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 387.9 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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a103b6c77ae868d6bb0270606391aeda8754f694d3564da7a2b4a6384ad52cc6
MD5 0cf39903e06468363761251cb74865b8
BLAKE2b-256 70c215c085b0dacf7fe7d545816794eaf93f6a5eb48a0a608294c00319489dd7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8235fc3dc80288de56fccf55e4f87cf7b077996a88bfc4a32acdc3b31ece4ec4
MD5 144322e7769e1d66d3895f94a2e4c8a4
BLAKE2b-256 ad657da55cf236fe44f36b6a1b744749b7fc64d38d0871fd65e514bd3f4f8fb1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1d5db139649238b736c75641b10f921ae459c2785b5aac6c31bc231e88eb9438
MD5 372daa9cb78a43e8f897cd0780e73790
BLAKE2b-256 295aa3c59a4ec2f2f5c3cc77f04c3d55cde10663746f65c49daf04a0f8a3cca2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 513a9fa54648939bcbe5d51739f0f875d7c47edc671cd3ff2c1ca72d2090abed
MD5 d9d87509c05b4c52599d40009f1361b4
BLAKE2b-256 6ce7a034439316e282aed5f0f5994c63f439cfe58e707e7740b6395195b65157

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2a991e77f2cefd6843e384b365315d155805d42eb7b86c1a816e7969a8403d5b
MD5 bc2a22feb9d6184108c0435eb03499a4
BLAKE2b-256 f71b61b0f48cb28b733a9a893882ba1cbdd15bfca58c54a6f81a2b1b683ff98f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 1270d33c97f040cc9d54294f3f586af4151a8d755caed3bd44bd0ff051ea774b
MD5 17d4478f744ea8c8af90ae9b965c4f81
BLAKE2b-256 6c6ced90da92b5df3a283185ea67330dd5e722b2e4692bfde66d6a9290e25ab6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 b41d942b3afc5513f4e94a28b293a5597c4c4197d1960c0819b0c7fd5780156c
MD5 65e447438dd70b1c824b3b82ebe342c7
BLAKE2b-256 fbe148f1829321331a88cc126a268fe821e310b131bbb90807d8389208f7af90

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 388.3 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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 934fa7982a51839d90d16bdb36e18236bff9e40445087c2b27f24ee8e388d1fc
MD5 02b26f6bc3420b92dc2a5c18c3240b5d
BLAKE2b-256 ce32b41744cd7a5eba7783ac488265111ba0f1513ed34c822f0eb0e3d6afbd49

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6b4ad2f0b2ff5a18f0fdcc77700fe50e1eca5c6da84a2e2d56ff25673b476d10
MD5 038502b57f9c93c3ef2c144bb8e79f11
BLAKE2b-256 38ae3de4841b83de11a895d1f2d70eba302c96b2c9b6c2619358d3d59556cbd7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c520017e2f0585e5779384593164532bafe69a6458c6094c4ea284e44064869f
MD5 ba3b1f288c7f3e353efc2f9d10d4b166
BLAKE2b-256 93493e792e845e9d638fac3856a8b30856ef352f50090f175bdc97f9965f0148

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43eac9122e7cf0309f44eb15611d99c6d02708e803c9c8079550deec4bc1e54d
MD5 3679d1ca5f044c43da877d25499f358f
BLAKE2b-256 ddce5359f836f198a52a8087d3e87c73e624650e2bf90974324ab5334a5d52a1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 326250ba2ac5004a10620032a597349c2528b514cdbd47829892263d185b04bb
MD5 9e54ad0d067b45f8e7c6d4038bf2a2b0
BLAKE2b-256 0e14d83b753465a792117a1967c5d663fa7f807246732ea1e05c4710a4b4c272

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fd63bc1be000d6866817d2c4844991e514d76eac06ebbb8fdb3d8af213efbdc7
MD5 6ee512af90a4bc0802b5acdc16235d93
BLAKE2b-256 d691ce38b29877dd1a829be637dd8ea6b7bb6ff941974ff01ae3d84c0104f043

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.8-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 63b58d747fd74c8c5ec56fcde723c5c4155ac720d525873151df4d232e709dfe
MD5 a4306ea3f905fc1bfe44f4230bf76f1b
BLAKE2b-256 1483dc4be783bf9cc09f07c7c8b267668615c68dde8aa9eaa633d525839a0b83

See more details on using hashes here.

Provenance

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