Skip to main content

PyStreamXL

PyPI CI Python 3.9+ License: Apache 2.0

Stream large .xlsx files row-by-row with no full-sheet materialization, powered by a Rust core with no unsafe code.

What it is

PyStreamXL reads multi-sheet Excel workbooks without loading them fully into memory, extracts formulas and comments, writes new .xlsx files, and appends to existing ones — all through a small, plain Python API backed by a Rust engine. It installs as pystreamxl and imports as pystreamxl. Compared with openpyxl on large exports, the goal is bounded, row-by-row processing and faster wall-clock time than whole-sheet loaders. Process RSS still grows with allocator retention; see benchmarks/rss_stream.md.

Features / Highlights

  • Streaming reads — read() / stream() return a real Rust iterator; rows are parsed and yielded one at a time, not collected into a Python list up front.
  • Multi-sheet support — sheets(), read_all(), and writer().add_sheet().
  • Streaming writes — write(), writer(), and append() produce real .xlsx files; append() preserves other sheets.
  • Formula extraction — formula text plus a best-effort formula-type classification (with_formulas=True), FormulaReferenceMapper for shifting/rewriting references, and FormulaSerializer for exporting/importing formulas as JSON or CSV.
  • Formula dependency validation — detect_circular_references() / validate_formula_rows() find multi-cell cycles, self-references, and range-expanded dependencies; write(..., validate_formulas=True) rejects circular workbooks before export.
  • Comment extraction — cell comments and authors, via with_formulas=True.
  • Conditional formatting — conditional_formats() reads every <conditionalFormatting>/<cfRule> (type, operator, formulas, priority, stopIfTrue) and resolves dxfId against xl/styles.xml into concrete font/fill values.
  • Type-aware cells — strings, numbers, booleans, dates, datetimes, and empty cells round-trip correctly.
  • Error recovery & validation — validate_excel_file() and ErrorRecoveryHandler classify and optionally recover from malformed cells instead of hard-failing.
  • Security hardening — path validation, file-size limits, and ZIP-bomb defenses enforced before/while a file is opened; CSV export is sanitized against formula-injection.
  • Optional REST API — pystreamxl.server (requires pystreamxl[server]) wraps the streaming engine behind HTTP endpoints. No authentication — see limitations.

Who it's for / Use cases

  • ETL against large Excel exports that don't fit comfortably in memory with openpyxl — read() keeps memory flat regardless of file size.
  • Extracting formulas and comments for audit or migration tooling, not just cell values.
  • Appending to a growing log-style .xlsx file without rewriting the whole workbook or losing other sheets.
  • Data engineering pipelines that need a fast, dependency-light reader for .xlsx with an optional HTTP surface.

What it is not

  • No SQL-style query language. execute_query() in the REST API streams rows from a named sheet; it does not parse arbitrary queries.
  • No pandas/Parquet/Arrow export built in. Convert read()'s output yourself.
  • No formula evaluation. Formula text is extracted and classified, not recalculated. Dependency validation detects circular references; it does not resolve dynamic references such as INDIRECT/OFFSET.
  • The pystreamxl dashboard CLI renders sample data, not live telemetry. Every mode prints an explicit "SAMPLE DATA — not live" warning.
  • The optional REST server has no authentication. PyStreamXLServer / create_flask_app() have no login, API key, or token check — anyone who can reach the port can read and query every loaded source. Keep it on localhost or behind your own auth layer (reverse proxy, API gateway).
  • Prebuilt wheels are macOS arm64 only. Every PyPI release has shipped exactly one platform wheel plus an sdist; Linux/Windows/x86_64-mac users build from source, which requires a Rust toolchain and maturin.
  • Some listed release features are not reachable from Python. ~1,180 lines of Rust (collaboration detection, incremental recalculation, cross-sheet dependency analysis) compile and pass their own tests but are not referenced by python/src/lib.rs; see ROADMAP_HONEST.md.
  • Not all conditional-formatting detail is modeled. colorScale/dataBar/iconSet rules are captured at the type/sqref/priority level only; their inline color-stop and threshold definitions are not represented.

Project status

Production/stable core, with disclosed gaps. Current version 6.1.2 (Development Status :: 5 - Production/Stable). The read/write/stream engine is covered by the Rust and Python test suites and streams row-by-row without materializing the whole sheet (see benchmarks/rss_stream.md for process RSS evidence — ROADMAP_HONEST.md gap #10). The Production/Stable classifier is broader than the test coverage of every optional surface; the honest technical-debt list lives in ROADMAP_HONEST.md.

Installation

pip install pystreamxl

A prebuilt wheel is currently published only for macOS (arm64). Other platforms install from the source distribution, which requires a Rust toolchain (see rust-toolchain.toml) and maturin.

Requires Python 3.9+. The REST server extra:

pip install "pystreamxl[server]"

Quick start

import pystreamxl

for row in pystreamxl.read("data.xlsx"):
    print(row)  # ['Name', 'Age', 'Score']

Usage

Read as dictionaries, keyed by header row:

for row in pystreamxl.read("sales.xlsx", as_dict=True):
    print(row["Customer"], row["Amount"])

Read only specific columns:

for row in pystreamxl.read("sales.xlsx", as_dict=True, columns=["Customer", "Amount"]):
    ...

Read every sheet in a workbook:

sheet_names = pystreamxl.sheets("workbook.xlsx")
all_data = pystreamxl.read_all("workbook.xlsx")  # {sheet_name: [rows...]}

Write a new .xlsx file:

import datetime
import pystreamxl

pystreamxl.write("report.xlsx", [
    ["Name", "Joined", "Score"],
    ["Alice", datetime.date(2024, 1, 15), 95.5],
    ["Bob", datetime.date(2024, 3, 2), 88.0],
])

Stream-write multiple sheets without holding the whole file in memory:

with pystreamxl.writer("report.xlsx") as w:
    w.write_row(["Name", "Age"])
    w.write_row(["Alice", 30])
    w.add_sheet("Summary")
    w.write_row(["Total", 1])

Append rows to an existing file (other sheets are preserved):

pystreamxl.write("log.xlsx", [["Date", "Event"]])
pystreamxl.append("log.xlsx", [[datetime.date.today(), "started"]])
pystreamxl.append("log.xlsx", [[datetime.date.today(), "finished"]])

Extract formulas and comments:

from pystreamxl import FormulaSerializer

rows = list(pystreamxl.read("model.xlsx", with_formulas=True))
# each cell is a dict: {"value": ..., "formula": ..., "formula_type": ...,
#                        "comment": ..., "comment_author": ...}
FormulaSerializer.export_to_json(rows, "formulas.json")
FormulaSerializer.export_to_csv(rows, "formulas.csv")  # sanitized against CSV/formula injection

Validate formula dependencies before export:

from pystreamxl import FormulaCell, detect_circular_references

cycles = detect_circular_references([
    FormulaCell(0, 0, "=B1"),
    FormulaCell(0, 1, "=A1"),
])
# [['A1', 'B1', 'A1']]

pystreamxl.write("out.xlsx", rows, validate_formulas=True)  # raises on cycles

Export to CSV safely — untrusted cell content is never written verbatim:

import csv
import pystreamxl
from pystreamxl.security import sanitize_csv_cell

with open("output.csv", "w", newline="") as f:
    writer = csv.writer(f)
    for row in pystreamxl.read("large.xlsx"):
        writer.writerow([sanitize_csv_cell(cell) for cell in row])

Validate a file and recover from bad cells instead of crashing:

from pystreamxl import validate_excel_file

report = validate_excel_file("questionable.xlsx")
if report.has_fatal_errors():
    print(report.format_summary())

CLI:

pystreamxl dashboard          # sample extraction dashboard
pystreamxl dashboard --static # same sample data, clearly labeled "SAMPLE DATA — not live"
pystreamxl --version

Security

  • Path & size validation — validate_read_path() / validate_write_path() reject non-.xlsx paths, path traversal (when a base_dir is supplied), and oversized files before parsing.
  • ZIP-bomb defenses — per-entry size limit, compression-ratio limit, and total decompressed-size limit enforced by the Rust core (core/src/zip_reader.rs).
  • CSV / formula-injection protection — pystreamxl.security.sanitize_csv_cell() neutralizes string cells starting with =, +, -, @, TAB, or CR.
  • Known gap: the optional REST server has no authentication.

Enforced limits (by default): max file size 512 MB, max size per ZIP entry 512 MB, max total decompressed size 1 GB, max compression ratio 30:1. Handle malicious files with:

from pystreamxl import SecurityError, read

try:
    for row in read("data.xlsx"):
        process(row)
except SecurityError as e:
    print(f"Security violation: {e}")

Found a security issue? See SECURITY.md.

Documentation

Rows are yielded one at a time, and memory stays flat during iteration regardless of sheet size (fixed 2026-10-04; see ROADMAP_HONEST.md gap #10). The pyproject.toml description cites 3.8–5.6x faster than openpyxl in this repo's committed benchmarks (benchmarks/results.md). That is an openpyxl baseline: python-calamine is much faster at whole-sheet loads (see benchmarks/calamine_vs_pystreamxl.md), so choose PyStreamXL for bounded-memory streaming, not raw speed. Actual numbers depend heavily on file structure, so measure on your own workloads rather than trusting a generic table.

Known issues and deferred work

Blocked / failed:

  • Windows wheel — local cross-compile toolchain fails; use the GitHub release workflow.

Rejected / deferred:

  • SQL query language, formula recalculation, dashboard.

Full shipped/blocked/rejected detail: QUEUE_STATUS.md.

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a PR. See CODE_OF_CONDUCT.md for community expectations.

git clone https://github.com/Mullassery/PyStreamXL.git
cd PyStreamXL
pip install -e ".[dev]"        # builds the Rust extension via maturin and installs test deps
pytest tests/ -v
cargo test --release --all-features

License

This project is licensed under the Apache License 2.0.

Metadata

Release files for pystreamxl 6.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pystreamxl 6.2.0
File Size Uploaded Provenance Actions
pystreamxl-6.2.0.tar.gz 92.4 kB Without provenance Details for pystreamxl-6.2.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for pystreamxl 6.2.0
File Actions
pystreamxl-6.2.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pystreamxl-6.2.0-cp312-cp312-win_amd64.whl
pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details for pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pystreamxl-6.2.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for pystreamxl-6.2.0-cp312-cp312-macosx_11_0_arm64.whl
pystreamxl-6.2.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details for pystreamxl-6.2.0-cp312-cp312-macosx_10_12_x86_64.whl
pystreamxl-6.2.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pystreamxl-6.2.0-cp311-cp311-win_amd64.whl
pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details for pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pystreamxl-6.2.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for pystreamxl-6.2.0-cp311-cp311-macosx_11_0_arm64.whl
pystreamxl-6.2.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details for pystreamxl-6.2.0-cp311-cp311-macosx_10_12_x86_64.whl
pystreamxl-6.2.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pystreamxl-6.2.0-cp310-cp310-win_amd64.whl
pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details for pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pystreamxl-6.2.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for pystreamxl-6.2.0-cp310-cp310-macosx_11_0_arm64.whl
pystreamxl-6.2.0-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details for pystreamxl-6.2.0-cp310-cp310-macosx_10_12_x86_64.whl

Total release size: 19.9 MB

Release files / pystreamxl-6.2.0.tar.gz

Download URL pystreamxl-6.2.0.tar.gz
Size 92.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d9c70f0843545d8532d0fbcc891c5d6eaf547409f376195393c5f79fcbfc3773
BLAKE2b-256 checksum
How to use checksums
b432014456b36da96d842b359fd650c3ca59f82fe152be28c47d7155f3bed156
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp312-cp312-win_amd64.whl

Download URL pystreamxl-6.2.0-cp312-cp312-win_amd64.whl
Size 1.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c3912fcdabf84f91587b1c9ad36c074703278f3ac8e1ad7ea191a4132d8170b2
BLAKE2b-256 checksum
How to use checksums
39b69d0858308b9136e628814210dafaca3d72d67fdefc57c0672e8bab9c694f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
75b57d641fef88e5b046458815a3da2190bd5fd4267827d528256bad101bcd43
BLAKE2b-256 checksum
How to use checksums
08821158053d241cc59bb458405250082ef9f68aa06b3856a91302424b404955
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pystreamxl-6.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.4 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
ce22b01beaf1df5e7c25d01f20c746d37e348c31e6b57821a2e2878438e973db
BLAKE2b-256 checksum
How to use checksums
1e956e3ecbf423447675d9f9effa627be2b415b05b694f3c60ac0c841eca63a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pystreamxl-6.2.0-cp312-cp312-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b35ece60dc443cadccf7e5a7e1e666b4d033dff6b56a9b0a961b78f3cdca5dcf
BLAKE2b-256 checksum
How to use checksums
b93ec8cb1c68aba2151e5ddd5f06b0d1d2f786a0338c2ba8afb84245121f77a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL pystreamxl-6.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 1.4 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
de5462bce8770a80eba5c026c43b8abb8c81e599edd441121dcf1b769f3be073
BLAKE2b-256 checksum
How to use checksums
55ee699c08b4293d218c313b468a00c5384e6abdd01392ffe1ad9e2fed10345f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp311-cp311-win_amd64.whl

Download URL pystreamxl-6.2.0-cp311-cp311-win_amd64.whl
Size 1.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
3db34df2467b077207c726e63bc5e3d5a2e1b3b56f157ce3927c9e5a865965d0
BLAKE2b-256 checksum
How to use checksums
b162fafb90278ce3a1f0364daadcdc812c108e2f355302f9e8343f8c14e516e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d59b294db8dddae0a4e5aa6c6f835c14af1b7a6985d2b8045265520854084b4d
BLAKE2b-256 checksum
How to use checksums
db83cd37c36fab1026818144a180925b81739afa78d724ae090258a39dbb6458
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pystreamxl-6.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.4 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
76de56c4d1eb0032beca80918a068afa4edf7508f20789bd3c9b17d87030b01a
BLAKE2b-256 checksum
How to use checksums
840b5ffa102fd37a57a56806423168cfa89cbe7ac2860a973a1a399efb9992a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pystreamxl-6.2.0-cp311-cp311-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ba6bdbf1d093ba621004f974e4a117e3bdecb9538650f38a782c3146c0bf5b5c
BLAKE2b-256 checksum
How to use checksums
9606671589caef02d3b2b40c8a029531f295901b4e6b4e2339311a03f588c640
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL pystreamxl-6.2.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 1.3 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
282c2ced0959cb41096922bdd01fe3d75397bdec29309554f42f6b3ddb0225dc
BLAKE2b-256 checksum
How to use checksums
090b1503759c86b77df4140e1eb1157edfc0fc9f0e04d2b1456046f74c012c41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp310-cp310-win_amd64.whl

Download URL pystreamxl-6.2.0-cp310-cp310-win_amd64.whl
Size 1.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
5c5f277ff3f0ddec3b9bafe1e8311dbfd61edb2c80ee8fda494f26099608b1d9
BLAKE2b-256 checksum
How to use checksums
27fd15772462e26c69db412db9f36786e8c3610aa21e0cc01062d24cec4c5515
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9cc7c3d77015db3443070f2490e515919b67b01472857bfbcef95a7c0cd1e492
BLAKE2b-256 checksum
How to use checksums
cefe491d44f6bfb36d5f422995ccf2e71776e281588936971c85806765a0eb85
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pystreamxl-6.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.4 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
e7fd6a230fb734fbe6faa2be8ff782181f968ae6fa0439598ffdcd7499bc0753
BLAKE2b-256 checksum
How to use checksums
c116e1a0eb0e8d7bdc9c78584a3ff3bb132bbe0d3ac495cf683b2dd59b1e0baa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL pystreamxl-6.2.0-cp310-cp310-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1551c813461348b62e9ff22eb3df2f29d4a3fe8fa7bee4c868247b5881a3a64c
BLAKE2b-256 checksum
How to use checksums
7dba595b5c205e5854aa3d16a44161bd164d18b793e4b402e739d44a95f173c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pystreamxl-6.2.0-cp310-cp310-macosx_10_12_x86_64.whl

Download URL pystreamxl-6.2.0-cp310-cp310-macosx_10_12_x86_64.whl
Size 1.4 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
dd18957679c30c62ecfda566acdd3996e99ad3832b8a87b751185e99638ec7bb
BLAKE2b-256 checksum
How to use checksums
1f9d8f9df185883f6c4b58bbf9a4442068e1c5d4b42a37a5efb06a31c79c51ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for pystreamxl 6.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page