Scan Google Sheet
Read public Google Sheets into Polars DataFrames and LazyFrames — no auth, no service accounts, no API keys.
🦀 Now powered by Rust
This is a from-scratch rewrite of the original pure-Python scan-google-sheet. The
public API is unchanged — read_google_sheet, scan_google_sheet, and the same
exception hierarchy all work exactly as before — but the fetch-and-parse core
underneath is now Rust, compiled to a native extension via PyO3
and maturin.
| Before (0.1.x) | Now (0.2.0) | |
|---|---|---|
| HTTP client | httpx (Python) |
reqwest (Rust, blocking + rustls) |
| CSV parsing | polars (Python API) |
polars (Rust, native) |
| GIL behaviour | Held during fetch + parse | Released for the whole fetch + parse |
| Distribution | Pure-Python wheel | Compiled extension module (_core) per platform |
| Public API | read_google_sheet, scan_google_sheet |
Unchanged — drop-in upgrade |
| Errors | Python exception hierarchy | Same hierarchy, raised from Rust |
What didn't change: if you're upgrading from 0.1.x, this is a drop-in
replacement — same function signatures, same return types, same exceptions.
Nothing in your calling code needs to change.
On performance — set expectations correctly: for a single call, don't
expect a dramatic speedup. Fetching a public sheet is dominated by TLS
handshake time and Google's own server-side render of the sheet to CSV —
typically 90%+ of total latency — neither of which any client-side language
touches. The original package's CSV parsing was also already Rust under the
hood (polars's Python bindings call into the same Rust crate this rewrite
calls directly), so there was never a slow "Python parser" to replace. What
this rewrite actually changes:
- The Python GIL is released for the whole fetch + parse (
Python::detach), so multiple threads making concurrentread_google_sheetcalls now run those requests in parallel instead of serialising on the GIL. - HTTP connections are pooled in a single process-wide
reqwest::Client(seesrc/core/fetch.rs), so repeated calls in one process reuse keep-alive connections instead of re-negotiating TLS every time — the one lever that meaningfully cuts latency for an app calling this repeatedly. - One fewer FFI hop per call (no intermediate Python
strhanded topl.read_csv), which shaves microseconds, not milliseconds.
If you're benchmarking, measure many concurrent/repeated calls in one process, not a single cold fetch — a single fetch's wall time is mostly Google's server, not this library.
Requirements
- Python ≥ 3.9
- The spreadsheet must be set to Anyone with the link can view
Installation
pip install scan-google-sheet
# or
uv add scan-google-sheet
Prebuilt wheels are published for common platforms/Python versions; pip falls back to building from source (requires a Rust toolchain) if no matching wheel is available.
Quick start
from scan_google_sheet import read_google_sheet, scan_google_sheet
Eager — returns a DataFrame immediately:
df = read_google_sheet("Sheet1", sheet_id="1BxiMVs0XRA5nFMdKvBdBZjgm...")
Lazy — returns a LazyFrame, participates in Polars query optimisation:
lf = scan_google_sheet("Sheet1", sheet_id="1BxiMVs0XRA5nFMdKvBdBZjgm...")
df = (
lf
.filter(pl.col("year") == 2025)
.select("vessel", "amount")
.collect()
)
You can also pass a full Google Sheets URL instead of a bare sheet ID:
df = read_google_sheet(
"Sheet1",
url="https://docs.google.com/spreadsheets/d/1BxiMVs0.../edit#gid=0",
)
Server-side query — only fetch the rows/columns you need:
# Columns are referenced by spreadsheet letter (A, B, C...), not header name
df = read_google_sheet(
"RawData",
sheet_id="1BxiMVs0XRA5nFMdKvBdBZjgm...",
query="select A, C, G, H where YEAR(K) = 2026",
)
query is a Google Visualization API Query Language
string, applied by Google before the data is downloaded — smaller transfer,
less to parse.
Detecting an active sheet filter:
Google's export endpoint (/export?format=csv) always returns every row,
but the endpoint read_google_sheet uses to support sheet_name/query
(/gviz/tq) silently excludes rows hidden by an active filter on that tab.
If someone left a filter on, your query can quietly return less data than
you expect. Pass warn_if_filtered=True to check for this — it costs two
extra HTTP requests and emits a UserWarning if rows appear to be hidden:
import warnings
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter("always")
df = read_google_sheet(
"RawData", sheet_id="1BxiMVs0...", warn_if_filtered=True
)
if caught:
print(caught[0].message)
# sheet 'RawData' appears to have an active filter hiding 12 row(s)
# (88 visible vs 100 in the full export) — query results may be incomplete
This is a best-effort heuristic, not a guarantee — it's most reliable when
url (with #gid=...) is passed rather than a bare sheet_id, since without
a gid the check falls back to comparing against the spreadsheet's first tab.
API
read_google_sheet
def read_google_sheet(
sheet_name: str,
sheet_id: str | None = None,
url: str | None = None,
*,
timeout: int = 10,
parse_dates: bool = True,
query: str | None = None,
warn_if_filtered: bool = False,
) -> pl.DataFrame
Fetches the sheet and returns a collected DataFrame. The HTTP fetch and CSV
parse both run in Rust, released from the Python GIL.
scan_google_sheet
def scan_google_sheet(
sheet_name: str,
sheet_id: str | None = None,
url: str | None = None,
*,
timeout: int = 10,
parse_dates: bool = True,
batch_size: int = 1_000,
query: str | None = None,
warn_if_filtered: bool = False,
) -> pl.LazyFrame
Returns a LazyFrame registered via the Polars IO plugin API. Projection
pushdown, predicate pushdown, head(), and streaming are all supported.
Note: Google Sheets does not support partial HTTP reads. The full sheet is always downloaded in one request by the Rust core. Pushdowns reduce processing cost, not network cost. This is the one part of the API that stays in Python:
register_io_sourceis a Polars Python-only hook with no Rust-side equivalent, soscan_google_sheetis a thin Python wrapper around the Rust-backedread_google_sheet.
Parameters shared by both functions:
| Parameter | Type | Default | Description |
|---|---|---|---|
sheet_name |
str |
— | Tab name as shown in Google Sheets |
sheet_id |
str | None |
None |
Spreadsheet ID from the URL |
url |
str | None |
None |
Full Google Sheets URL (ID extracted automatically) |
timeout |
int |
10 |
HTTP timeout in seconds |
parse_dates |
bool |
True |
Attempt automatic date/datetime parsing |
query |
str | None |
None |
Google Visualization API Query Language string, applied server-side |
warn_if_filtered |
bool |
False |
Emit a UserWarning if the tab appears to have rows hidden by an active filter (2 extra requests) |
Provide either sheet_id or url, not both.
URL utilities
from scan_google_sheet import extract_sheet_id, build_gviz_url, from_url
# Extract the sheet ID from any Google Sheets URL
sheet_id = extract_sheet_id("https://docs.google.com/spreadsheets/d/ABC123/edit")
# "ABC123"
# Build a gviz CSV export URL from a sheet ID and tab name
url = build_gviz_url("ABC123", "Sheet1")
# "https://docs.google.com/spreadsheets/d/ABC123/gviz/tq?tqx=out:csv&sheet=Sheet1"
# ...optionally with a query, applied server-side
url = build_gviz_url("ABC123", "Sheet1", "select A, C where B = 1")
# "https://docs.google.com/spreadsheets/d/ABC123/gviz/tq?tqx=out:csv&sheet=Sheet1&tq=select%20A%2C%20C%20where%20B%20%3D%201"
# Build a gviz URL directly from a full Google Sheets URL
url = from_url("https://docs.google.com/spreadsheets/d/ABC123/edit", "Sheet1")
Error handling
All exceptions inherit from ReadSheetError, so you can catch everything with
one handler or branch on specific types:
from scan_google_sheet import (
read_google_sheet,
ReadSheetError,
SheetFetchError,
SheetURLError,
SheetParseError,
NetworkError,
ConfigurationError,
)
try:
df = read_google_sheet("Sheet1", sheet_id="...")
except ReadSheetError as e:
match e:
case SheetFetchError() if e.is_auth_error:
print("Make the sheet public (Share → Anyone with the link)")
case SheetFetchError() if e.is_not_found:
print(f"Sheet not found — check the ID: {e.url}")
case NetworkError():
print(f"No connection: {e.cause}")
case SheetURLError(raw=r):
print(f"Could not parse URL: {r!r}")
case SheetParseError():
print(f"CSV parse failed: {e.cause}")
case ConfigurationError():
print(str(e))
Exception hierarchy
ReadSheetError
├── SheetURLError malformed URL or unextractable sheet ID (.raw)
├── SheetFetchError non-200 HTTP response (.url, .status_code)
│ (.is_auth_error, .is_not_found)
├── SheetParseError CSV or Polars parsing failure (.column)
├── NetworkError transport failure, no response received (.url)
└── ConfigurationError invalid argument combination
Raised from Rust via PyO3, but the hierarchy, messages, and
attributes are the same ones the pure-Python 0.1.x release raised.
Making your sheet public
In Google Sheets: Share → Change to Anyone with the link → Viewer → Done.
The export URL used by this library (gviz/tq?tqx=out:csv) requires the sheet
to be publicly readable. No data is ever written.
How it works
Google Sheets URL / ID
│
▼
build_gviz_url() constructs the CSV export URL [Rust]
│
▼
fetch_raw() reqwest GET, pooled client, GIL released [Rust]
│
▼
parse_csv() polars CSV → DataFrame [Rust]
│
▼
read_google_sheet() PyO3 boundary → pl.DataFrame [Rust → Python]
│
▼
scan_google_sheet() register_io_source() lazy wrapper [Python]
│
▼
LazyFrame / DataFrame ready for your pipeline
The crate also builds as a standalone Rust library (cargo build, no Python
required) — see src/lib.rs for the read_public_sheet entry point used by
the python feature's PyO3 bindings.
Development
git clone https://github.com/Attica-oss/scan_google_sheet
cd scan_google_sheet
# Rust-only build/check + unit/integration tests (mocked HTTP, no network)
cargo build
cargo test
# Python extension, editable install into a venv
uv venv
source .venv/bin/activate
uv sync --group dev
maturin develop --release --features python
# Python test suite
uv run pytest
maturin develop/maturin buildwithout--releaseproduce an unoptimized debug build (no inlining, no bounds-check elision). It won't be noticeable on small sheets, but always benchmark and publish--releasebuilds.
Changelog
0.2.0
- Full rewrite of the fetch/parse core in Rust (PyO3 + maturin), GIL released
during network and parse work via
Python::detach - Process-wide pooled
reqwest::Client(src/core/fetch.rs) so repeated calls reuse keep-alive connections instead of a fresh TLS handshake each time - Public API and exception hierarchy unchanged from
0.1.x, including the structured attributes on each exception (raw,url,status_code,is_auth_error,is_not_found,column,cause) scan_google_sheet's lazy IO-plugin wrapper stays in Python (Polarsregister_io_sourcehas no Rust-side equivalent)- Rust unit/integration tests (
cargo test, mocked HTTP viamockito) and a Python test suite (uv run pytest)
0.1.1 and earlier
- Pure-Python implementation (
httpx+polars) read_google_sheetandscan_google_sheet- Polars IO plugin for lazy evaluation
- Structured exception hierarchy
License
MIT © 2026 Garry (Attica-oss)
Metadata
Release files for scan-google-sheet 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scan_google_sheet-0.3.0.tar.gz | 60.8 kB | Details |
Built distributions (wheels)
Total release size: 223.9 MB
Release files / scan_google_sheet-0.3.0.tar.gz
| Download URL | scan_google_sheet-0.3.0.tar.gz |
|---|---|
| Size | 60.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11dfbac375fb4233c616daf314a6f0d8854a42db237f8d345ce37a0cc03701ef
|
|
BLAKE2b-256 checksum How to use checksums |
43768ca9f7fd8ac8bb12867c166c3d3d1586a2ac0920fd82ca24ade2b27c16ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-pp311-pypy311_pp73-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-pp311-pypy311_pp73-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | PyPy 3.11 PyPy 3.11 7.3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e7a0083a3a153a5d1149dffbb1cf79812b4f7f9ba912b0d89b376c7415a8aa07
|
|
BLAKE2b-256 checksum How to use checksums |
082d066162b56d9470c1bc7b0f164b69bf4d8547c3b959c6489d4409f21dbb71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
6d10b6e885ad4742c2c079e566e06e0942c2fbfe6a6bbb94726bf3ef3e92d2af
|
|
BLAKE2b-256 checksum How to use checksums |
af79a27048cc41d31542bf7b4701bc4808e2eb61885b77cc34f349d88d753e08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl
| Download URL | scan_google_sheet-0.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | PyPy 3.11 PyPy 3.11 7.3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
74e1382c3210523ae8f672ccfa9da4bcb101704a058f6e6e066c270d4a4eb579
|
|
BLAKE2b-256 checksum How to use checksums |
c805f42a87633785f6ba73917f17bbecf9d6d61a985054cdf5bf8b872879d473
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
129038c9783f9c260701bc29aa3d273fe8b39468d36d7fc7ba3fb1516d5b09f9
|
|
BLAKE2b-256 checksum How to use checksums |
74a96e30bfa010f420439a84f4bcd800372eff73426d2e6ef4c2e206457e8993
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.15 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
935362dfbdf32377a071a6383769963ec3ac9ed872dc8466e7ccfcaace0fda56
|
|
BLAKE2b-256 checksum How to use checksums |
97fa6c6989ff70b97a1e5a61823f9ba780960307c8810ca6c6f16bed0cdb952d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp314-cp314t-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
10a3fcb7a85fb948aa95e4017b31dc682b116c774fd5510b8de0ab4e380da3b9
|
|
BLAKE2b-256 checksum How to use checksums |
2720c9088b61660c12a63be06f39e101643f64d2106a6ff4cfc585fb126ed5d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
fb3be0acf9b6f6ec7dcabc0a141abdae0f302ba3f83c242c09102f8bca967eb3
|
|
BLAKE2b-256 checksum How to use checksums |
b0b0b354a82c75464a767c6ae26a027f8b614ba3b438b1e81b548ada0a1b4377
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | scan_google_sheet-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ab6b5b397b4c94745ac639625a892bd79b07362699ee96604432afa5a0049420
|
|
BLAKE2b-256 checksum How to use checksums |
d47c621d3c0db5a0cb8ab16e86a2f396d9e97af6f995fa56ec7af169d60217bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp314-cp314-win_arm64.whl
| Download URL | scan_google_sheet-0.3.0-cp314-cp314-win_arm64.whl |
|---|---|
| Size | 7.4 MB |
| Tags | CPython 3.14 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
0df7c125a04ddb65d0b346272f68314b73390047d3039f3de9f5e0eb1ebd9433
|
|
BLAKE2b-256 checksum How to use checksums |
9fa4f6872ad0f14a19f8237c60ca9cd5f87eebe936b7739a6f066b1c0ef9d558
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp314-cp314-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cbd6e78a20295f1689fc692f2ce4bb60a2bd47820f320533d73b6f54f0561d43
|
|
BLAKE2b-256 checksum How to use checksums |
b324cf2d844aa9b8a7811dcd4a1cb8e9b21f5579a77f93667f34604f89fcb52a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
39eb2fb50db0c5b7551d3765c010b91807d966f3ecfa9665e7aefc2a102523e2
|
|
BLAKE2b-256 checksum How to use checksums |
411c45f4cbe04ff031d4f90bd8ac4c3e0dcb0f2bfebfee660e0f458414f582ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | scan_google_sheet-0.3.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
be709deebf0bb1fedf5aee14165610fa51e2898680a2f093d1386bebd19b6de5
|
|
BLAKE2b-256 checksum How to use checksums |
4b927e6d7d36a36ce9999aca2b4e8438cdf34082f8e4c9d2f18262503830de64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp313-cp313-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
62934f5e01baa2ff8a9132eb52ac4064704055b3bb5f996ee4cb7dbecd472121
|
|
BLAKE2b-256 checksum How to use checksums |
afc98b37a4abe6bfd947314c36be8e6d1a95dd6b69d15b61eccae9e35c8b2d96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
592225bef7d9f473947af9203bcfa37ac60a66c304aaa19d7759fc5968172ba9
|
|
BLAKE2b-256 checksum How to use checksums |
b2384da973ad99720fa7ff7d87524f83ee18708751c73c8c5ee05a8310c17629
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / scan_google_sheet-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | scan_google_sheet-0.3.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6763889c59dc651fd2bdd2b18a40e1b82668c49e364e787935707af5e7e81644
|
|
BLAKE2b-256 checksum How to use checksums |
27e1abaf442d934f61102a9f432aab0a4b38d23a44d4c0b3a819d292031d0c0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
4cbb1a3518470d8457a2c415bcaf551869292ce5f20a77f63b4d06ea4a0f87b0
|
|
BLAKE2b-256 checksum How to use checksums |
d95dc810c1e136f4f56cb408ee6d8aeda4b7afebe73d5d047c105e3a281edc4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp312-cp312-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3def72d6c617f10715987ad70d8682e6d0e442331829fc7a57dd17b79adbd61f
|
|
BLAKE2b-256 checksum How to use checksums |
0e6d57d1af1612a4749698959724cd56434f972edf9977fbd1495905d187ee44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c3ce55fcb72f659230d723ec6ba744a63e31e1313d8ad3eea3255442579f7e35
|
|
BLAKE2b-256 checksum How to use checksums |
61219bc8f08b46b85144cfeec834061c36a5eb9a3c4e26613a9ccedc3855f320
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | scan_google_sheet-0.3.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ea436973cc6733cf93b23492a3370993f3bff9b3417260769bbef05134182d80
|
|
BLAKE2b-256 checksum How to use checksums |
adc08d3ae12de375be3323b235764bd96484a95f2ff53b8f8be6fe3d3789ac6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp311-cp311-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e1efbc540b3ad41f8f40abf28c877b3d0aca6b3c2d1fc6e3c60315144878837d
|
|
BLAKE2b-256 checksum How to use checksums |
167eb29495d6981112e5c7b0d8b808bcdec5be73fc35e06053f328ff4de46fc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
567fcbcda126de8e196c4469f7431a8ff26287c27e79751324f157ca4ea9cf5c
|
|
BLAKE2b-256 checksum How to use checksums |
5ad9737eb11b84333fc0b23a88dd0a51189a05696c1cad4b6c0aa8d90c599134
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | scan_google_sheet-0.3.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f7a5c76208c504f10aa436f7300257cce35a91dcea9eb90f1c87659a1f9154b2
|
|
BLAKE2b-256 checksum How to use checksums |
15dd361186ff4cc9f1afad4bfc64c5524840ae82aab2c515e2c88b20c9a39688
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp310-cp310-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c6b8b77b147d6938bb7cc6cfff2af61c323255ffba44344664e6cadf2eac5e11
|
|
BLAKE2b-256 checksum How to use checksums |
d1f389e5ed268f89704f4625dd04ee68ec93205bbe7095e6a5cb76db37f9263e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
eb6cb4a72fc856b93e0715456cc51978c8b49eff8b76d2a3e2696a47cda940eb
|
|
BLAKE2b-256 checksum How to use checksums |
2d5aaf959fcb33158524501be9a3f7da8c304975ce36f6815945ff24667c9565
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / scan_google_sheet-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | scan_google_sheet-0.3.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c94d2845d9c057595a8348126e89ba71307eddf2f790897469fc0083687c8ea5
|
|
BLAKE2b-256 checksum How to use checksums |
b4af59197964462be636f88ff3613aa0953e929ee93ce7f00dea0de8cc808c6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp39-cp39-win_amd64.whl
| Download URL | scan_google_sheet-0.3.0-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
11dca80dce88eb50645a3e9a1ee707dc14233b51598deba2447f4d0c3ba60dfc
|
|
BLAKE2b-256 checksum How to use checksums |
46a2edcaf7e427ca8d1f0326402fd4866c7bf16a3774db5c8a0797f1cb83b614
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / scan_google_sheet-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scan_google_sheet-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
b4c188685ad8254c226f92488be26616e5541b43d1bcc4a6b4d9c750602fee81
|
|
BLAKE2b-256 checksum How to use checksums |
f83259ad67595bae760fa1722e0b395a7e8bfe0695ba225e769d8e91a79c138a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|