8 ms·
Hey, what the -- this is my thing. ^_^ What's it doing at the top of HN? A quick reply to some of the comments about argparse. Gooey is super old at this point
by goostavos 3y ago
Hey, what the -- this is my thing. ^_^ What's it doing at the top of HN?
A quick reply to some of the comments about argparse. Gooey is super old at this point. Argparse was a solid choice at the time when Gooey started. These days, Gooey itself speaks in JSON and is decoupled from argparse itself. However, argparse remains the main "blessed" interface (mostly because nobody else has built a different one).
Some fun FYIs: You can also invoke any arbitrary executable[0], not just python, which is pretty handy.
Re: last commit being 2 years ago. It gets harder to justify working for free on niche software as you get older and priorities change :( If it's any consolation, I DO feel guilty all the time. I have no idea why, but where I live, there's "GOOEY" graffiti tagged all over the place, so it's a nice ever-present reminder of the issue tracker that's currently going unloved. haha.
[0] https://chriskiehl.com/article/gooey-as-a-universal-frontend https://chriskiehl.com/article/gooey-as-a-universal-frontend
- c6401 3y agoThank you for your work, awesome software. I'm wondering if there's a way to use python-fire instead of argpraser with gooey?
- seeknotfind 3y agoThis is a really cool idea. I love interface disconnected from APIs. We have so many annoyances these days because applications can't be programmatically controlled. Honestly, I'd like to see legislation saying all application functionality needs to have APIs.
- sezna 3y agoI would not like to have to concern myself with exposing government-compliant APIs when coding any arbitrary tool...the free market can reward good development.
- dimask 3y ago> the free market can reward good development ha ha No way, especially because all the people taking most market-business-related decisions (eg which software to buy) are not tech-oriented. If we had more power on these decisions, that would mean that development, and even advertising of products, would be closer to what the parent comment suggest. But alas.
- treyd 3y ago> the free market can reward good development. Markets cannot regulate nuanced behavior like this. Microsoft is a trivial example of anti-user practices and generally garbage design nonetheless being adopted due to their tremendous efforts of corporate propaganda and scaremongering the decision makers about their products.
- cdogl 3y ago> Honestly, I'd like to see legislation saying all application functionality needs to have APIs. The security implications of this give me heart palpitations.
- sroussey 3y agoThe opportunities for abuse are manifold.
- seeknotfind 3y agoThis is true, but the abuse would still be possible today if someone is reverse engineering software or talking to servers where everything is over APIs anyway. I'm talking about local interface decoupled with a local API from implementation. The problem today is that programmers can't compose or build software on top of other software they have.
- cdogl 3y ago> I'm talking about local interface decoupled with a local API from implementation. To expose this "local API" usefully, you must either: 1. Share memory with other processes (new attack vector), or 2. Listen on some kind of network or native socket for messages and authn+authz the commands that come through it based on some security protocol (new attack vector). The value proposition of an API is to allow control and data flow between an application and some external entity. It seems to me that it has security implications by definition.
- elbear 3y agoMaybe think of incentives rather than legislation
- rocqua 3y agoI think legislation demanding most tools have an API would be a good thing. Not 'tho shalt expose a REST endpoint'. But instead something like 'every operation a user can do with this tool, they also need to be able to trigger with an interface that is programable, and that interface needs to be documented'. Saying 'our programable interface is the gui, use autohotkey' is fine, as long as you properly document all click regions. This would be a massive productivity boost to anyone using such tools. It would also be great for disabled people.
- elteto 3y agoHey! Cool project! I have a question: why do you dump out sys.argv to a local file in the CWD? [0] tmp.txt is hardly a unique name… or am I missing something? [0] https://github.com/chriskiehl/Gooey/blob/be4b11b8f27f500e7326711641755ad44576d408/gooey/python_bindings/control.py#L194 https://github.com/chriskiehl/Gooey/blob/be4b11b8f27f500e732...
- hiatus 3y agoSeems like it's potentially used for debugging, especially given that pycharm apparently appends additional params when invoking a new process (as noted in the comment at the top of the file).
- linsomniac 3y agoArgparse is still a pretty solid choice, because it's so ubiquitous and well documented and fairly easy. Typer and Click are both very nice, with some good ergonomics, but I find Typer's "tutorial" style documentation to be rather hard to search to find answers to things like "What arguments does Typer.App() take?" I have a program I'm working on right now that does user-initiated argument parsing, and argparse is a great fit for it. I'd love to have a text-based UI as an option to drop users into, but Textualize requires Click (IIRC), and using Textual directly in my code to create the UI I've spent hours on and had absolutely no luck even getting started.
- zelphirkalt 3y agoWhile Typer looks nice, I found it to be annoying. It outputs everything depending on the width of your terminal emulator with spaces instead of newlines. Not sure who thought that was a good idea, but try copy pasting any output of it in any chat or anywhere that is not the same width in chars as your terminal emulator. The output becomes complete shit and unreadable. The second thing is, that it forces you to adhere to its paradigm of being a global mutable state object, instrad of being passed around neatly like argsparse, which makes code less understandable and tests needlessly more complicated. Overall I have found it to be very much not worth it adding typer as a dependency. Hard pass.
- linsomniac 3y agoOn the other hand, I've switched to using Typer for most of my argument parsing because it's not an object I have to pass around. It lets me have the arguments co-located with the code, which is convenient. Especially for more complicated argument parsing, like one of my commands for our deploy process which has maybe 15 sub-commands, that sort of parsing with argparse is kind of a nightmare.
- zelphirkalt 3y agoThe solution to this kind of issue is something like parameters (See for example https://www.gnu.org/software/guile/manual/html_node/Parameters.html https://www.gnu.org/software/guile/manual/html_node/Paramete...). They are also thread safe. One can easily set them in tests without having to mock things. I am not sure it is possible to even have something like this in Python. Have not seen it anywhere in Python. > Passing arguments to functions is thread-safe, but that soon becomes tedious when there’s more than a few or when they need to pass down through several layers of calls before reaching the point they should affect. Introducing a new setting to existing code is often easier with a parameter object than adding arguments. But also, if you really wanted to, you could set the argsparse object to a global variable and then import it everywhere else. So that is not a limitation.
- e40 3y agoGraffiti?? Where do you live? Any pics of it?
- brookst 3y agoPresumably Seattle; Gooey is a prolific tagger. This appears to be their instagram: https://www.instagram.com/gooeygue/ https://www.instagram.com/gooeygue/
- rollcat 3y ago> These days, Gooey itself speaks in JSON and is decoupled from argparse itself. This sounds cool. I saw the headline and before clicking anything, my first thought was "bet this heavily depends on argparse", so this is surprising - in a very nice way. I'm a hardcore getopt fan, mostly because I believe the developer's convenience is nowhere as important as the convenience of the user, and the user shouldn't need to care what programming language or option parsing library the developer chose. argparse, Click, Go's flag/X11-style, and many other similar libraries break conventions that are ingrained in half a century's collective muscle memory. But with a layer in the middle, it sounds like you can eat your cake and have it too.
- puzzlingcaptcha 3y ago> Gooey is super old at this point. It's only super old because you abandoned it (and I don't mean to be judgemental, it is what it is). Worse yet, no viable alternative has shown up to replace it nor either of its forks gained traction.
- DontchaKnowit 3y agoNo its super old cause it was created a long time ago? Why dont you go update it or make a free up to date version? Why do people act like software creators owe the world something?
- puzzlingcaptcha 3y agoAnd Python itself was released in 2000! No wonder everyone has abandoned it these days, it's ancient!