Pyspread – Pythonic Spreadsheet

Qem | 356 points

I'd like to give praise for the "Target User Group" section on the homepage.

Not only does it say what users the app is for, but also who it is NOT for. I think this kind of information is invaluable in deciding whether or not to use or suggest an app.

I can understand if app developers want EVERYBODY to user their app (whether or not its the best for the job) or if the app developer just doesn't want to take the time to write out who the app is NOT for. But I will praise those who do include that information.

justin_oaks | 12 days ago

I would really like to see a distribution which puts all the best alternative software together:

- pyspread for a spreadsheet

- LyX for a word-processor

- OpenSCAD for a 3D modeler

- TkzEdt (or ipe) for 2D drawing

&c.

(and I'd be interested in suggestions for similar software for other tasks, esp. presentations and database work)

WillAdams | 12 days ago

I see it uses numerical designations for both the columns and rows allowing indexing like a 2D matrix. Nice. One of the many annoyances of Excel is the alphabetic columns that make even less sense beyond 26.

ssl232 | 12 days ago

Related. Others?

Pyspread – Spreadsheet with deep Python integration - https://news.ycombinator.com/item?id=30426053 - Feb 2022 (1 comment)

Pyspread – Spreadsheet implementation in Python, cells return Python objects - https://news.ycombinator.com/item?id=7593603 - April 2014 (1 comment)

Show HN: Spreadsheets using Python - Have you seen this? - https://news.ycombinator.com/item?id=1884896 - Nov 2010 (47 comments)

PySpread: A spreadsheet that accepts a pure python expressions - https://news.ycombinator.com/item?id=265132 - Aug 2008 (3 comments)

dang | 12 days ago

Interestingly, Giles Thomas (the guy behind Python Anywhere) originally developed a Pythonic Spreadsheet application, called Resolver One, and then iterated to a a web-based version, called Project Dirigible.

Python Anywhere eventually span out from Project Dirigible when they realised that it was mostly being used for "generic" Python development rather than being used as a spreadsheet. There's an interesting write-up on this evolution here: https://blog.pythonanywhere.com/197/, and a demo of Dirigible here: https://www.youtube.com/watch?v=2ZoIp-5NaiQ.

Project dirigible ended up being open sourced here: https://github.com/pythonanywhere/dirigible-spreadsheet.

JosephRedfern | 12 days ago

It seems to not be a true spreadsheet with dependency tracking and instead it recomputes everything after each change. Whis probably kind-of obvious as how to track the dependencies for arbitrary Python code is not that obvious. But without resorting to some static analysis magic one could just track accesses to the magic S[] during the excecution of the cell, its value cannot depend on anything else than what was accessed during the evaluation.

dfox | 12 days ago

I guess it would be "easy" to compile to WASM using pyodide or such, and have a full in-browser version? might be cool

oulipo | 12 days ago

Shameless plug: If you have bigger data sets, check out https://rowzero.io

We scale up to hundreds of millions of rows and have native Python support.

You can define functions in Python and call them as formulas from any spreadsheet cell. We seamlessly marshal Pandas dataframes from Python land to spreadsheet land and back. [1]

We're also hosted and support real time collaboration like Google Sheets. We reimplemented the Excel formula language. We connect directly to Postgres, S3, Snowflake, Redshift, and Databricks. And the first workbook is free.

[1] https://rowzero.io/docs/code-window

breckognize | 12 days ago

I have been using grist [0] for a number of months. Self-hosted. Uses Python and has defined all common Excel functions as Python functions. Has a web-api so it can be used as a kind of database. Very nice for my small use-cases where Excel would have fit the bill. I have not stress tested it and I know there are row limitations without going to the enterprise edition.

0: https://www.getgrist.com/

smithza | 11 days ago

Shame it's GPL3. That counts it out of being included in FreeCAD, which I can't help but feel would be an improvement on the current spreadsheet workbench.

regularfry | 12 days ago

There used to be a python spreadsheet that worked as a spreadsheet - Resolver One.

It was .Net based but did not make enough money. I wonder if done now there would be enough support to open source something like this.

For a review see https://blog.jonudell.net/2007/09/27/first-look-at-resolver-...

pasc1878 | 11 days ago

I wonder what the performance is like?

zero-sharp | 12 days ago

This looks a very good idea.

This would be an ideal place for a semi-technical user to contribute documentation. Good starter open-source contribution. Without that, it's hard to figure out if it would work for me, let alone give feedback.

frognumber | 12 days ago

I'm curious how it compares to emacs' calc / spreadsheet mode in org.

Looks like it is

a) a stand-alone X11 app (not easily runnable on macos) b) using python instead of elisp.

Is that roughly accurate ? I can't easily understand from the post.

golem14 | 12 days ago

Python is a bad language for this, because one-liners are awkward. Multiline code is possible but ugly due to indentation-based syntax. Brace-based languages would be far more suitable here.

tichiian | 12 days ago

nix run nixpkgs#pyspread

Not saying Nix(os) Is The Way, but sometimes it does ok.

Kim_Bruning | 12 days ago

> Execution order between cells is not guaranteed to be stable and may differ for different versions of Python.

cognomano | 11 days ago

I couldn't understand what's the datatype of each cell. - How to use NumPy and others?

DrNosferatu | 12 days ago

I tried to install, and discovered yet again why I fell out of love with Python.

Executing:

pip3 install -r requirements.txt

gave this error:

" Traceback (most recent call last): File "/tmp/tmprhazpypn", line 126, in prepare_metadata_for_build_wheel hook = backend.prepare_metadata_for_build_wheel AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'

...

ERROR: Command errored out with exit status 1: /usr/bin/python3 /tmp/tmprhazpypn prepare_metadata_for_build_wheel /tmp/tmpl72s0sfd Check the logs for full command output."

I'm on Linux Mint 19.

kwhitefoot | 12 days ago

this seems like a huge reinvention of jupyiter , i really hope they aren't going to recreate all the bugs.

amias | 12 days ago

The Gods have listened to me!

rbanffy | 12 days ago

Eneble number line to 2^25 or minimal 2^22 by default.

Kill many user from Excel limitation 2^20!!

adolfopd | 12 days ago

the api page doesn't seem to work.

Aliyekta | 12 days ago

I am Jacks endless disappointment. j/k - it looks nice - how would you compare/position it against something like jupyter lab?

voxelghost | 12 days ago

I'm also interested in the least pythonic spreadsheet, has anyone worked on that?

eigenket | 12 days ago