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, chunked text, or plain text for LLM pipelines (planned)
  • 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")

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.

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 Planned
Embedding-sized chunking Planned
LangChain / LlamaIndex loaders Planned
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)

Phase 1.5 — AI/RAG integration

  • xlsx_to_markdown() — convert sheets to structured markdown tables for LLM consumption
  • xlsx_to_chunks() — yield embedding-sized chunks with header attachment and merge-aware boundaries
  • xlsx_to_text() — plain text extraction for simple pipelines and search indexes
  • 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, and pandas DataFrame support. 135 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.0.tar.gz (80.9 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.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (607.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

opensheet_core-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (592.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (589.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp314-cp314-win_amd64.whl (491.0 kB view details)

Uploaded CPython 3.14Windows x86-64

opensheet_core-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (607.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (591.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (556.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

opensheet_core-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl (582.0 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

opensheet_core-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (589.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp313-cp313-win_amd64.whl (490.9 kB view details)

Uploaded CPython 3.13Windows x86-64

opensheet_core-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (607.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (592.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (556.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

opensheet_core-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl (582.0 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

opensheet_core-0.2.0-cp312-cp312-win_amd64.whl (491.2 kB view details)

Uploaded CPython 3.12Windows x86-64

opensheet_core-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (608.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (592.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (556.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

opensheet_core-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl (582.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

opensheet_core-0.2.0-cp311-cp311-win_amd64.whl (493.5 kB view details)

Uploaded CPython 3.11Windows x86-64

opensheet_core-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (607.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (591.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (557.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

opensheet_core-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl (583.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

opensheet_core-0.2.0-cp310-cp310-win_amd64.whl (493.6 kB view details)

Uploaded CPython 3.10Windows x86-64

opensheet_core-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (607.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (591.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

opensheet_core-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (609.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

opensheet_core-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (593.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

File details

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

File metadata

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

File hashes

Hashes for opensheet_core-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6151015c00c0412b08878fe0ebae0ec1754bb2da1656244e998a664e052911c6
MD5 f847af516db403feca0545568ca62147
BLAKE2b-256 1810de80b9f746bae2215114876b73914a85e5c6578104cac8fb4129def98885

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 95cc6ca6369bf3695b9e1385ab7c43834d457788708f0ac926632ce8fc8294c8
MD5 1009c28db114d22057ea26bfade5519d
BLAKE2b-256 82372431ff3ac6102ded3fde08f99f27fd4e632e0f08c8ba33637bdb5b711529

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cf144569a087f7cb2defe22ab62bd21d393eae9c52bb69b769806b7cc160fe56
MD5 331f2f5f002fc70583d624e00aa50c2c
BLAKE2b-256 e1be3ee74bbd390ff1074fa1a9edeaf00ac72cf10e0cd8204662d2850a1f8883

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29be821012ffee5901de9c1f631884af8b01ac9893ed24d159bd1bc59e9c697f
MD5 16059029f3ffefb9e39b48b190e3fd19
BLAKE2b-256 5e237a070ad72450737779be660fbc22982a3c4c1a238d4f8432c637ade80401

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 53635451b9f3848c6f1b10922f9b9897ca26b65849a1f3090e635c042269cc1f
MD5 8261a268d9663ce50f498061e32f04c1
BLAKE2b-256 048c326a0d6e478e13572ff254bcdd2ca2b089da2ff58e447784d4fa4c803cb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4e2216a04239542765f2f56f4e343729f622cae82d240ef34f730b39b12aeab
MD5 ec87e0b4e9363481c5afc68fc79e1fac
BLAKE2b-256 975d7d737eab7b2b6bbc496795fa528186022e1f5432e68618ce54dc58ef62b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 efa94995328e712ce0e5abf5f31c7386bbeee32ba0ceeea5391135843b1d96f5
MD5 0f7d6ec5d665bd9c59a86585818b0760
BLAKE2b-256 4de3af4df74d4904c2c8bfd0e37d0e02946e2bc255a28c93dcacce503dddf0e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 045cda8af7c5b8a69674121b2d8993ba3f2d7844caf64a0751416c94bc7bc223
MD5 cb4f0c05ff019a6217e32d60912a67f3
BLAKE2b-256 326d3b38af2afb2c90dc7d9ecaafc08b4f1a2bcfba9ba92e9bce1dacd90765c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a438249ccc13b682f34967ca40ff2e10a82f401659bb90db52e712ea17193b82
MD5 042076516d54c19a276b327dc3b58f4c
BLAKE2b-256 baa08906c5e10862ec67cca776c51fc2c4ebb93e1939d342f52b537d0b7494a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5c979c74f120608af898403833b971f4bde94878a3d444cd1514aa9586c2141a
MD5 777f9c1a09a9bf4b83524ab78c27e08e
BLAKE2b-256 2eb2b84c0b94ac6b6add45ca7a0aeb26bc060b2539e35c4fcb671979c3bf64f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 183c7025ec6d8ccbf341b5660a5bb0b20852726291f35907fe367b7d3dce0979
MD5 b6a1c64897681732726d049b877dd927
BLAKE2b-256 0a8340501daca2c8be3f2f134967fa2296352c193b9c7e6d0d0371e6a0ac3bbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4fefa2cd442fbb79d608d8a3aed13a8bf4c83ebb902323cac724a0dfce4a6c03
MD5 0258c45e7b12428ef431b6b90e08c886
BLAKE2b-256 1611e62e40653555cad67c84df72e4db46793c1315328cb2e55c5a72332c762d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f84fff088993142021d099fbea6fe34bb224064ec7a304715c647f70d75f0e04
MD5 1d4123a8c4c40a1c82ba1ae2d09db8f4
BLAKE2b-256 89f6d10376cc6a90b3758b5a50c71bd27fb29f2d937c54a86a0e7826dce4ff41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1c6725a4c1b0127ef3dd91eae11299a7d92c74661e905718a50a5deec34946c4
MD5 5b25628b83aca3603d4c8c81738d4896
BLAKE2b-256 b716d3395b687aec7d3367057529f712b47d905ca240b621a628e03675b10e1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7a0466a79e677392cb4827026fda2b467aca6b78e0807b6af57bfc56f01f79c9
MD5 62f5b930391186bd12e8b1135fea4db8
BLAKE2b-256 b3c1566c2177dd275269ea31f79aa91d969d4611cf45d91e64a6048527eea33b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 855d48ecb7043ccd0c6013b24b57f533999e9e50195b0584ffbc69d0d52bfb62
MD5 09cdb87db80781619b34c57ae9875d3c
BLAKE2b-256 70f14f8dd44bc32acb984fb0c23bdaff1fd08767b5862d8acce7f9b67ab92001

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ebcb2f9fc281a375863ac9c03b4f1f06e693a75999f748285e0c0cdf076f87a1
MD5 4cbea6674d3850b1f6c771e71f6543e0
BLAKE2b-256 5d5cbee8f6ed3cd9ececbb9707e89a0ce0961469e5b957e4762485743a39bdec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 64883a34c1ab2351feed67899afcd4a657aa32b9f4e0e5c6f6185c1b50b67410
MD5 7769ee9d41287810b296d9259f3559a8
BLAKE2b-256 67e429a63160d9dcd8023644ac2340731929e7188eeb112f2db8dba4d7b2197c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3de5fd28b64e5390ac3cac58dca821d463758408b7a02ad13a5d430afc59d926
MD5 3bbe694f1ee65f9398370e38d8161f7f
BLAKE2b-256 d29760e3dd279a54b1af4a9eb9a4a82902589e552342086b6b3821e52b1e1baf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4b19b929a788906fa31cf66b38003fb658bdb3c55fd57b5b41470434f9a231b8
MD5 9957e970e609daab21c490ab8f584715
BLAKE2b-256 c71a024a1b7d9f1330b750a863e8e7dec0744ee24ba4a7cf63be393c5da3672b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0f0f64114fa93af4108091f82af9f1bdcbd52e236e520cbd03150d65b57e0095
MD5 97a22337979785d358d52e933e5fa244
BLAKE2b-256 5c425ff3681e8721574c83ceb83b8d461095f460da5bbd57b774cae64619c2a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75761077507da25b00e552e72974abbf5b6294ef8790d21bcf5679b520f9746b
MD5 5f207de4cf84340fc074d9d33fa231f2
BLAKE2b-256 2569e648982ed24f75f920d3876d425d1e643d7772c33955cee670d621c9eba6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d2e17d50caaaf90626395750661011878639455600ac0e1490670948d6c46c43
MD5 da0f550db46fe2d97fa508455656c6e3
BLAKE2b-256 b4d7cdf6180eccaceca99cc62cd2e92bba056d5661c7ee6b313ee3fe213871aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f470f5ab37d3f12e026fd40c260e359ad453656b9fb9cd73980b99f622b40cc7
MD5 944d4af1a045f0a2e2b46f705b4f94d0
BLAKE2b-256 51577d2c34cd2d671aad634ce09613382f9652b9f0f7f848890bb38b02a78c13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9a0a6d60ace9068cbc20616273b8e51b0324d1b2d51247587595d4bfe4b189cc
MD5 ad1e158f243833cae0e7dfd88668a039
BLAKE2b-256 3b44d88c661e44a3b0b3e7e018c80a085529017de69abc2054a4444127c0fc65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fe8fd5737ba284c7e112e8eb54c1e9e08600893883a1c56ef906370cf81a722c
MD5 034cf243e8f66454dfe6a8eff72953b8
BLAKE2b-256 7a54db3fbfb3e2c860f0b1593c74608878d1b84ba3112c5f355e5feda9f48c7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5d0296e355478e8e44bf213e087ea9521feb098f2e4ac4faad65b830bd3faf3
MD5 838ad196bcfc4da670d4f407e9f6f58f
BLAKE2b-256 64881c4e57ff83daf4f0a280efe3832f5aee88c572143a2dbbf6ac6d0e831ecd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eda251db8a08598a3e1fcc00ec374d4f6a97262e1d488700a07b4447cd11e5a9
MD5 ce45af9e5e89d93f5aba711a9bf3208c
BLAKE2b-256 fbdb27d915f1435958142d8c74b7d82ceffbf680c89893118463d8cb8eb56018

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e562c3288d2b317eed67052a78490aa6686146ae45f797925e433d507884e1b
MD5 85a3962efce7f2442a5d01a2f4cdd5c2
BLAKE2b-256 6f46d11f3e68b1ddf4c8c3ea61a9a8e1897942934205ca0cb7a4786aae86d5ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opensheet_core-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29e2467063850f02f9ea99a7dafd963da17efee9e07313f140a491b5d94f2e78
MD5 17cc9b43065eaaad510dafa26f01b3f0
BLAKE2b-256 b3cc294e59960382056335ca1c456650b6f6c99e1183d6679c9746ed58a05199

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