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

Bundled Native CLI Tools

The wheel ships the core BCSV command-line tools as native, version-matched binaries — installed into the environment's scripts directory, so they are on PATH in an activated venv with no compiler or CMake required:

Tool Purpose
csv2bcsv CSV → BCSV with validated type inference (see the main CLI docs)
bcsv2csv BCSV → CSV with row/column selection
bcsvHeader Show a file's schema
bcsvHead / bcsvTail Show the first/last N rows
bcsvCast Change/narrow column types
bcsvSampler Filter/project rows with a condition expression
bcsvValidate Integrity-check a file
bcsvRepair Recover data from truncated/corrupted files
bcsvCompare Compare two files (with float tolerance)
bcsvGenerator Generate synthetic test datasets
csv2bcsv data.csv data.bcsv        # from an activated environment
import pybcsv

pybcsv.tools.run("csv2bcsv", "data.csv", "data.bcsv", "--overwrite")
print(pybcsv.tools.run("bcsvHeader", "data.bcsv").stdout)
pybcsv.tools.path("csv2bcsv")      # absolute path, e.g. for custom pipelines

Source builds can opt out with -DPYBCSV_BUILD_TOOLS=OFF; the full tool suite (and docs) live in the main repository under src/tools/.

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 Distribution

pybcsv-1.5.11.tar.gz (621.2 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.11-cp313-cp313-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.13Windows x86-64

pybcsv-1.5.11-cp313-cp313-musllinux_1_2_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pybcsv-1.5.11-cp313-cp313-musllinux_1_2_aarch64.whl (6.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.11-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.4 MB view details)

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

pybcsv-1.5.11-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

pybcsv-1.5.11-cp313-cp313-macosx_13_0_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.11-cp313-cp313-macosx_13_0_arm64.whl (4.2 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.11-cp312-cp312-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.12Windows x86-64

pybcsv-1.5.11-cp312-cp312-musllinux_1_2_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pybcsv-1.5.11-cp312-cp312-musllinux_1_2_aarch64.whl (6.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.11-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.4 MB view details)

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

pybcsv-1.5.11-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

pybcsv-1.5.11-cp312-cp312-macosx_13_0_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.11-cp312-cp312-macosx_13_0_arm64.whl (4.2 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.11-cp311-cp311-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.11Windows x86-64

pybcsv-1.5.11-cp311-cp311-musllinux_1_2_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pybcsv-1.5.11-cp311-cp311-musllinux_1_2_aarch64.whl (6.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.11-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.4 MB view details)

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

pybcsv-1.5.11-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

pybcsv-1.5.11-cp311-cp311-macosx_13_0_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.11-cp311-cp311-macosx_13_0_arm64.whl (4.2 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: pybcsv-1.5.11.tar.gz
  • Upload date:
  • Size: 621.2 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.11.tar.gz
Algorithm Hash digest
SHA256 ab5efd17b9499064f38723b079e91b0f6eee7f40b25c205b1248d63a5918916a
MD5 0c713c89c37fcdbb9d44d33c8858380e
BLAKE2b-256 155fd8ad1e0e8792e0b0aa4bc2a15736d07fdec2b90520c21194b9ec5b652354

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.11-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • 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.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 45de129ec3932910bbcc05c3f4903e0ca15500c2f99d4a0eeb8bbe817b57bb47
MD5 53ea83f5828730f5e7f07f64a347c9da
BLAKE2b-256 01f9d64256059529504cdf98a558ed1b6bbec5ab9220b6a21632acf8b3853926

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8f028005ea6e4b548f9e9b3dde8a849665cec38c8baff638b694204cd744232c
MD5 a2d03abbe46bdc77bb4c295907d97fe4
BLAKE2b-256 f8ab11837ddf4cd7f4f4166f28f93c31c587ffb9bcdf27975a85f48a05b95e71

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c5383597fee7970668b63c9229aff15a60d8517cceba7608c8be24f14c4a6f2f
MD5 dd65d1e8abb185cbffb41b31ea1f66f6
BLAKE2b-256 2e009b77621ac58da28648a43126d2955651264f2a2d17833de2a352719a8be9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fae43347fc139be7ee226e0c132647bb2d422399f0995b92a5305b66d221bec2
MD5 1a7ea13828ff209a153cf1b377cec04f
BLAKE2b-256 3de2667f7b6e0a26880cb49cb5ddc20cb6c21cb4b07abba5a2e186c5f17dff16

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8423fa654c539a3fb2bc313b5f50cf953127ca25690a09b20da18816b2abd632
MD5 f3bea6a4d03cc42d899f5b1373000a2a
BLAKE2b-256 9fb92c37e9acad1a2e996578a75e12b233456be9414b3f3daa1ac56273d7f614

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 3c8181ded3281ce4818445833d30493bfc33f6e16336b1b03560c2e849723b99
MD5 7657d1b468ae9b8d4c9858026fdd2649
BLAKE2b-256 986d56121eebbb38de7e1239ef533cc8cc161d6f626a4ca2644b36b9ec77daa6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 dc02190cc554869a4e1652b6f2edb9d4cce08f21a6115885c1054bf454bb61c3
MD5 eef560fb29bcb029deff28a15de38fea
BLAKE2b-256 0ae869d658f209a81a070b0773f1b87a33c95467ac620ee7b5e51f35e9a87fdd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.11-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • 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.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a30bab6330d6ae80d4f5c5c27275f501d4b3a7932a121c96d6f56f1ddf932db9
MD5 6a9ec0c620233c852a22c4f573d3c9af
BLAKE2b-256 b073391c46e8fa860a469e633f3723730ae7760c043705a1c26c63b6f4532137

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 408b268af20f3c5af841c61e74c5a99b38561830b101f237d1061374675affc4
MD5 68150fe0ce851ac28e53c6e29f57a259
BLAKE2b-256 d974a0d03eb524a00d2f3642f107552a4b79af0be6b26fe2457fbddd46a31d64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 361f17f4dc9699d86f950c4c7c36da18013046e76f39d251bc4551ce90988cda
MD5 e8b75271ae66c54e01828f6699d78a5e
BLAKE2b-256 71b633230d9e81b3a03a5f2e8fb24d4d97559a11482bd73f54913e525eecc830

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5121364d65263abc8ff063d5f8fe2e4a0984ea8ada4046b38e1b501f9d1ebf25
MD5 27e4a3b6b180cf2cac7be96e83015af5
BLAKE2b-256 4781132da25e025491066c33806190bbcb17f0d95686a8c11f841719a4ba8743

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d4aad6b832abed12880eb2fc2a83cb721adf36839ef8399bd44ca08021c041c0
MD5 c2e6d3bfe48df6afa062ccc7ee4dc047
BLAKE2b-256 b17a6975827b375508a9ac09ce8efa4e429edf410f4ce3027c323e1b04ef9125

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 0a1aa61bf97be36ca3c5c7a1e8ec49935a98c8ef037a48c6210a5eb65ba810a2
MD5 35630516c166f5968bd6688c75520abb
BLAKE2b-256 dd6c574ad75ff3eac5a94efaf30d0774e1151b2db3e1eaee9e2791ac23c8451f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 38b08ff371f025b16ff38db4a69e90c9bacc209853de4bf5466e286e7f6d5bfe
MD5 5b9476c97da5a99dbd54b70891f6f2ff
BLAKE2b-256 a45206d4253eb1b5ad580a2bc9eab0b02bf5caeab569a1a91803ba10f5e622fe

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.11-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • 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.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a8a37bd71af3a26e9ece583dd99b5c70c9acaddc6611ae0a24b1cc2121f8cd97
MD5 40538e5716c66a2a369fdee537395b3e
BLAKE2b-256 8a2c2a2251876f074ad8fb5aee75a6a64b65709cc30fff119dea237086be87b5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2837bae006ec847df3fbd8fddf7aaa96379de1270cb6f2c59fe3c18850ca0b82
MD5 925343c6fb2fecfd31d6f4ec2d4d4b0f
BLAKE2b-256 8b02486fbe5fa89d2c0708d3ffffa0fedcb22949bd984e6f9b8d001ff4a6136c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c1349a26b12b2d19f32f50189312246e3096e109bfceb2f5133cf860de740601
MD5 19f383b845299ead45ad5d73979ac2a7
BLAKE2b-256 ead653146342d8eeff230cb3a50f268c3605cf9462c2c0a90c3bbf02667336ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0dc21bcfeb6e96557f235882f3dff60bf5e2de552eaca6e8e8fbf9a05de38851
MD5 7fa988779dbc8146dfa70a63b062f071
BLAKE2b-256 d1bf9ddf14e41d137212914c89983c41cdff55eb85fafee0de90483a61753675

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 54e2187ca64882df7f2f7a31bb81ac8fd93013f47ea4cc8aa32aa38ca93b8651
MD5 ab23b9b2d894247ce860e09ae070ff94
BLAKE2b-256 3a606f174b7f1c822380219617d02459d2e4a4e3ece5cca29c9d366d8f0a3558

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e801ac84cafa86444551b2b0ee2383a979a3d6f4f3036a4fd0cbea0d8df597d5
MD5 1e6dbe2da342c22cd33a3d3edcb5802c
BLAKE2b-256 2469ebd2f8b117c4fb5f33ce1284c100f5af06d0c6ba2769ad5df172b3c67503

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.11-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 b3dac0fa6a9ab06ebf8a623666886e83a789e335a61b84a72d097ab213d112b0
MD5 2a031efb14ca690a72d6c46f2368a33e
BLAKE2b-256 81b08432f91c4f1792429fa55b0699ee311ce88147867a1a782ee8115664a60d

See more details on using hashes here.

Provenance

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