[HN Gopher] Pyspread - Pythonic Spreadsheet
       ___________________________________________________________________
        
       Pyspread - Pythonic Spreadsheet
        
       Author : Qem
       Score  : 238 points
       Date   : 2024-05-07 11:08 UTC (11 hours ago)
        
 (HTM) web link (pyspread.gitlab.io)
 (TXT) w3m dump (pyspread.gitlab.io)
        
       | frognumber wrote:
       | 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.
        
         | sevagh wrote:
         | Every dev here loves throwing unglamorous volunteer work to
         | non-developers, acting as if it's a favor.
        
           | blitzar wrote:
           | "You will be paid in exposure" - this is where the venn
           | diagram for devs & social media influencers intersect.
        
             | psychoslave wrote:
             | So what, who want raw wild naked large exposure? If you
             | don't get an army of free PR specialists, lawyers and body
             | guards to protect you and your beloved ones h24 every
             | single day for the rest your lives, it's an obviously net
             | negative situation.
        
             | jjmarr wrote:
             | Except when you contribute to open-source, you typically
             | have a legal document (the licence) that explains _how_ the
             | exposure will be paid.
        
           | JulianChastain wrote:
           | Some of the motivation for this comes from how often devs
           | want to contribute to open source but are intimidated by how
           | difficult the barrier of entry is, particularly for large
           | projects. It's surprisingly hard to find a good list of
           | projects that a beginner or even intermediate programmer can
           | substantially contribute to. The ones that do exist tend to
           | have the low hanging fruit plucked pretty quickly.
        
             | frognumber wrote:
             | A few points:
             | 
             | - 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.
        
               | sevagh wrote:
               | I love open source. My cynicism isn't about open-source,
               | but about the OP's first post being "these docs suck,
               | _snaps fingers_ maybe one of you non-devs can work on it.
               | "
        
               | frognumber wrote:
               | Good life lesson: You don't know until you ask.
               | 
               | 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.
        
           | resource_waste wrote:
           | >Every dev here loves doing volunteer work as a favor.
           | 
           | 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.
        
             | sevagh wrote:
             | This sounds made up tbh. I mean, I agree it's common to
             | feel this "pressure" but the day you discover the pressure
             | isn't real is the day you level up. And I charge plenty for
             | fixing peoples' software pains.
             | 
             | 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.
        
         | photochemsyn wrote:
         | pandas has a good documentation model for installation and
         | usage:
         | 
         | https://pandas.pydata.org/docs/getting_started/install.html
         | 
         | https://pandas.pydata.org/docs/user_guide/10min.html
        
       | rbanffy wrote:
       | The Gods have listened to me!
        
       | kwhitefoot wrote:
       | 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.
        
         | kreddor wrote:
         | I tried to install it on ubuntu 22.04 and got a different error
         | using pip. I'm not experienced enough with Python to quickly
         | figure out how to proceed. It's a shame it isn't easier to
         | install.
        
         | amias wrote:
         | stop trying to use the system python for application
         | development. You will break your OS and you will make your code
         | machine specific. Go read up on Virtual Envs , you were the
         | problem here.
        
           | tupolef wrote:
           | And for the lazy ones, pipx uses Virtual Envs and can install
           | most things from a path, an archive or a package name.
           | Install pipx and check pipx install --help.
        
           | evilduck wrote:
           | Python has like a dozen competing solutions in their package
           | management space. Python is clearly the problem, not the
           | user.
           | 
           | Their docs don't say that, they advertise exactly what the GP
           | ran. Python needs to unfuck its ecosystem.
        
             | smaudet wrote:
             | Yeah they kinda screwed the pooch on that.
             | 
             | 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.
        
           | adolph wrote:
           | venv not always a panacea for system python                 $
           | 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/python
        
             | metadat wrote:
             | Correct, virtualenv isolates package installation but
             | doesn't handle installing or managing arbitrary Python
             | versions.
             | 
             | Node.js is similar with npm.
             | 
             | Is there something like nvm but for Python?
        
               | djd20 wrote:
               | Try pyenv - very handy, includes funkier editions like
               | pypy
        
           | kwhitefoot wrote:
           | Why is this directed at me? I'm not the one doing the
           | software development, I was just trying to install an
           | application.
        
           | UncleEntity wrote:
           | > stop trying to use the system python for application
           | development.
           | 
           | 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.
        
           | sensen7 wrote:
           | If venvs were a reasonable solution here, presumably the
           | pyspread authors would have included them in the installation
           | instructions. Instead they just say to "pip install", which
           | predictably does not work for most people. It sounds a bit
           | unfair to tell someone that "they're the problem" when they
           | followed the official installation instructions to the
           | letter. I would agree in classifying this as another case of
           | python developers being unable to provide a working way to
           | install their software (if code that the average person can't
           | even get to execute can even be called "software".)
        
         | Qem wrote:
         | Under Fedora 39 I was able to pip install and run it withhout
         | problems, inside a venv environment:
         | (pyspread) [xxxx@fedora ~]$ pip install pyspread
         | Collecting pyspread           Obtaining dependency information
         | for pyspread from https://files.pythonhosted.org/packages/a5/e2
         | /19ddb20b46ae46f11102f9095bf5bf00cb28cc79b35f38257f84a98ecd1d/p
         | yspread-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.pytho
         | nhosted.org/packages/2f/e6/a1f9853e4933c312c6de9c79d126c7d92ef6
         | 9ae0e53895fb1ceb0ecc77a6/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/a9ef8d5fe4b08bfd0dd1330
         | 84deefcffc4b2a37a9ca35a22b48622d59262/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.python
         | hosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd45
         | 12387a8632860f3ac9cd225/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_x8
         | 6_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 http
         | s://files.pythonhosted.org/packages/f7/29/13965af254e3373bceae8
         | fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-n
         | one-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/f8f1e970768fcb4ab
         | 118d4aabbfcb9b7f781088b71e1f26d813fd51c4701/PyQt5_sip-12.13.0-c
         | p312-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 htt
         | ps://files.pythonhosted.org/packages/83/d4/241a6a518d0bcf0a9fcd
         | cbad5edfed18d43e884317eab8d5230a2b27e206/PyQt5_Qt5-5.15.2-py3-n
         | one-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-m
         | anylinux_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-m
         | anylinux_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
        
         | sorenjan wrote:
         | Use pipx to install applications instead. It even works on
         | Windows.                 > pipx install pyspread
         | installed package pyspread 2.2.3, installed using Python 3.12.3
         | These apps are now globally available             -
         | pyspread.exe         done!
        
         | ceving wrote:
         | Debian has it out of the box:                   $ 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/status
        
           | kwhitefoot wrote:
           | Thank you!
        
         | resource_waste wrote:
         | Stop using debian-family.
         | 
         | Dealing 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.
        
         | globular-toast wrote:
         | You're not really supposed to pip install applications. pip is
         | a developer tool. There is pipx which is great, but I still
         | think it's a developer tool. It's annoying when projects say to
         | pip install stuff. It's never the right thing to do.
        
         | pasc1878 wrote:
         | Compare this with the comments above re nix where it just ran -
         | although to get a python app to build on nix is a pain but at
         | least only one person has to do it.
        
       | voxelghost wrote:
       | I am Jacks endless disappointment. j/k - it looks nice - how
       | would you compare/position it against something like jupyter lab?
        
         | fab13n wrote:
         | the magic power of spreadsheets is that they encourage
         | improvisation, and it probably applies to that one.
         | 
         | 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.
        
           | WillAdams wrote:
           | and _that_ is why I'm still very sad that Lotus Improv didn't
           | make it in the marketplace --- gathering all the formulae
           | into one pane was _incredible_ for organization and providing
           | a single top-level view of what a spreadsheet was doing.
           | 
           | I really wish Flexisheet would get to a usable point, or that
           | Quantrix wasn't so expensive.
        
         | metadat wrote:
         | What is the meme behind this reference: "I am Jack's endless
         | disappointment"?
         | 
         | I searched the web but still unclear.
        
           | fishyjoe wrote:
           | https://www.quora.com/What-does-Im-Jacks-complete-lack-of-
           | su...
        
       | oulipo wrote:
       | I guess it would be "easy" to compile to WASM using pyodide or
       | such, and have a full in-browser version? might be cool
        
         | codingglass wrote:
         | Looks like the interface/windowing is built on Qt/PyQt. QT does
         | have a WebAssembly build, but I don't think it's all that
         | simple of a transition.
        
       | zero-sharp wrote:
       | I wonder what the performance is like?
        
       | ssl232 wrote:
       | 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.
        
         | tichiian wrote:
         | That A1 mode is Excel "Baby-Mode", you can switch to R1C1 mode
         | in settings. Things are far easier then, and more sane.
         | 
         | His Excel-lence also recommends this:
         | https://www.youtube.com/watch?v=JxBg4sMusIg
        
           | falcor84 wrote:
           | Baby mode?! As a full grown adult, I find the cognitive load
           | of the base 26 arithmetic of "what column is an offset of 8
           | to the right of AW" to be exactly what I needed to fully
           | forget about what I came there to do in the first place
        
             | epcoa wrote:
             | Baby's lack object persistence and a formed theory of mind,
             | seems to check out.
        
           | mhh__ wrote:
           | Never seen anyone actually use this.
           | 
           | The "real" answer is to use names and tables. That and
           | generally not having data flying up down left and right.
        
             | steine65 wrote:
             | Agreed! Hard cell references should rarely be used. Names
             | for metadata variables (eg. Current_Month) and tables for
             | datasets.
        
               | tichiian wrote:
               | Yes. But many parts of excel don't support those. E.g.
               | conditional formatting just doesn't deal with names.
               | 
               | Also, when you need names, it is a sign to reach for a
               | proper programming enviroment like Delphi or Lazarus.
        
       | amias wrote:
       | this seems like a huge reinvention of jupyiter , i really hope
       | they aren't going to recreate all the bugs.
        
         | cdrini wrote:
         | I think one major difference between spreadsheets and Jupyter
         | notebooks is state/dependency graph. In a notebook, cells don't
         | depend on each other. They can be run many times, and the order
         | they're run in matters. This is one of the major gotchas with
         | notebooks. With spreadsheets, they're generally deterministic.
         | There is no notion of "cell order", cells are recomputed
         | automatically depending on the dependency graph between the
         | cells. This results in a pretty big user experience difference.
        
           | ziml77 wrote:
           | But according to other comments here, that's unfortunately
           | not how this spreadsheet program works.
        
             | cdrini wrote:
             | Yes in that it doesn't appear to use a dependency graph to
             | track recomputes; it recomputes everything on a cell change
             | (according to another commenter anyways). But the UX effect
             | is still the same in that the user never has to think about
             | cell order, and every cell is always consistent with each
             | other.
        
       | tichiian wrote:
       | 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.
        
         | toss1 wrote:
         | Are you suggesting a flavor of Lisp? Because THAT could be very
         | nice in a cell-format.
        
           | hodapp wrote:
           | There is SIAG (Scheme in a Grid) that has been around for
           | ages: https://siag.nu/siag/
        
             | behnamoh wrote:
             | I like Lisp but why are almost ALL Lisp-related websites so
             | ugly? They still have the 90s look and feel.
        
       | DrNosferatu wrote:
       | I couldn't understand what's the datatype of each cell. - How to
       | use NumPy and others?
        
       | WillAdams wrote:
       | 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)
        
         | heggy wrote:
         | When would you take OpenSCAD over Blender?
        
           | giancarlostoro wrote:
           | My understanding is that with CAD software you can go
           | backwards and have (near?) infinite edit history, in a way
           | you cannot with Blender. Which makes it very, very useful.
        
             | spott wrote:
             | A lot of cad software actually has an editable history: you
             | can go back 100 steps and modify a dimension or a step and
             | have the rest of the model updated to take that new
             | dimension into account.
             | 
             | I wouldn't work with any cad software that _didn't_ have
             | that ability.
        
             | constantcrying wrote:
             | This is called parametric design. Since CAD programs do not
             | operate on meshes, this allows you to e.g. change the
             | dimension on some part and have the rest adjust
             | accordingly.
             | 
             | 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.
        
           | bitdivision wrote:
           | Blender wasn't originally designed to be used for CAD type
           | applications. It's possible of course, but you're likely
           | better off with something specifically meant for precision
           | CAD models. Specifically for 3d printing, I don't think
           | blender is ideal.
           | 
           | I think most programmers like OpenSCAD - what better way to
           | make parametric CAD models than by writing code?
        
           | gibspaulding wrote:
           | OpenSCAD is really good for parametric designs. One of the
           | first things I designed in OpenSCAD was a bicycle sprocket
           | where you could input how many teeth you wanted, link length,
           | how thick, etc. and OpenSCAD would generate the sprocket
           | according to those parameters. I recall seeing a while back
           | that blender was adding support for this kind of thing so I'm
           | sure it's possible, but it was very intuitive in OpenSCAD.
           | 
           | 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.
        
             | WillAdams wrote:
             | I've tried a lot of 3D software over the years, and
             | OpenSCAD has been the one I've been most successful with
             | (along w/ Carbide Create, but I work for that company....)
             | 
             | 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)
        
           | constantcrying wrote:
           | Blender can't do CAD. At least it can't do what you would
           | want to do in a CAD program.
           | 
           | The most important difference is that Blender operates on
           | meshes, CAD programs don't.
        
         | LeifCarrotson wrote:
         | KiCad for electronics development.
         | 
         | 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.
        
           | WillAdams wrote:
           | Good points.
           | 
           | 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?
           | 
           | https://news.ycombinator.com/item?id=33571555
        
           | synergy20 wrote:
           | drawio for diagrams
        
           | johnmaguire wrote:
           | Gimp is really not great for photo editing IMO - it really
           | shines at _photo manipulation_. (i.e. it is Photoshop, not
           | Lightroom.)
           | 
           | 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.
        
         | diath wrote:
         | But why do you even need a distro to begin with just to ship
         | certain software set? Install Arch/Gentoo and install whatever
         | is your preferred software of choice, or hell, you can even do
         | that on any other distro.
        
           | WillAdams wrote:
           | I think it would be an interesting thing for a distro to
           | market/focus on, and it might help to find/identify/encourage
           | additional such software.
        
             | everforward wrote:
             | Isn't that basically package groups (or whatever the
             | district-specific terms are)?
             | 
             | 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.
        
           | comte7092 wrote:
           | The value a dedicated distro provides here is that you don't
           | have to do the legwork to research and find the best tools.
           | 
           | As power users we may want to do that ourselves, but a lot of
           | people place value in having that curation done for them.
        
         | TheCleric wrote:
         | I tend to use AlternativeTo for that.
         | 
         | For example: https://alternativeto.net/software/pyspread/
        
       | dfox wrote:
       | 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.
        
         | cmcconomy wrote:
         | what if you wrap all your cell contents with a memoize
        
           | mewpmewp2 wrote:
           | Or maybe worst case allow user to add deps like in React
           | useEffect.
        
         | dgacmu wrote:
         | That gets broken by constructs like sum(all of column 5) when
         | new rows or columns are added.
         | 
         | (It's very similar to the problem of locking in databases)
        
         | movpasd wrote:
         | One issue with this is that arbitrary Python code can have
         | arbitrary side-effects.
         | 
         | 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.
        
       | regularfry wrote:
       | 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.
        
       | adolfopd wrote:
       | Eneble number line to 2^25 or minimal 2^22 by default.
       | 
       | Kill many user from Excel limitation 2^20!!
        
       | Kim_Bruning wrote:
       | nix run nixpkgs#pyspread
       | 
       | Not saying Nix(os) Is The Way, but sometimes it does ok.
        
         | ingenieroariel wrote:
         | I did not believe you and just typed it on OSX, half a minute
         | later the app was ready for me to use.
         | 
         | 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
         | 
         | https://pasteboard.co/P1eh7B7W8C9R.png
        
       | brudgers wrote:
       | Related? Python in Excel:
       | 
       | https://support.microsoft.com/en-us/office/get-started-with-...
        
         | ptx wrote:
         | Not actually "in Excel", though. The Python code runs on
         | Microsoft's servers (they say in the introduction) and Excel is
         | just a client.
         | 
         | 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?
        
         | mhh__ wrote:
         | Awful. They don't seem to understand excel anymore.
         | 
         | If you want to see this done properly (on some limit) look at
         | pyxll.
        
       | eigenket wrote:
       | I'm also interested in the least pythonic spreadsheet, has anyone
       | worked on that?
        
       | dang wrote:
       | 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)
        
       | justin_oaks wrote:
       | 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.
        
         | TheCleric wrote:
         | I like it and I'll take it a step further. I think this is
         | important information for a developer to admit to THEMSELVES at
         | least. Being all things to all people is a route straight to
         | burnout for an open source project.
        
         | behnamoh wrote:
         | And yet, it is not available on macOS, presumably THE platform
         | where that target user group lives.
        
       | breckognize wrote:
       | 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
        
       | Aliyekta wrote:
       | the api page doesn't seem to work.
        
       | JosephRedfern wrote:
       | 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.
        
       | golem14 wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2024-05-07 23:00 UTC)