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.9-cp313-cp313-win_amd64.whl (389.7 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (756.0 kB view details)

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

pybcsv-1.5.9-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (690.8 kB view details)

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

pybcsv-1.5.9-cp313-cp313-macosx_13_0_x86_64.whl (448.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.9-cp313-cp313-macosx_13_0_arm64.whl (417.8 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.9-cp312-cp312-win_amd64.whl (389.7 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (756.1 kB view details)

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

pybcsv-1.5.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (690.9 kB view details)

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

pybcsv-1.5.9-cp312-cp312-macosx_13_0_x86_64.whl (448.9 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.9-cp312-cp312-macosx_13_0_arm64.whl (417.7 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.9-cp311-cp311-win_amd64.whl (390.1 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (756.3 kB view details)

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

pybcsv-1.5.9-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (695.1 kB view details)

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

pybcsv-1.5.9-cp311-cp311-macosx_13_0_x86_64.whl (448.6 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.9-cp311-cp311-macosx_13_0_arm64.whl (418.3 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: pybcsv-1.5.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 389.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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7da1b8ecbdd0b8ac8abfbdde59ed1e85cc3c2b3a90f0b5b73dc8e516238d253f
MD5 b7f3d425021be330e65d2c47c19a8445
BLAKE2b-256 2425afa57641e8fe4079b9e6665cac8e781c631416908b7a09dbb40dca4fc5f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 495a61dc34129c690a4fb23d9cc4de27f68fcc31366e870b7a8bd161ebb02c4b
MD5 e9cf86a0da5c10b541bf9743c4065189
BLAKE2b-256 e4088dc48be6d16366183afc4609cb8b766927f8c0bec8cecf8b78c3f6dd46df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a4e6a46c4e1e950d3000d6856577a2196c038b1bfedae8d7f5d62a2c9f57a854
MD5 08e96e8cd05e4d0b45d2d04a001b94a5
BLAKE2b-256 3ba67a486370033b62d38ec7ad14fa9b6d9b702e479e4c70a1cf64f7e1076646

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 34cdc9a27b58a80efee2b815fe9b6d30b4d0cf5b581c4e68f6b8e884d6102504
MD5 bb6ce728578b7dff7bd0b3edb356e301
BLAKE2b-256 7f077f44205fc9d67fc3ba6f05afecf7cd0121c27b446c14a04c0f298974b775

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 616aa30b146d7501c5f62031419235b4c414bcfbe542dc025ff1560c9265c891
MD5 6a058b6288b27014f512a6da1d144496
BLAKE2b-256 0afb0ab25b75f265abaf342b5df2e25df20ed7dd44033be2178e412006542cbf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 7ea7ff804aa56d632d5e6b7839aa3f1004f95cbe087c694ff87f413e76cdb516
MD5 3f9296be4a0cf5db4f2de68b8cc143a2
BLAKE2b-256 447879d0b05a924104cee5c7fa57c1e446e90295461cb2bf8ca9260b38441cbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 2adb5e1c219dc2daf56adb45b60b552ee37870a1cc22bdd3e54544d8b7dd39ff
MD5 1434f219801916faff019c662837f27f
BLAKE2b-256 a49cd49802ecc6f2efe41d31313d6b8ddb23d655971b3bf719eb3b80342868d1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 389.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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 69cbc534a69fb23cd35290d6493df55fd88a8fbf54c1e96e40ba0ed3efd8ea1d
MD5 944329bca5dc28adada856ea4750b7b5
BLAKE2b-256 c14a6eb33353366e301773ac55a2f76973c084861d01fb1461457549b3056a41

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d3f2185fd98d9fd0cb9212c6a6a07a173c5c641ee60b45e6a1208d626d02c613
MD5 2af32ec3c573d6e06a4acffdda7f5097
BLAKE2b-256 15004581b780d0632813d119b3669abc28bd3a656f49a2037ce81dba4b072c4f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 59e7b3a1aa2db3e81b2ccc0e8f35df4d00f1fdcf2b5f00b9d04e2e18adf1bbae
MD5 20ecfc2bd657612bc90cecefc665246c
BLAKE2b-256 4d2fbd2b21efe96eb98f059f80257325def5d76e6ab8bbe66ef8fdad50dd4243

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e7c3119337db7ba29090f4dcdb77d55625d401ced5216d2c5063a5ea9e7f6591
MD5 93565367f39891facfb1493f16199e62
BLAKE2b-256 0bed3aad75c3557eefb8b17284ecc5b8c6be0b0711f0758c3ec3c2d7eb1e42e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 13a77efe1dd8e4193be2ff2fc31e74e19c70cc29d49c26c232022b6883b662b5
MD5 ad8658e33346f6de1d70695646564665
BLAKE2b-256 6ccd9c85e1b3f54dfb6588a72d10ff204d6e8d03342700e2021c21e3f64aa08b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 ef2fc697c335813c7ca133380bcf0ee1a20c9513b694299c3b1cf6b7c41a7952
MD5 30470b19f583d4794e1c97a3f5c965e6
BLAKE2b-256 d8e51b7e75e8aae43bfb07c54999c471217eba36424724f1ae14ae5c5d4069a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bdfe40563dca6fa507c658d6468c21db5785476aaa4fe7eb24936e42c2821638
MD5 c2930b8c1b6e8ccb77eee475ff3e794c
BLAKE2b-256 4669f77d31bece0d22ff028e5918f25847a25ceb969ab867365096cbf8dcb2b6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 390.1 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.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3e1405bb15287e16a8bfe9f67ebdb6144f5da3118c330cc1edcf259402c8fb62
MD5 7c28491dce91588411f404b3d31017d9
BLAKE2b-256 3175b36bc0c162a5d6d63693f9e98b9bc93229713a58149a9f261c87bd640237

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35dd91f9c190382977427622ff350f87d58908d121611f214df69f63fa32d398
MD5 9e1d09acf72db5f956205bb230394a7b
BLAKE2b-256 b318013550b83f202c7e0e8291bc6ef0d2214124778b323055076756c2ccc5f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ed5f5097c69b68e0861aeb88c03eb151f966fa7b2da28d6feeb4c467aa54ce9a
MD5 ac52065a3b025e1780075c31fa831cd2
BLAKE2b-256 3de0be8230cbf2ba0b987e5795e4afa8f399989bc0afc532f244221f582f2209

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 129d91b093080c8f937bc2e021232d93057a8e866c7b2812a39c82b51b127ef5
MD5 6846bf761816e058cdc3e62c798cf6c0
BLAKE2b-256 632c2c193d89c7f7c8b7c5fbbcf93b504fe1615a9c660236ad255eb1d4a6f173

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8e4894c9da6e936ba51dfe426602a75e21369d500f9954e5c55e6f6edc8b3d79
MD5 5a149c8aa2ee7d30756f5ed2d4c9ca5b
BLAKE2b-256 08fc86f1c0907d15c7e2c9e5b302fc21e87b26b436527f0c24fe7b5491c5802b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 42feb459de09f3c9db2113892e0d4c5acd448661efebd8cdbbc82ea33fa28b5d
MD5 2fc36f689e9629fe92a0eb230461f0f8
BLAKE2b-256 fef9b983ae576dcc8f03bbde94ff3c5ab6c2573d9224831cc055b6e3731233b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.9-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 43b012320223d9aa9cae37ac6aafa36ef1ec5b5a39621ef0bff9e6f0c654a3f1
MD5 a4bcb667858bee0224371e0e1f65ce04
BLAKE2b-256 38c3a5f7fde882f5d62e69506990277db75194fe567d2451e6ec22b09c7b1988

See more details on using hashes here.

Provenance

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