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

Parquet Conversion Tools (CLI)

Installing pybcsv provides two streaming command-line converters (require the arrow extra: pip install pybcsv[arrow]). They stream in bounded batches, so they handle files larger than memory.

# Parquet → BCSV
parquet2bcsv input.parquet -o output.bcsv
#   --row-codec {delta,zoh,flat}          row codec (default: delta)
#   --file-codec {packet_lz4_batch,...}   file codec (default: packet_lz4_batch)
#   --chunk-size N                        rows per streamed batch (default: 512000)
#   -f/--force                            overwrite an existing output

# BCSV → Parquet
bcsv2parquet input.bcsv -o output.parquet
#   --columns "a,b,c"       select/reorder columns (order is honored)
#   --slice 10:100          Python-style row slice
#   --unflatten (default)   reconstruct nested structs from dotted/bracketed names
#   --no-unflatten          keep flat columns (names like 'a.b', 'vals[0]')
#   --parquet-compression {none,snappy,gzip,zstd,lz4}

Schema mapping. Parquet structs and fixed-size lists are flattened to BCSV columns using dotted (location.lat) and bracketed (vals[0]) names; bcsv2parquet --unflatten reverses this. Notes and limitations:

  • No nulls: BCSV has no null representation — a null in any converted column is rejected with the offending row number. Filter nulls before converting.
  • Type widening: float16/bfloat16 widen to float32; large_string maps to string.
  • Unsupported types (variable-length lists, maps, timestamps, decimals, dictionaries) are rejected with a clear error.
  • Column names ending in _ are rejected (the unflatten escape protocol reserves trailing underscores).
  • Colliding names: if a literal dotted column (a.b) and a struct path both map to the same nested path, --unflatten fails loudly; use --no-unflatten.

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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pybcsv-1.5.10-cp313-cp313-win_amd64.whl (392.7 kB view details)

Uploaded CPython 3.13Windows x86-64

pybcsv-1.5.10-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.10-cp313-cp313-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (761.4 kB view details)

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

pybcsv-1.5.10-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (696.5 kB view details)

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

pybcsv-1.5.10-cp313-cp313-macosx_13_0_x86_64.whl (452.5 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.10-cp313-cp313-macosx_13_0_arm64.whl (420.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.10-cp312-cp312-win_amd64.whl (392.7 kB view details)

Uploaded CPython 3.12Windows x86-64

pybcsv-1.5.10-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.10-cp312-cp312-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (761.3 kB view details)

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

pybcsv-1.5.10-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (696.6 kB view details)

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

pybcsv-1.5.10-cp312-cp312-macosx_13_0_x86_64.whl (452.7 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.10-cp312-cp312-macosx_13_0_arm64.whl (421.0 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.10-cp311-cp311-win_amd64.whl (393.2 kB view details)

Uploaded CPython 3.11Windows x86-64

pybcsv-1.5.10-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.10-cp311-cp311-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (761.4 kB view details)

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

pybcsv-1.5.10-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (698.6 kB view details)

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

pybcsv-1.5.10-cp311-cp311-macosx_13_0_x86_64.whl (452.0 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.10-cp311-cp311-macosx_13_0_arm64.whl (421.4 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

Details for the file pybcsv-1.5.10-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pybcsv-1.5.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 392.7 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.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c08577997c7881d9180e5c697133f9169a466220ea8f95cfaa5605662950d095
MD5 f4f61faae17c53893b7c3d511144a626
BLAKE2b-256 5d0a3f58b6d7f4ff5b9558e0d7f6af95ce2fb427770a8d8181ae58ac630dc051

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 74e563f261c1ffc842747a12d44bcff0e4855ce917d932ecade628304d9fd194
MD5 4a745c48635d3622af6c450dec839eba
BLAKE2b-256 7d6118cf83913198d30ddf3bbb394fc0afbeaabd36b1bb0e9fe838cd7dacbfbe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7b375ae93686725dd2e943a848261a1ddcf3f472f12ff51feb16b2a77efb4032
MD5 41a14520d3a931c03e28f08c676a54b7
BLAKE2b-256 88d5dba24449cf0e03238f1592dabe6ec0f3c11874d2fde5b0e6cb297baed14b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea0f96d63b4f8efe611e8538e5536ace0b7f36378b69456ed7da8650d935d0da
MD5 9641eda9a5afbcb1bddeb53724fd87b8
BLAKE2b-256 701cd41ee21703fafe52954de34e33f5962af5ef6f27747d73087cad1753a701

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cf88ccb60cdfb161683a4a4f0c4d349180588c8104af93d8c1efcb5662ebbaa5
MD5 4959606fa3775f0ec1fdfd73e6cff8da
BLAKE2b-256 bcd39927250c85c194e0b1b6f4ec980ed666c6f511a84fe8254254f73a35af0e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f0c7cc7214bcf8215772cad0920bd9bbe53bd0c729c7879afd6554c37f1ce04c
MD5 b6d9649c792c2821c141580d3c56c26f
BLAKE2b-256 543c70448e0e819cedde2aaa6ec665c6922ca10d5b18b414ecf55c3187de309b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 b610ceb8fa34edbb121a3039a88646911f98bf166512d329a78fe4f24cfbc91b
MD5 2c36a4680dec91e5928158256ba11563
BLAKE2b-256 63ba4958fd79d2db42298fb83e28cf69b60325056c3ac6040660e192b4821d7d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 392.7 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.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8f38fd34436cb17f35cd8caf52d48dd9ae83ad1722ed0fab6234bd896bbdb389
MD5 a76a195f2ddf29283a57b98be036cf9b
BLAKE2b-256 e2c995b480dcc9e1dde9a5351d43a78e8dc809bd57d77fec8554b225bc8099cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e95a78f6713c4e2d3e74cf042af09089a44c0337072d99ab407c8d152030cb28
MD5 728bf426f8f3a50eb1a982052b01898d
BLAKE2b-256 80c3990a095df80aca163765209e5b530307f3632aeeb235f97211a36e470121

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ee6172c894e969bf7528508257a3ea32a46cffcf42f1793503d7cebeb2e24037
MD5 8b654c192a08cb2c80285e6389695555
BLAKE2b-256 2a7f2dc3f04896266afee40216e46e45ecca206310d3d31357832531765a4092

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9e9996c2d0f8aedeee8c61bec24f1d0c3557eca3d5020c95d3c83c70984cfeec
MD5 72a0294152904c4ec760fa627f12cf1a
BLAKE2b-256 66fee3556b51c482b6eb3131f48a41fc879576317fde174756cf1c9a38309239

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2af521785158f0f94bd74c6e1c96c0113bfef9ae45bf23c7c15a015ca6dda075
MD5 ad81dc42f70938ecee802f03d4736af5
BLAKE2b-256 1178eeed73cb39c8f5af0e59abcec22f46eb997f1717a461165bebf8fc8b399f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 b3acb586b5f751e837b663dfc0b2d4aa6cf39822ae9102b7c49724a4f0984b81
MD5 e2efc5b3edfde47e5f6c611a0ab6ae8a
BLAKE2b-256 cb34abcff9ace4866c5ace87388c331cfee0f7f67dcbf165b628d46603cb818c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 81353a92f80a84362acb02a80cd2ddac84f78353bf788a3316e37e09150d06ea
MD5 299699eedb024367bfefe29c0ffb46f0
BLAKE2b-256 f189e12d8858867d424c9a4ed09feb423a7c3a39ae84f1d9f4c37853b9aba8d5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 393.2 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.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fb13ced68368f713d067a7e9de6cd5478b840917764bfa028a72bb17d288a0f5
MD5 4c40a105378bdb728e1c4b5b8268e3cf
BLAKE2b-256 6c6a1a4933b0479f69e0d23c042eb17dd7d253ec535deada5b800f9fb339f1db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f875b9c4f0c32b1706acd9b70faff765c624cd4936eb1a9fcebc65c838934ef0
MD5 a2994de3afe701dd43a2b8e7f4327be4
BLAKE2b-256 0133e48ccae4e4fab9fc2408baa5511c01854475ca62f814b08049c2c9318e32

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 86eaf8c713f8db74a60b9218034fee3a40c3ccad8fb1a452066f819c0dd19296
MD5 dd4eb5773684321e21aca17c89fe332c
BLAKE2b-256 796fe9a428ae16c6a900de4d12ca9756e5afc995cfb006821a954064f28b0563

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 912bcf2d5ea65d1e5de4278b3f92d089d192fc9689870718bd7770122a3cb903
MD5 dbf82be295a0dea2ac02b7581b0adee8
BLAKE2b-256 c0d37d1417f52aec13524eacb3c405847d509f41b93242aed3d7851f504204c0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1081f9a23bdabeb567cdc24c42fe6375e5b8a110791a47433b9156e190bac620
MD5 f05deefeccddd0d59d768b9fc4289cdd
BLAKE2b-256 fa0303c90d4602c341dbcf0efcee42679f85f532e969132dd899f816ac2421cd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f8b867c198fb3684b8f52b8cac123a9d759ccb0d0631bff2b6599427d5c3bd3c
MD5 40b2c93a3de123c46a86ff121de62330
BLAKE2b-256 8a16c5958dc45605f2b00d33051ec6fc890b3323eeae99af7cccd9e3639f0e86

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.10-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 29c672c86069af5e780753334fb3c21d20220bbc1d86674e6c4d354098ed4093
MD5 b8195cec46d9db61e8d9557210ae40b1
BLAKE2b-256 ad85efdc472f8a703570d06d32090982da6b5e95d30e9930146cab9d772a0b01

See more details on using hashes here.

Provenance

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