Skip to main content

High-performance Python bindings for the BCSV (Binary CSV) library with pandas integration

Project description

PyBCSV — Python Bindings for BCSV Library

High-performance Python bindings for the BCSV (Binary CSV) library — fast, compact time-series storage with pandas integration.

Features

  • High Performance: Binary format with optional LZ4 compression and delta encoding
  • Pandas Integration: Columnar DataFrame read/write via numpy zero-copy
  • Type Safety: Preserves column types and data integrity (10 numeric types + strings)
  • Cross-platform: Linux (x86_64, ARM64), macOS (x86_64, ARM64), Windows (AMD64)
  • Context Managers: All readers/writers support with statements
  • Streaming I/O: Row-by-row read/write, never loads entire file into memory
  • Direct Access: Random-access reads by row index via ReaderDirectAccess
  • Sampler: Bytecode VM for server-side row filtering and column projection
  • CSV Interop: Convert between CSV and BCSV via from_csv() / to_csv()

Installation

pip install pybcsv

# With pandas support
pip install pybcsv[pandas]

Quick Start

Write and Read

import pybcsv

# Define schema
layout = pybcsv.Layout()
layout.add_column("id", pybcsv.INT32)
layout.add_column("name", pybcsv.STRING)
layout.add_column("value", pybcsv.DOUBLE)

# Write rows (context manager auto-closes)
with pybcsv.Writer(layout) as writer:
    writer.open("data.bcsv")
    writer.write_row([1, "Alice", 123.45])
    writer.write_row([2, "Bob", 678.90])

# Read all rows
with pybcsv.Reader() as reader:
    reader.open("data.bcsv")
    for row in reader:          # iterator protocol
        print(row)
    # or: all_rows = reader.read_all()

Pandas Integration

import pybcsv
import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie'],
    'value': [123.45, 678.90, 111.22]
})

# Write DataFrame (columnar path, numpy zero-copy for numerics)
pybcsv.write_dataframe(df, "data.bcsv")

# Read back as DataFrame
df_read = pybcsv.read_dataframe("data.bcsv")

CSV Conversion

import pybcsv

pybcsv.from_csv("input.csv", "output.bcsv")   # CSV → BCSV
pybcsv.to_csv("output.bcsv", "output.csv")    # BCSV → CSV

Polars Integration

Zero-copy Polars DataFrame I/O via the Arrow C Data Interface:

import pybcsv

# Read BCSV → Polars DataFrame (zero-copy via Arrow)
df = pybcsv.read_polars("data.bcsv")

# Write Polars DataFrame → BCSV
pybcsv.write_polars(df, "output.bcsv", row_codec="delta")

Install with the optional Polars dependency:

pip install pybcsv[polars]

Random Access

import pybcsv

with pybcsv.ReaderDirectAccess() as da:
    da.open("data.bcsv")
    print(f"Total rows: {len(da)}")
    row = da[42]         # read row 42 directly (O(1) seek)
    print(da.read(100))  # alternative syntax

Available Types

Constant Description
pybcsv.BOOL Boolean
pybcsv.INT8 / pybcsv.UINT8 8-bit integers
pybcsv.INT16 / pybcsv.UINT16 16-bit integers
pybcsv.INT32 / pybcsv.UINT32 32-bit integers
pybcsv.INT64 / pybcsv.UINT64 64-bit integers
pybcsv.FLOAT 32-bit float
pybcsv.DOUBLE 64-bit float
pybcsv.STRING Variable-length string

API Reference

Layout

layout = pybcsv.Layout()                              # empty layout
layout = pybcsv.Layout([ColumnDefinition("x", INT32)]) # from list

layout.add_column(name: str, type: ColumnType)
layout.add_column(col: ColumnDefinition)
layout.column_count() -> int
layout.column_name(index: int) -> str
layout.column_type(index: int) -> ColumnType
layout.has_column(name: str) -> bool
layout.column_index(name: str) -> int
layout.get_column_names() -> list[str]
layout.get_column_types() -> list[ColumnType]
layout.get_column(index: int) -> ColumnDefinition
len(layout)           # column count
layout[i]             # ColumnDefinition at index i

Writer

writer = pybcsv.Writer(layout: Layout, row_codec: str = "delta")
writer.open(filename: str, overwrite: bool = False,
            compression_level: int = 1, block_size_kb: int = 64,
            flags: FileFlags = FileFlags.BATCH_COMPRESS)  # raises RuntimeError on failure
writer.write_row(values: list)
writer.write_rows(rows: list[list])     # batch write
writer.flush()
writer.close()
writer.is_open() -> bool
writer.row_count() -> int
writer.row_codec() -> str
writer.compression_level() -> int
writer.layout() -> Layout

# Context manager
with pybcsv.Writer(layout) as w:
    w.open("out.bcsv")
    w.write_row([...])

Row codec options: "flat", "zoh" (zero-order hold), "delta" (default).

Reader

reader = pybcsv.Reader()
reader.open(filename: str)              # raises RuntimeError on failure
reader.read_next() -> bool              # advance to next row
reader.read_row() -> list | None        # read+advance, None at EOF
reader.read_all() -> list[list]         # read remaining rows
reader.close()
reader.is_open() -> bool
reader.layout() -> Layout
reader.row_pos() -> int                 # current row index
reader.row_value(column: int) -> Any    # typed value from current row
reader.row_dict() -> dict               # current row as {name: value}
reader.file_flags() -> FileFlags
reader.compression_level() -> int
reader.version_string() -> str
reader.creation_time() -> str
reader.count_rows() -> int              # total row count

# Iterator protocol
for row in reader:
    print(row)

# Context manager
with pybcsv.Reader() as r:
    r.open("data.bcsv")
    for row in r:
        print(row)

ReaderDirectAccess

Random-access reader — reads any row by index without scanning.

da = pybcsv.ReaderDirectAccess()
da.open(filename: str, rebuild_footer: bool = False)
da.read(index: int) -> list             # read row at index
da.row_count() -> int
da.layout() -> Layout
da.close()
da.is_open() -> bool
da.file_flags() -> FileFlags
da.compression_level() -> int
da.version_string() -> str
da.creation_time() -> str

len(da)               # row count
da[i]                 # read row at index i

CsvWriter / CsvReader

Native CSV I/O with the same Layout-based schema.

# Write CSV
csv_w = pybcsv.CsvWriter(layout, delimiter=',', decimal_sep='.')
csv_w.open(filename, overwrite=False, include_header=True)
csv_w.write_row(values)
csv_w.write_rows(rows)
csv_w.close()

# Read CSV
csv_r = pybcsv.CsvReader(layout, delimiter=',', decimal_sep='.')
csv_r.open(filename, has_header=True)
for row in csv_r:       # iterator support
    print(row)
csv_r.close()

Sampler

Bytecode VM for filtering and projecting rows from an open Reader.

reader = pybcsv.Reader()
reader.open("data.bcsv")

sampler = pybcsv.Sampler(reader)
sampler.set_conditional("col_a > 10")    # filter expression
sampler.set_selection("col_a, col_b")    # column projection

result = sampler.output_layout()         # SamplerCompileResult (bool-testable)
if result:
    for row in sampler:                  # iterate matching rows
        print(row)

FileFlags

pybcsv.FileFlags.NONE
pybcsv.FileFlags.ZERO_ORDER_HOLD
pybcsv.FileFlags.NO_FILE_INDEX
pybcsv.FileFlags.STREAM_MODE
pybcsv.FileFlags.BATCH_COMPRESS
pybcsv.FileFlags.DELTA_ENCODING

# Combinable with | and &
flags = pybcsv.FileFlags.BATCH_COMPRESS | pybcsv.FileFlags.NO_FILE_INDEX

Utility Functions

# Pandas integration (requires pandas)
pybcsv.write_dataframe(df, filename,
                       compression_level=1,
                       row_codec="delta",
                       type_hints=None)  # dict[str, ColumnType]
pybcsv.read_dataframe(filename, columns=None)  # -> pd.DataFrame

# CSV conversion (requires pandas)
pybcsv.from_csv(csv_file, bcsv_file, compression_level=1, type_hints=None)
pybcsv.to_csv(bcsv_file, csv_file)

# Columnar I/O (numpy arrays)
pybcsv.read_columns(filename) -> dict[str, np.ndarray | list[str]]
pybcsv.write_columns(filename, columns, col_order, col_types,
                     row_codec="delta", compression_level=1)
# Type utilities
pybcsv.type_to_string(column_type) -> str

Testing

pip install pybcsv[test]
python -m pytest tests/ -v

File Structure

python/
├── pybcsv/
│   ├── __init__.py           # Public API and exports
│   ├── __version__.py        # Version (setuptools-scm)
│   ├── bindings.cpp          # C++ nanobind bindings
│   └── pandas_utils.py       # Pandas/CSV integration
├── examples/
│   ├── basic_usage.py        # Core BCSV operations
│   ├── pandas_integration.py # DataFrame examples
│   ├── advanced_usage.py     # DirectAccess, Sampler, CSV, columnar I/O
│   └── performance_benchmark.py
├── tests/                    # 17 test modules (pytest)
├── benchmarks/               # Python benchmark runner
├── pyproject.toml
└── README.md

Known Limitations

  • Arrow string columns: 2 GB per batch. The Arrow C Data Interface uses utf8 format ("u") with int32 offsets, limiting the total byte size of any single string column within one batch to ~2 GB. An OverflowError is raised at runtime if this limit is exceeded. For most workloads this is not an issue. If you hit this limit, consider splitting data into smaller batches.

  • No native null/missing value support. BCSV is a fixed-width binary format without a null bitmap. When writing a pandas DataFrame with NaN/None values, they are coerced to zero, False, or empty string by default (with a warning). Use strict=True in write_dataframe() to reject NaN values instead.

Compatibility

  • Python: 3.11, 3.12, 3.13
  • Platforms: Linux (x86_64, ARM64), macOS (x86_64, ARM64), Windows (AMD64)
  • Compilers: GCC 13+, Clang 16+, MSVC 2022 17.4+, Apple Clang (Xcode 15.4+)
  • C++ Standard: C++20
  • Dependencies:
    • numpy >= 1.19.0 (required)
    • pandas >= 1.0.0 (optional — pip install pybcsv[pandas])

License

MIT — see LICENSE for details.

Publishing

Wheels are built automatically via GitHub Actions (cibuildwheel) and published using Trusted Publisher (OIDC) — no API tokens required.

  • TestPyPI: every push to main/master or version tags
  • PyPI: only on v* tags (e.g. git tag v1.4.0 && git push origin v1.4.0)
  1. Trigger the publish workflow:
  • The workflow triggers on pushes to the release branch or via manual workflow_dispatch.
  1. Install from TestPyPI for verification:
# in a fresh virtualenv
python -m venv venv && source venv/bin/activate
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple pybcsv
python -c "import pybcsv; print(pybcsv.__version__)"

If the import and version check succeed the wheel is good for release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybcsv-1.5.2.tar.gz (397.8 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.2-cp313-cp313-win_amd64.whl (370.4 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pybcsv-1.5.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (726.4 kB view details)

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

pybcsv-1.5.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (669.7 kB view details)

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

pybcsv-1.5.2-cp313-cp313-macosx_13_0_x86_64.whl (423.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

pybcsv-1.5.2-cp313-cp313-macosx_13_0_arm64.whl (393.8 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pybcsv-1.5.2-cp312-cp312-win_amd64.whl (370.4 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pybcsv-1.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (726.5 kB view details)

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

pybcsv-1.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (669.8 kB view details)

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

pybcsv-1.5.2-cp312-cp312-macosx_13_0_x86_64.whl (424.0 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

pybcsv-1.5.2-cp312-cp312-macosx_13_0_arm64.whl (393.8 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pybcsv-1.5.2-cp311-cp311-win_amd64.whl (370.5 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pybcsv-1.5.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (729.0 kB view details)

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

pybcsv-1.5.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (670.8 kB view details)

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

pybcsv-1.5.2-cp311-cp311-macosx_13_0_x86_64.whl (423.1 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pybcsv-1.5.2-cp311-cp311-macosx_13_0_arm64.whl (394.0 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: pybcsv-1.5.2.tar.gz
  • Upload date:
  • Size: 397.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pybcsv-1.5.2.tar.gz
Algorithm Hash digest
SHA256 f83a6320f8e97bc5e3b31089392297227b1a2536e9676ad7ec88b7ed1f71c9bc
MD5 fe3f1713f322ee6e90590ca541ee9cc6
BLAKE2b-256 8ea555fe34f5db4272f02d2d446b4bb388b97d3ae4f2c207e14bda135a377beb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 370.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pybcsv-1.5.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4c7c84ce34446289842e45a1033b919042b66af585293431af7287b17d03e36c
MD5 0d287ca8bae0115667a6cbf0d4889cb9
BLAKE2b-256 06c416a4aadfca8cfcbec2187bb284b5bd54729515dda66b0c74d57e278d2072

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2c1cf57a7810e6838abc4b9350e34ce0dd4154e41bcda95bc0bfd81e2a0b1cd
MD5 4c175acb00a0f990f17ffa90fcecb6f8
BLAKE2b-256 ae4b60fde1cea9443d38f7c9970f93716683a2a78531e31111b7464548161efb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a056d02af1f2e9bff153c1521c74572ee16e735059daebe73bf9d68c1f2c7a0d
MD5 e702f3019b2c1fd56e2d9db5b08b6b44
BLAKE2b-256 c8f73df5734c8e32886c6b8b20a553f2164b1233725e079bcd33e65aeb7811b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7d3824b9ae7d481acf3ada149e47ae8f5032bdaee527b77f0a10f803b9813516
MD5 b74c0a8c57879c65327fc739f5789610
BLAKE2b-256 dd2d0af920bc5ab655f43131f029626a037bc9e9ff19f796a800436fb3c5027b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6618d15fea005637bc4d0bd55e0ef3ec47496805c94532d7e1ff66859afb0776
MD5 33a9427d0c52d28e0e5c68bae56ed99b
BLAKE2b-256 32d6fb1b264d0b89176a1b6caec7ed2eca227b8cb031afce38ecd9fa2c7f6672

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 67b84a94cb48951923de95076433d3587a56976c97cdf23c8a54a4201d1fb764
MD5 a1d4b876abb89be75fe2f52a87825f57
BLAKE2b-256 e03e23d981e266611957bda2bf346153e0d4a732499ebb2a3baa2fa4dbfbb233

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 102000b40b85c591f13b29c8a1494d1b8447a1df47a64c9c8e213994cb8d4893
MD5 4925ce31baa5ab574dec019c11d1a1c7
BLAKE2b-256 a840b8ec3990c90ba52c41b8fb3c9d970424c4543f2e3630e74da6b6acc65898

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pybcsv-1.5.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 370.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pybcsv-1.5.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b0818654667310afb83655f50a24cc4c120564088a56ab4bd04bd24ae0ac01a6
MD5 33352c5e4fb3ee72cae46d89969429de
BLAKE2b-256 159a2d7b8c11aef2506d3ce8a512aefb5716b4c3d30aaf50295b6cfa9e50e669

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4a6f2b5aa6e4136a92b702aeea82739a98aaa6d1434ae5e4d1dccd004d352b9
MD5 63bda9a85f122b2ecb35ca088047a033
BLAKE2b-256 25f138c42694765760b6d546038768c7827c9fec0136dda871f03364d9c8a34b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c25f558aa75aed38d4d494213cfa716641b446e1823230d366e6d2cefd2c7d9a
MD5 2eabe66f2db8745ed3a79fe0193cbc26
BLAKE2b-256 b4bf582a9cabecd41186326d91cc75dfac3ab25abdfdfd9470c7129d985dda3e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d2398a2cfc561cce3f0f45d39c0c732c852bcd1b85b373b1e390b6f0ee1059ea
MD5 6188b53e4615ce910281e026bffd3817
BLAKE2b-256 b788152346b31108254cd434e7b9ddf445833559420a1df008bd6c17731b62ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 be3b378a049492f6dd89dac219f15081f6ca1eee455826d34d54f416200a50ed
MD5 a37a2b3855f8e65c7611fff88161576b
BLAKE2b-256 4ca1deaf05843a5e32849c1ba0d16b70752975288f86f170daff8c6b5a9fe5de

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 489eb5cdc4dc66ebdf55386e2d17fabeceab53eb708cec7cd827408e53ac4adf
MD5 660b59ef842a74ff101bc2ac961b255d
BLAKE2b-256 118fbfed00a268817e9daf7f396bd50b5a38daf962afd0e60b27d130e6e7c08f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d5a5cbe407961b0d78a64b69578ceb41e4d80990380ac1dd92c7beca798ae7bd
MD5 c2c9e15a9a6d7bdd468f88dab61bb23e
BLAKE2b-256 779223bf442da7dddc016c01a2452c96aa5d438c62cacb4f3f332ad09c65d830

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for pybcsv-1.5.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 32205ef52c03a22cc5ed41d139dbcf8677c6d0f247fb8be4053a59da7ef3ad76
MD5 fbc0e622b444bda0979a33233d2db79b
BLAKE2b-256 19263873f834e617dbdab38b862309c855de8d577757cbd25f49674a5f22db0b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f75e96067f4b211618a35bd71b1c926e7fd3448ec74b82f61e25e7e7c83d9b51
MD5 d61659b3edd95553e318e5d3704baaf3
BLAKE2b-256 e8dcd52efdc0d67713c13d9258d1b51491f83d1fd1faf8eb9f4c4b217ee8d7a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a4d1c710a69067d85f420930a0a233fb63e0f36997e781a0ee3a19abdf14ffa2
MD5 e569075cce5f307fbfca17d54e566273
BLAKE2b-256 6979bea68aae208969b290d47c020ef639e874456e08145b855c0491e5fbd732

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fff4e85186c583f32e334cb0fe2d31a42de920d7b69bcccd1dda397f7f558660
MD5 ec2236bd3a8cb4ecfc26c1b26b36636c
BLAKE2b-256 058ad920875ec1a855cf8be147fafd183b655b103d4dfccde8018f463ea38e1a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a57bbef9bbab2ddbf01fcbcfe817a09868dbe295e77e00178c2bf111a3f93fb2
MD5 a15c5516441f04e877cc9118ba286b40
BLAKE2b-256 ad953931576f91c0e441f8ae851c0733fe6ceb52c8012793ae7f1c37c34b9d84

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 38f5403e15e572e4ef78f9fdf4ad347958f1a3a9f7cd55732f8d40040323faa4
MD5 1b959b7722576e5ba60099520e742594
BLAKE2b-256 d02abf1fdbf9c3fa341034f176e0327f27864a8806b06969f8d358e13eca8f93

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pybcsv-1.5.2-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 db1b71d62b87c09ecd3d877e41f92d26094012ac81f4f9c3cd70ecc47ad2e368
MD5 51d79cc3de08d69136f5083213adf3b9
BLAKE2b-256 3f8f4b6c53b4070d0c2d358422713fbfc3ceaa81c39ce5f4090b8df3a843b2c3

See more details on using hashes here.

Provenance

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