

Piep: bringing the power of python to stream editing - gfxmonk
http://gfxmonk.net/dist/doc/piep/

======
gfxmonk
It's inspired by a similar tool called `pyp`, which I considered extending but
ended up going my own route instead. Here's some more information on why:
<http://gfxmonk.net/2012/03/28/why-piep.html>

------
cibot
Its sad that the author strongly discourages using pip to install the package.

~~~
gfxmonk
Why is that sad? Because it goes against python community norms, or some other
reason?

~~~
cibot
Yep. Now i need to go after another packaging tool to try it out. Well not a
big deal.. However imho it would be awesome if everyone stick with the
standard tools.

~~~
gfxmonk
You absolutely can use `pip`, if you want. I made sure of that (or at least
tested it once), because I know it's widely used and convenient. But I
personally think it's a terrible way to install and distribute software, and
would love for more people to try Zero Install, because I think it's the way
that software _ought_ to be distributed.

~~~
cibot
Havent tried it yet. Will definitely read up on zero install.

------
geophile
Along similar lines: <http://geophile.com/osh>

~~~
gfxmonk
somewhat, although that seems fairly heavily geared towards clusters of
machines, which I've not really tried to address with piep. I've used gnu-
parallel and cluster-ssh in the past for that sort of thing, though I'd likely
prefer a pythonic way of doing it.

------
berntb
Why not just bite the bullet and add optional {}:s to Python instead, so you
don't have to learn a tool just to get normal command line (/oneliner)
usability?

The total sum of complexity to learn/use would be about the same (and Python
would get multi instruction anon funs.)

~~~
icebraining
Python one-liners are already possible using ;

    
    
        python -c 'import sys; a = int(sys.stdin.readline())) ; print(range(a))'
    

EDIT: Not that I'm saying piep is useless; far from it, it seems very
interesting. I'm saying that optional {}s wouldn't solve the problem that piep
is trying to solve.

~~~
berntb
Yes, but my point was: How do you add an if to that Python code... or anything
else dependent on Python indentation?

Another example: map {} is better than having to learn weird single
instruction variants like list comprehensions. And so on.

In this case, it is easy to have a shell alias that loads a module and
executes its parameter in any other language. Then you have any piep
functionality not already built in. Ergo, no need for extra things to learn,
in those languages.

~~~
michaelmior
You add an if using the ternary style syntax. i.e. "if foo then bar else baz".
I think that's sufficient for what piep is trying to do. I can't imagine
trying to do anything else with indentation that couldn't be accomplished with
list comprehensions.

~~~
berntb
Sigh, do people really don't _want_ to see that full support for one liners
(not to mention anon funs of > 1 instruction) is a feature?! :-(

