Pyspread – Pythonic Spreadsheet
pyspread.gitlab.io
pyspread.gitlab.io
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.
> but I'd wager that 50%+ of professional developers use MacOS
Ok, I will take that bet against you. If you think it true, then you are living in a bubble. Probably 90% use MS Windows with no choice, because they work in a big enterprise that uses MS Office and Exchange/Outlook. For enterprise email, is there any competition at this point? I don't know any.This is probably true. I only really talk to US startup devs.
Edit: I can’t read. Disregard.
> While there have been reports that pyspread can be used on OS X, OS X is currently unsupported (can you help?).
I think that would make many non-technical users uncomfortable.
But after reading it on the product page - I fully agree: seeing clearly the targeted personas and out of scope usage significantly elevates my trust in the product and the team behind it.
Have not used the software, but now I want to try
Original Sentence:
> Furthermore, Peter is worried about algorithmic errors and calculation inaccuracies is his complicated tables.
Correction:
> Furthermore, Peter is worried about algorithmic errors and calculation inaccuracies in his complicated tables.
- 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)
I wouldn’t work with any cad software that didn’t have that ability.
How well this works depends on the situation, if changing a parameter causes new faces to appear on the object this is usauayvwry difficult to handle, even for commercial CAD programs.
I think most programmers like OpenSCAD - what better way to make parametric CAD models than by writing code?
For any large project I'm sure Blender (or FreeCAD) would be a better choice, but as someone with some programming background just starting out, OpenSCAD feels way more accessible.
Currently working on a library which makes the two work together:
https://github.com/WillAdams/gcodepreview
(which is currently quite primitive/basic, and even when fully developed is not likely to be used by anyone else)
The most important difference is that Blender operates on meshes, CAD programs don't.
Blender for 3D graphics.
Gimp for photo editing.
Inkscape for illustration.
Though I'd recommend FreeCAD over OpenSCAD as a 3D modeling tool for most users as an alternative to traditional CAD tools...and therein lies the distro problem.
I was trying to think of unusual programs with non-standard approaches.
Perhaps rather than FreeCAD either BRL-CAD, or maybe the recently announced Dune 3D:
https://news.ycombinator.com/item?id=40228068
Also, Blender w/ CADsketcher (the Solvespace solver) is quite good:
https://news.ycombinator.com/item?id=34856383
Though maybe Solvespace would be a better match?
For RAW development (a la Lightroom), DarkTable and RawTherapee exist. I've only tried the former, and found it incredibly difficult to use.
I also prefer Krita for digital illustration (though maybe that's unfair - it's best at digital painting specifically.) Of course, if you need vector support, Inkscape is the obvious answer.
Eg Im pretty sure Ubuntu Desktop has some kind of “Productivity” package group that includes a word processor and spreadsheets and an email client and what not. I’m pretty sure it’s selected by default when you do a full desktop install. I don’t recall what the actual software is, but I would imagine LibreOffice.
I would agree with OP that it doesn’t really make sense for a distro, though. People really want to “make a distro” for some reason so we end up with silly shit like Kubuntu (Ubuntu… with KDE pre-installed).
My general rule of thumb is if I can point the distro’s OS package manager to the distro’s upstream (ie Ubuntu for Kubuntu, or Debian for Ubuntu) and everything works or mostly works, it should be a script or apt repo and not a distro.
There are way too many “Ubuntu but with a different default DE” distros that could really just be a modified install ISO or post-install script.
As power users we may want to do that ourselves, but a lot of people place value in having that curation done for them.
For example: https://alternativeto.net/software/pyspread/
I think there are a plug-ins for Inkscape for presentations.
His Excel-lence also recommends this: https://www.youtube.com/watch?v=JxBg4sMusIg
The "real" answer is to use names and tables. That and generally not having data flying up down left and right.
Also, when you need names, it is a sign to reach for a proper programming enviroment like Delphi or Lazarus.
So, while your logic makes sense, it voids humanity in a rather stark way which I suppose is fine, but it's not like I'm incapable of programming. I just have to be careful about how I name variables and use keywords in python more often than args.
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)
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.
(It's very similar to the problem of locking in databases)
Your suggestion reminds me a lot of fine-grained reactivity like in SolidJS, which makes sense, since spreadsheets basically operate on reactive programming. Some great articles by Ryan Carnatio on the topic.
The side-effects thing comes in if a user puts in some side-effect in a dependent cell, which is equivalent to adding side-effects in a memo in reactive-speak.
https://support.microsoft.com/en-us/office/get-started-with-...
There's no reason they couldn't embed CPython in Excel, but maybe the intention was for the online version of Excel to have feature parity without having to compile Python to JavaScript?
If you want to see this done properly (on some limit) look at pyxll.
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.
- Only I have access (private / personal use)
- The universe has access (open-source use)
But one free workbook still beats the typical 30-day trial.
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-...
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.
- Most of my career was made by being the author of one popular open source platform which happened to do well.
- I've recruited people based on open-source contributions. If I want an expert in [X], finding someone who contributed to [X] is a good bet.
- The flip side is I've made (minor, helpful) contributions to many projects in part for exposure. My name is in the commit list of many systems in domains where I have wanted to work.
- Many mid-sized contributions look good on a resume, especially for a junior developer. Indeed, I've made one case to promote someone based, in part, on contributing to a library we were using (even if only tangentially).
If you want a job in e.g. network security, find something in a firewall, anonymzing proxy, packet sniffer, or whatnot, and make a PR. It's often quick, easy, and helpful. A corollary is you do actually learn a lot about a system by contributing.
I have no axe to grind here, but I think the cynicism is unwarranted.
That's more a salesperson mantra than SWE, where for every 10-100 people you ask, someone buys something. However, I've raised money many times simply by shamelessly asking.
Second good life lesson: Don't assume things about others.
People who make $1/day, $10/day, $100/day, $1000/day, $10,000/day, etc. have fundamentally different priorities and motivations. Ditto on many other axes. Good synergies are leveraged working across such differences.
Devs are expected to contribute to FOSS, write free educational blog posts about technology, and fix your friends computer!
Ask a doctor why something hurts and they tell you to come into their office and insurance will bill you.
I do open-source and write blog posts to satisfy my own desire to publicize my work, and for exposure, and to put my skills on display. Not as a race to the bottom. I could have had a career without those things.
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.
Not saying Nix(os) Is The Way, but sometimes it does ok.
nix run nixpkgs#pyspread [0/1 built, 3/113/132 copied (1311.8/1721.6 MiB), 280.4/300.7 MiB DL] fetching llvm-16.0.6 from https://cache.nixos.org
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.
Their docs don’t say that, they advertise exactly what the GP ran. Python needs to unfuck its ecosystem.
That being said, venv is the official solution, and it works fairly well. pipenv/pipx are some alternatives...but yeah.
What exactly is your system installation for if you aren't supposed to install anything to it? The package system should be able to attempt installing via venv or be able to block uncompatible packages with sane error messages.
$ docker run --rm -it python bash
[...]
root@211646f0fa99:/# which python
/usr/local/bin/python
root@211646f0fa99:/# python -m venv .venv
root@211646f0fa99:/# source .venv/bin/activate
(.venv) root@211646f0fa99:/# which python
/.venv/bin/python
(.venv) root@211646f0fa99:/# ls -l "$(which python)"
lrwxrwxrwx 1 root root 21 May 7 14:47 /.venv/bin/python -> /usr/local/bin/pythonNode.js is similar with npm.
Is there something like nvm but for Python?
Umm... who exactly makes sure the app runs correctly with the version of python installed by the system?
I, for one, aren't going to bump up a python version to run a single app in a virtual environment because some dev decided to use 'python nightly' to code against.
(pyspread) [xxxx@fedora ~]$ pip install pyspread
Collecting pyspread
Obtaining dependency information for pyspread from https://files.pythonhosted.org/packages/a5/e2/19ddb20b46ae46f11102f9095bf5bf00cb28cc79b35f38257f84a98ecd1d/pyspread-2.2.3-py3-none-any.whl.metadata
Downloading pyspread-2.2.3-py3-none-any.whl.metadata (4.8 kB)
Collecting PyQt5>=5.10 (from pyspread)
Obtaining dependency information for PyQt5>=5.10 from https://files.pythonhosted.org/packages/2f/e6/a1f9853e4933c312c6de9c79d126c7d92ef69ae0e53895fb1ceb0ecc77a6/PyQt5-5.15.10-cp37-abi3-manylinux_2_17_x86_64.whl.metadata
Downloading PyQt5-5.15.10-cp37-abi3-manylinux_2_17_x86_64.whl.metadata (2.1 kB)
Collecting markdown2>=2.3 (from pyspread)
Obtaining dependency information for markdown2>=2.3 from https://files.pythonhosted.org/packages/5a/09/a9ef8d5fe4b08bfd0dd133084deefcffc4b2a37a9ca35a22b48622d59262/markdown2-2.4.13-py2.py3-none-any.whl.metadata
Downloading markdown2-2.4.13-py2.py3-none-any.whl.metadata (2.0 kB)
Collecting numpy>=1.1 (from pyspread)
Obtaining dependency information for numpy>=1.1 from https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
Downloading numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.0/61.0 kB 311.8 kB/s eta 0:00:00
Collecting setuptools>=40.0 (from pyspread)
Obtaining dependency information for setuptools>=40.0 from https://files.pythonhosted.org/packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl.metadata
Downloading setuptools-69.5.1-py3-none-any.whl.metadata (6.2 kB)
Collecting PyQt5-sip<13,>=12.13 (from PyQt5>=5.10->pyspread)
Obtaining dependency information for PyQt5-sip<13,>=12.13 from https://files.pythonhosted.org/packages/3c/ab/f8f1e970768fcb4ab118d4aabbfcb9b7f781088b71e1f26d813fd51c4701/PyQt5_sip-12.13.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl.metadata
Downloading PyQt5_sip-12.13.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl.metadata (504 bytes)
Collecting PyQt5-Qt5>=5.15.2 (from PyQt5>=5.10->pyspread)
Obtaining dependency information for PyQt5-Qt5>=5.15.2 from https://files.pythonhosted.org/packages/83/d4/241a6a518d0bcf0a9fcdcbad5edfed18d43e884317eab8d5230a2b27e206/PyQt5_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl.metadata
Downloading PyQt5_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl.metadata (535 bytes)
Downloading pyspread-2.2.3-py3-none-any.whl (1.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 2.7 MB/s eta 0:00:00
Downloading markdown2-2.4.13-py2.py3-none-any.whl (41 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.3/41.3 kB 169.4 kB/s eta 0:00:00
Downloading numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.0/18.0 MB 4.1 MB/s eta 0:00:00
Downloading PyQt5-5.15.10-cp37-abi3-manylinux_2_17_x86_64.whl (8.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.2/8.2 MB 4.8 MB/s eta 0:00:00
Downloading setuptools-69.5.1-py3-none-any.whl (894 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 894.6/894.6 kB 3.1 MB/s eta 0:00:00
Downloading PyQt5_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl (59.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 59.9/59.9 MB 1.8 MB/s eta 0:00:00
Downloading PyQt5_sip-12.13.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl (360 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 361.0/361.0 kB 2.0 MB/s eta 0:00:00
Installing collected packages: PyQt5-Qt5, setuptools, PyQt5-sip, numpy, markdown2, PyQt5, pyspread
Successfully installed PyQt5-5.15.10 PyQt5-Qt5-5.15.2 PyQt5-sip-12.13.0 markdown2-2.4.13 numpy-1.26.4 pyspread-2.2.3 setuptools-69.5.1
[notice] A new release of pip is available: 23.2.1 -> 24.0
[notice] To update, run: pip install --upgrade pip
(pyspread) [xxxx@fedora ~]$ python3 -m pyspread > pipx install pyspread
installed package pyspread 2.2.3, installed using Python 3.12.3
These apps are now globally available
- pyspread.exe
done! $ LANG=C apt-cache policy pyspread
pyspread:
Installed: 2.2.3-1
Candidate: 2.2.3-1
Version table:
*** 2.2.3-1 500
500 http://ftp.de.debian.org/debian trixie/main amd64 Packages
500 http://ftp.de.debian.org/debian trixie/main i386 Packages
100 /var/lib/dpkg/statusDealing with outdated/bugs is just a regular day under the guise of 'stable'.
The only reason you even are using Mint is because conical did a marketing trick sending free CDs in 2000s.
Kill many user from Excel limitation 2^20!!
you have only one data structure (the 2D table), data types are super-weak, there are no variable names... all of this guarantee a maintenance nightmare, and rightfully scares developers. But it's also a very low barrier to entry. You've got data, you paste them into the grid, and you start toying with them, before having figured anything about them.
That's an amazing superpower, when targeting non-developers, and that's why Excel is the most used programming language over the world, by far: it's probably got an order of magnitude more users than there are trained developers in the world.
I really wish Flexisheet would get to a usable point, or that Quantrix wasn't so expensive.
I searched the web but still unclear.