Skip to main content

A fast, memory-efficient spreadsheet I/O library for Python, powered by Rust

Project description

OpenSheet Core — Fast, memory-efficient spreadsheet I/O for Python, powered by Rust

CI PyPI License: MIT Python 3.9–3.13 Coverage

Features  •  Benchmarks  •  Installation  •  Quick Start  •  API  •  Roadmap  •  Contributing


Why OpenSheet Core?

Existing Python spreadsheet libraries force you to choose between performance, memory efficiency, broad format support, and easy installation. OpenSheet Core eliminates that tradeoff with a native Rust core exposed through a clean Python API — installable with a single pip install.

Features

  • Streaming XLSX reader — row-by-row iteration without loading the entire file into memory
  • Streaming XLSX writer — write millions of rows with constant memory usage
  • Formula support — read and write formulas with optional cached values
  • Date/time support — read and write datetime.date and datetime.datetime cells with automatic Excel serial number conversion
  • Merged cells — read and write merged cell ranges
  • Column widths & row heights — set and read custom column widths and row heights
  • Freeze panes — freeze rows and/or columns so they stay visible when scrolling
  • Auto-filter — add drop-down filter controls to column headers
  • Number formats — write and read cells with custom number formats (currency, percentage, custom format strings)
  • Cell styling — fonts (bold, italic, underline, name, size, color), fills, borders (thin, medium, thick, dashed, dotted, double), alignment (horizontal, vertical, wrap text, rotation), and number formats on styled cells
  • Typed cell extraction — strings, numbers, booleans, dates, datetimes, formulas, and empty cells are returned as native Python types
  • Context manager support — Pythonic with statement for safe resource management
  • AI/RAG-ready — convert spreadsheets to markdown tables, embedding-sized chunks, or plain text for LLM and RAG pipelines
  • Cross-platform — tested on Linux, macOS, and Windows across Python 3.9–3.13
  • Pandas integration — read XLSX files into DataFrames and write DataFrames to XLSX (pip install opensheet-core[pandas])
  • Zero Python dependencies — single native extension, no dependency tree to manage

Benchmarks

Benchmarked against openpyxl 3.1.5 on a 100,000-row x 10-column dataset (1M cells), 5 interleaved runs, current RSS measurement (not high-water mark):

Operation OpenSheet Core openpyxl Speedup Memory (RSS delta)
Write 2.3s 3.7s 1.6x faster 1.7x less (1.2 MB vs 2.1 MB)
Read 253ms 3.5s 13.8x faster 2.5x less (13.5 MB vs 33.3 MB)

OpenSheet Core is faster and uses less memory for both reads and writes. The speed advantage comes from a Rust streaming parser with deferred shared-string resolution — strings are stored as indices during parsing and only converted to Python objects at the boundary. Write memory is low because the Rust writer streams data directly to disk.

Run it yourself: python benchmarks/benchmark.py

See the Benchmarking Methodology doc for details on how we measure and avoid common benchmarking pitfalls.

Installation

pip install opensheet-core

# With pandas support
pip install opensheet-core[pandas]

From source (requires Rust toolchain)

pip install maturin
git clone https://github.com/0xNadr/opensheet-core
cd opensheet-core
maturin develop --release

Quick Start

Reading an XLSX file

from opensheet_core import read_xlsx, read_sheet

# Read all sheets
sheets = read_xlsx("report.xlsx")
for sheet in sheets:
    print(f"Sheet: {sheet['name']}")
    for row in sheet["rows"]:
        print(row)  # List of typed Python values

# Read a specific sheet
rows = read_sheet("report.xlsx", sheet_name="Data")

Writing an XLSX file

from opensheet_core import XlsxWriter

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Data")
    writer.write_row(["Name", "Age", "Active"])
    writer.write_row(["Alice", 30, True])
    writer.write_row(["Bob", 25, False])

Writing dates

import datetime
from opensheet_core import XlsxWriter

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Events")
    writer.write_row(["Event", "Date", "Timestamp"])
    writer.write_row(["Launch", datetime.date(2025, 3, 15), datetime.datetime(2025, 3, 15, 14, 30)])

Merging cells

from opensheet_core import XlsxWriter

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Report")
    writer.write_row(["Title spanning three columns", "", ""])
    writer.write_row(["A", "B", "C"])
    writer.merge_cells("A1:C1")

Column widths and row heights

from opensheet_core import XlsxWriter

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Data")
    writer.set_column_width("A", 25.0)   # By letter
    writer.set_column_width(1, 15.0)     # By 0-based index
    writer.set_row_height(1, 30.0)       # Row 1 (1-based)
    writer.write_row(["Name", "Age"])
    writer.write_row(["Alice", 30])

Freeze panes

from opensheet_core import XlsxWriter

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Data")
    writer.freeze_panes(row=1, col=0)    # Freeze top row
    writer.write_row(["Header1", "Header2", "Header3"])
    writer.write_row(["data", "data", "data"])

Auto-filter

from opensheet_core import XlsxWriter

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Data")
    writer.write_row(["Name", "Age", "City"])
    writer.write_row(["Alice", 30, "NYC"])
    writer.write_row(["Bob", 25, "LA"])
    writer.auto_filter("A1:C1")

Number formats

from opensheet_core import XlsxWriter, FormattedCell

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Finance")
    writer.write_row(["Item", "Price", "Tax Rate"])
    writer.write_row([
        "Widget",
        FormattedCell(19.99, "$#,##0.00"),   # Currency
        FormattedCell(0.08, "0.00%"),         # Percentage
    ])

Cell styling

from opensheet_core import XlsxWriter, CellStyle, StyledCell

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Report")
    # Bold header with fill color
    writer.write_row([
        StyledCell("Name", CellStyle(bold=True, fill_color="4472C4", font_color="FFFFFF")),
        StyledCell("Score", CellStyle(bold=True, fill_color="4472C4", font_color="FFFFFF")),
    ])
    # Data with borders and alignment
    writer.write_row([
        StyledCell("Alice", CellStyle(border="thin", horizontal_alignment="left")),
        StyledCell(95, CellStyle(border="thin", number_format="0.0")),
    ])

Writing formulas

from opensheet_core import XlsxWriter, Formula

with XlsxWriter("output.xlsx") as writer:
    writer.add_sheet("Budget")
    writer.write_row(["Item", "Cost"])
    writer.write_row(["Rent", 1200])
    writer.write_row(["Food", 400])
    writer.write_row(["Total", Formula("SUM(B2:B3)", cached_value=1600)])

Pandas integration

import pandas as pd
from opensheet_core import read_xlsx_df, to_xlsx

# Read XLSX into a DataFrame
df = read_xlsx_df("data.xlsx", sheet_name="Sheet1")

# Write a DataFrame to XLSX
df = pd.DataFrame({"Name": ["Alice", "Bob"], "Age": [30, 25]})
to_xlsx(df, "output.xlsx", sheet_name="Results")

AI/RAG extraction

from opensheet_core import xlsx_to_markdown, xlsx_to_text, xlsx_to_chunks

# Convert to a markdown table (great for LLM prompts)
md = xlsx_to_markdown("data.xlsx")

# Plain text extraction for search indexes
text = xlsx_to_text("data.xlsx", delimiter="\t")

# Embedding-sized chunks for RAG pipelines (header repeated per chunk)
chunks = xlsx_to_chunks("data.xlsx", max_rows=50)

LangChain integration

from opensheet_core.langchain import OpenSheetLoader

# Markdown mode (default) — one document per file
loader = OpenSheetLoader("data.xlsx")
docs = loader.load()

# Chunked mode — multiple documents for RAG
loader = OpenSheetLoader("data.xlsx", mode="chunks", max_rows=25)
docs = loader.load()

LlamaIndex integration

from opensheet_core.llamaindex import OpenSheetReader

reader = OpenSheetReader()
docs = reader.load_data("data.xlsx")

# Use with SimpleDirectoryReader
from llama_index.core import SimpleDirectoryReader
reader = SimpleDirectoryReader(
    input_dir="./data",
    file_extractor={".xlsx": OpenSheetReader()},
)

API Reference

read_xlsx(path: str) -> list[dict]

Reads an XLSX file and returns a list of dicts with "name" (str), "rows" (list of lists), "merges" (list of range strings like "A1:C1"), "column_widths" (dict of 0-based col index to width), "row_heights" (dict of 0-based row index to height), "freeze_pane" (tuple of (rows_frozen, cols_frozen) or None), and "auto_filter" (range string like "A1:C1" or None). Each cell is a typed Python value (str, int, float, bool, datetime.date, datetime.datetime, Formula, FormattedCell, or None).

read_sheet(path, sheet_name=None, sheet_index=None) -> list[list]

Reads a single sheet by name or index. Returns the first sheet by default.

sheet_names(path: str) -> list[str]

Returns the list of sheet names in a workbook.

XlsxWriter(path: str)

Streaming XLSX writer. Use as a context manager.

Method Description
add_sheet(name: str) Create a new worksheet
write_row(values: list) Write a row of values to the current sheet
merge_cells(range: str) Merge a range of cells (e.g. "A1:C1")
set_column_width(column, width) Set column width (column is a letter or 0-based int)
set_row_height(row, height) Set row height in points (row is 1-based)
freeze_panes(row=0, col=0) Freeze top row rows and left col columns
auto_filter(range) Set auto-filter on a range (e.g. "A1:C1")
close() Finalize and close the file

read_xlsx_df(path, sheet_name=None, sheet_index=None, header=True)

Reads a single XLSX sheet into a pandas DataFrame. Requires pip install opensheet-core[pandas]. When header=True (default), the first row is used as column names. Formulas are unwrapped to cached values, FormattedCell values are unwrapped to plain numbers.

to_xlsx(df, path, sheet_name="Sheet1", header=True, index=False)

Writes a pandas DataFrame to an XLSX file. Handles numpy int/float/bool types, NaN/NaT (written as empty cells), and datetime64/Timestamp columns. Set index=True to include the DataFrame index as column(s).

CellStyle(**kwargs)

Style properties for a cell. All parameters are keyword-only. Properties: bold (bool), italic (bool), underline (bool), font_name (str), font_size (float), font_color (str, hex RGB), fill_color (str, hex RGB), border (str, shorthand for all 4 sides), border_left/border_right/border_top/border_bottom (str: "thin", "medium", "thick", "dashed", "dotted", "double"), border_color (str, hex RGB), horizontal_alignment (str: "left", "center", "right"), vertical_alignment (str: "top", "center", "bottom"), wrap_text (bool), text_rotation (int, 0-180), number_format (str, Excel format code).

StyledCell(value, style: CellStyle)

A cell value with styling. Pass as a cell value in write_row(). Returned by read_xlsx() and read_sheet() for cells that have visual styling. The inner value can be a string, number, bool, date, datetime, or formula.

FormattedCell(value, number_format: str)

A numeric value with a custom Excel number format code. Pass as a cell value in write_row(). Returned by read_xlsx() for cells with non-default number formats. Common format codes: "$#,##0.00" (currency), "0.00%" (percentage), "#,##0" (thousands separator).

Formula(formula: str, cached_value=None)

Represents a spreadsheet formula. Pass as a cell value when writing, and received when reading cells that contain formulas.

xlsx_to_markdown(path, sheet_name=None, sheet_index=None, header=True) -> str

Converts an XLSX file to markdown table(s). When multiple sheets are converted, each table is preceded by a ## Sheet Name heading. Formulas, FormattedCell, and StyledCell values are automatically unwrapped to their plain display values.

xlsx_to_text(path, sheet_name=None, sheet_index=None, delimiter="\t") -> str

Converts an XLSX file to plain text with one row per line, cells separated by the delimiter (default: tab). Suitable for search indexes and simple text pipelines.

xlsx_to_chunks(path, sheet_name=None, sheet_index=None, max_rows=50, header=True) -> list[str]

Splits an XLSX file into embedding-sized markdown table chunks. Each chunk contains at most max_rows data rows with the header row repeated at the top for self-contained context. Ideal for RAG pipelines.

OpenSheetLoader(file_path, mode="markdown", ...) (LangChain)

LangChain document loader. Requires pip install langchain-core. Modes: "markdown" (default), "text", "chunks". Supports sheet_name, sheet_index, header, max_rows, and delimiter options. Use loader.load() or loader.lazy_load().

OpenSheetReader(mode="markdown", ...) (LlamaIndex)

LlamaIndex data reader. Requires pip install llama-index-core. Modes: "markdown" (default), "text", "chunks". Call reader.load_data(file_path) with optional sheet_name, sheet_index, and extra_info arguments. Compatible with SimpleDirectoryReader via file_extractor.

Architecture

┌──────────────────────────┐
│      Python API          │  ← opensheet_core (PyO3 bindings)
├──────────────────────────┤
│      Rust Core           │  ← Streaming parser & writer
│  ┌────────┐ ┌──────────┐ │
│  │ Reader │ │  Writer  │ │
│  │ (SAX)  │ │ (Stream) │ │
│  └────────┘ └──────────┘ │
├──────────────────────────┤
│  quick-xml  │    zip     │  ← Dependencies
└──────────────────────────┘

Feature Comparison vs openpyxl

OpenSheet Core is designed to be a faster, memory-efficient alternative to openpyxl for the most common spreadsheet workflows. Here's where we stand:

What we already do better

OpenSheet Core openpyxl
Write 1M cells ~2.3s ~3.7s
Read 1M cells ~0.25s ~3.5s
Write memory 1.2 MB RSS delta 2.1 MB RSS delta
Read memory 13.5 MB RSS delta 33.3 MB RSS delta
Python dependencies Zero Several
Architecture Rust streaming core Pure Python DOM

Memory optimization: shared strings are stored as indices during parsing and resolved to Python objects at the boundary via pre-interned lookup, avoiding duplicate string allocations. A future streaming iterator API will bring constant-memory reads.

Feature coverage

Category Feature openpyxl OpenSheet Core
Formats .xlsx read/write Yes Yes
.xlsm (macro-enabled) Yes Planned
.xltx/.xltm (templates) Yes
Cell Types Strings, numbers, booleans Yes Yes
Dates and datetimes Yes Yes
Formulas with cached values Yes Yes
Rich text Yes Planned
Error values Yes Planned
Styling Fonts (name, size, bold, italic, color) Yes Yes
Fill (solid, pattern, gradient) Yes Solid
Borders (14 styles) Yes 6 styles
Alignment (horizontal, vertical, wrap, rotation) Yes Yes
Number formats (30+ builtins + custom) Yes Yes
Named styles Yes Planned
Conditional formatting (6 rule types) Yes Planned
Worksheet Merged cells Yes Yes
Freeze panes Yes Yes
Auto-filter Yes Yes
Column widths / row heights Yes Yes
Data validation (7 types) Yes Planned
Sheet protection Yes Planned
Row/column insert/delete Yes
Print settings Yes Planned
Row/column grouping Yes
Workbook Named ranges / defined names Yes Planned
Document properties Yes Planned
Workbook protection Yes
Multiple sheet states (hidden, veryHidden) Yes Planned
Charts 12+ chart types (bar, line, pie, scatter, etc.) Yes Planned
3D variants and combined charts Yes
Images Embed PNG/JPEG Yes Planned
Tables Structured tables with styles Yes Planned
Pivot Tables Read/preserve existing Yes
VBA/Macros Preserve on load (.xlsm) Yes Planned
Integration Pandas DataFrame I/O Yes Yes
NumPy type support Yes Yes
AI/RAG Markdown/text extraction for LLMs Yes
Embedding-sized chunking Yes
LangChain / LlamaIndex loaders Yes
Performance Streaming read (constant memory) Yes (read_only mode) Yes (default)
Streaming write (constant memory) Yes (write_only mode) Yes (default)

Legend: Yes = implemented, Planned = on the roadmap, — = not planned for now

Our approach

We are not trying to clone openpyxl. We are building a fast, safe, memory-efficient core for the most common Excel workflows. The goal is to cover the ~80% of features that people use day-to-day, while being up to 14x faster and using 2–3x less memory. Streaming is the default, not an opt-in mode.

Roadmap

Done

  • XLSX reading with typed cell extraction
  • Streaming XLSX writing with low memory usage
  • Formula read/write support with cached values
  • Date/time cell support with automatic serial number conversion
  • Merged cell metadata (read and write)
  • Python bindings via PyO3
  • Type stubs (.pyi) and py.typed marker for IDE autocomplete
  • CI across Linux, macOS, Windows (Python 3.9–3.13)
  • Prebuilt wheels on PyPI
  • Benchmarks vs openpyxl
  • Runnable benchmark script (python benchmarks/benchmark.py)
  • Zero Python dependencies
  • Column widths and row heights
  • Freeze panes
  • Auto-filter
  • Number formats (currency, percentage, custom format strings)
  • Pandas DataFrame integration (read_xlsx_df / to_xlsx)
  • Basic cell styling (fonts, fills, borders, alignment)
  • xlsx_to_markdown() — structured markdown tables for LLM consumption
  • xlsx_to_text() — plain text extraction for search indexes
  • xlsx_to_chunks() — embedding-sized chunks with header attachment
  • LangChain OpenSheetLoader document loader
  • LlamaIndex OpenSheetReader data connector

Phase 2 — Broader compatibility

  • Named ranges / defined names
  • Data validation
  • Comments and hyperlinks
  • .xlsm read support (preserve macros)
  • Sheet protection
  • Structured tables with styles
  • Multiple sheet states (hidden, veryHidden)

Phase 3 — Rich content and ecosystem

  • Charts (bar, line, pie, scatter — most common types)
  • Image embedding (PNG, JPEG)
  • Conditional formatting
  • Document and custom properties
  • NumPy type support
  • Broader test corpus and fuzzing
  • Security hardening (XML attack prevention)

Docs & community

  • Migration guide: openpyxl → opensheet-core (side-by-side code comparisons)
  • FastAPI/Flask streaming XLSX download examples
  • Benchmark methodology documentation
  • Dedicated benchmark page with chart visualizations

Project Status

v0.2.0 — streaming reader and writer with formula, date/time, merged cell, column width/row height, freeze pane, auto-filter, number format, cell styling, pandas DataFrame support, and AI/RAG extraction (markdown, text, chunks, LangChain, LlamaIndex). 200 passing tests and prebuilt wheels on PyPI. The API may change before 1.0.

Contributing

Contributions are welcome! Here are some great ways to get involved:

  • Report bugs or real-world spreadsheet edge cases
  • Submit representative sample files for testing
  • Suggest benchmark scenarios
  • Improve documentation
  • Open PRs for roadmap items

License

MIT


Built with Rust and PyO3  |  Open digital infrastructure for the Python ecosystem

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

opensheet_core-0.2.1.tar.gz (90.6 kB view details)

Uploaded Source

Built Distributions

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

opensheet_core-0.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

opensheet_core-0.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (599.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (595.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp314-cp314-win_amd64.whl (497.5 kB view details)

Uploaded CPython 3.14Windows x86-64

opensheet_core-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (598.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp314-cp314-macosx_11_0_arm64.whl (562.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

opensheet_core-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl (588.4 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

opensheet_core-0.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (595.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp313-cp313-win_amd64.whl (497.4 kB view details)

Uploaded CPython 3.13Windows x86-64

opensheet_core-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (598.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (563.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

opensheet_core-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl (588.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

opensheet_core-0.2.1-cp312-cp312-win_amd64.whl (497.6 kB view details)

Uploaded CPython 3.12Windows x86-64

opensheet_core-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (598.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (563.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

opensheet_core-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl (588.6 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

opensheet_core-0.2.1-cp311-cp311-win_amd64.whl (499.9 kB view details)

Uploaded CPython 3.11Windows x86-64

opensheet_core-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (613.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (597.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (563.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

opensheet_core-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl (589.5 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

opensheet_core-0.2.1-cp310-cp310-win_amd64.whl (500.0 kB view details)

Uploaded CPython 3.10Windows x86-64

opensheet_core-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (613.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (597.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (616.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (600.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

File details

Details for the file opensheet_core-0.2.1.tar.gz.

File metadata

  • Download URL: opensheet_core-0.2.1.tar.gz
  • Upload date:
  • Size: 90.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for opensheet_core-0.2.1.tar.gz
Algorithm Hash digest
SHA256 617e989e1656181e59db8a6ec6e55ce112b7dee9b83634334e222e0e93f0fa8e
MD5 d4bb335d37caa1beeee6d0fe3db3b597
BLAKE2b-256 9a64d96d071b2d89e003674dd3f33d3a5db5fbca95150db256760e334066c3d7

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1fd71bd3100569a523697111d06c0a27277816473f5cd086e3ddc920f81b77c
MD5 ac1877553f638533d014e0fd9a70d44c
BLAKE2b-256 bde85343403c08d4539a66f0199f02c6d8c0ab1fe241fc81538bf97c264dcda2

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5f3ec032425f10a5bdb4f5c146edf4e4d0047c998af709a5978d4f9108e9338a
MD5 2ae3cbcce74c1bede248f656dcb6a9f1
BLAKE2b-256 98fcda047a27564db7c2ace69be4ecd424bca2ee148f1eefd2c4cd40415952be

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0429ddb8469be4a9aae53be2c3a1613af998529c9890e756efe4f1890ebd4588
MD5 36aa4277a1ff125baafe092d088cbe84
BLAKE2b-256 5cf24effab15014680a3024f6c02c09bc92d905adff7d1d0dfd5183de7b9d5e2

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0f8d94b8f0d920ec7b36868ed70f1101bcf2c25a0c1803b857c4129cdc44853d
MD5 b5f3ec290585bbd21eb3be692a831cc0
BLAKE2b-256 b55433132970dbbf027b09d6d111ec5ed3a9aee7f95af81683a9ccb01ad65eee

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0a3c313d9fcb7f91d43f6b7825dffb45da372f07716e7ee190bd441f10eeec1
MD5 cdfa94c325ec996e505290b72b59dc22
BLAKE2b-256 fe6f9fa0afc9f45ab18f8eee5ef2eb7d9fb35290c95f79ad74ea09fb6adfbcd6

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 84b3492139ccac6f6a69a151a25f39bc50d65814f60f8137dd8e08678f2f84fe
MD5 9b8d2e596260a70191800f1c8990ffc2
BLAKE2b-256 ee7226e897b370dfeb885ad9649eb1fd76bc95c1ff294ee20ffa46b11291ecb4

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f4b61dbcc586e89f699ee39c4776d5cf6bec1125796209adf49bbebacc70c94
MD5 ffc9b26f317636072f9efaa95a854ccb
BLAKE2b-256 5bcbcb0ff39812365cb932cd8cc92a0307eafaa8cb7d37488757f2831b517246

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7a20d950976d9c962cba42ba7219db39be96169158ca179912577af6819c3014
MD5 20fdbc30788d0a312a50314a562d52f5
BLAKE2b-256 f83738673cfcdd37c22d856645c6a9f826b23414e0f272bca77088832440dd97

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5e8a1b7e744914a0b36a07d312c7f81e024de51d97ae30a783215aa019179b89
MD5 49f3af946e2b7eb8306c4bbb0950a464
BLAKE2b-256 95aefebd758cc8be0410f63ab8c4404e0b08699c485935a0c0e71caded87b837

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 01ace624109ade853886ba1bde921d7206d5fee0da3d0c9f3ad53f0b9255aeff
MD5 e5eac9f715ba95cc29ecd7edb14e6a1e
BLAKE2b-256 74cc85e12806f76245e2a7d35e3895a300556616353bf57e556ca9dfa0ce6976

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6673c3b97b22e3f0fb46d1d11e9ed970a7e2ea466a6583c24a750f1649008e4b
MD5 a826f578c739a0d201e3e17bf49c4e26
BLAKE2b-256 b8babf68ccdb5008ca7847e8731f126f70d55b89ed95ab92ddc2d40bd15e2bee

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a82899eaa0704c1a6134658dc8579e293471c7160f252a085e3e398b9fb872d0
MD5 322f49e482deb421b74d21607482aa2a
BLAKE2b-256 363e2c6d81ba05ec528144cda1b6cf3433917d94f517e85c4a711636c9cc9eb0

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 848275a6673ecefdb7c7dc93182e62744269a766d3b41943c2b5978608052c87
MD5 5003a34fd06375e8907bd523e6084c04
BLAKE2b-256 31000b137d0e69d859ee7f421b3303d065a4a5cf93b48df486e7a5fd0f667256

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e738c085f9db3c3ef829802bbfd34c7a130c3b0c035d6b2126e8d3ef209583bf
MD5 72cec52b760e1be09bdebd23aa6854e3
BLAKE2b-256 0b18b726727c5791e371f0efd4979c97307b9eb4b67493f46456fd183dd18bff

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4739ee9057e2b958cf06348c54651087151b3d0f3d89b21ceb9f8561cfcb0a82
MD5 633a77e61d2c79f33c0fbac5e7821c04
BLAKE2b-256 b604cccdcc54bad6edc1c1c168c80e6c845e1783139f8565c5f82e29ac3fcf9c

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0cf9411a020b27f4abdf101578001e269218f75b2f2927ad18a58bdf5ac0e050
MD5 d05d805b9c6b6fab7221609e1a1be21f
BLAKE2b-256 56f70bbb86c4d32c299129e15ac230949d0e52c95832a15a819f9d0d3840a96f

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1b5da1fcbe756f8cf071659c300f5eb9e13acfb83a826483b497b1d0c4435e6e
MD5 7499435aa4317a6ea7cd1a3445bb357e
BLAKE2b-256 3dd090df695153085bd824769d3692f6fc6dd119c0ebcfe02b963fa20609807d

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8f3513bd9f89c440cd10b9f2c6fdc7776f86fddec438d392105555de4fa465b
MD5 73088b94254721c5e1eaeb4e04ee5953
BLAKE2b-256 8010ac602f399e093170622db8bd9a71e3e43147b8d2f1d08b175140c19df457

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3928b385bd761bd6d0c75913febc484095fd3897a7fd9643f0f8e0b8fb1b8b96
MD5 68e56b5672c049d7b60b6761b407451b
BLAKE2b-256 f4510e06ff5c691e76b39b499e047046c26f66a4c2e1a9fd5176c38ade89fe94

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4ed7339ba99e478e8f44cd551bb76ac1173d41e5b531d134f5f4b77ed45e3bc0
MD5 451e1712d4ce35c7d13958512636eea1
BLAKE2b-256 3b8f15a2ed3ddcd0945c5745068b087df73e4a7e79cfa18c188dea90e5827fd1

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2bae368db49943c282ac995515166a5029a15876291251edcbc325e683aa7563
MD5 7ab0181e9489968c40659b8dae15b21a
BLAKE2b-256 274fdcbeae996d2c2a8ad44866665f8586d2c2f0c78bdadd817ce2fd498c3e99

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9b80b8cae158f70692160f4061b636f88cc2fc9fa5964f5ebc1f7bc9a1a1d8d9
MD5 8b5f0aa97340d549ff628ff11b42ef08
BLAKE2b-256 e55072bcf81a6f2f6c0b23169b068b6277837bc55d3b50eaeb28af6484eb0216

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4331de0111e505a77095f1b3a471d7ba9ca69696188a40816d1081225de8255c
MD5 cc4f0c21d9b64d564b69b515c441b47a
BLAKE2b-256 d14d494806282f3a7e943145b41256f473205d4c3f18e746f5c8051aaa21d4c0

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 74334a2dfe8c3981a5720c23b151794a399d5d27b951318810e9e22e02df1dc4
MD5 0502eadedf508a489e00684e4ca94c20
BLAKE2b-256 3b4dca453e4f2dd66b244592c14fad75e69839a11395a2002843bdf1dab9b7ed

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 908ca3ab8f3915c700b25717a78062f69ec2353499200d8a00e4d107f45fd172
MD5 7d0c2c55ecec23e05882e88d33450359
BLAKE2b-256 9df1f95ebe57e62ba5b788e15ac0c0dc5a567e0e43a4fb7efb794f54ffc8cd72

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4542f3e7cb15f518b9c4f7a3ea0cd1b950c413ec6c46f740da8ced6d611a1dd6
MD5 8b347149d4ccdc97245facf58828e4e6
BLAKE2b-256 316abe1dc8a9d93692b4dee5faf5ff69bc828541756b354c196687bd40071b3f

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1cd00f469144294d559d4efb278923dde4ff40aa1e40e4f6a95f0b83e098929a
MD5 890150573c4358cd75f1f5b0dc3be7da
BLAKE2b-256 fae91c5f1371b6c30d1d86fb8e94eb4ff3840c0e6b937582dfdbb638c2acc41c

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a61adbad30b50b9eb96db815e9d6aa62d8d00eea945df09485d00f2ad8175a0e
MD5 de64a34fcea46444b09ea533460902cd
BLAKE2b-256 5132c60a141612fe03d1a8a98da1226dc35ef0bde5b321ec7a6b8452a40365db

See more details on using hashes here.

File details

Details for the file opensheet_core-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opensheet_core-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 641bda8b9e39c52273b5406ec149bf8c011e69950a01b2eaff5767447b83eb08
MD5 5ed53551893a7c184c2384b33220407c
BLAKE2b-256 0980137b3d1cc661e01a046e96d11f36886e723a1fc77dbc217f77dee0754fc5

See more details on using hashes here.

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