On Tue, Apr 4, 2023 at 7:19 AM Jonathan Crall <erotemic@gmail.com> wrote:
Would there be any downside to the Python CLI automatically dedenting the input string given to -c? I can't think of any case off the top of my head where it would make a previously valid program invalid. Unless I'm missing something this would strictly make previously invalid strings valid.

Thoughts?

Very strong +1 to this. That would be useful and it doesn't seem like there's a downside. I often make bash functions that pipe files or database queries to Python for post-processing. I also sometimes resort to Ruby because it's easy to write one-liners in Ruby and annoying to write one-liners in python/bash.

I suppose there's some ambiguity in the contents of multi-line """strings""". Should indentation be stripped at all in that case? E.g.
python -c "
    '''
    some text
    ''''
"

But it seems simpler and easier to understand/document if you pre-process the input like using an algorithm like this:

* If the first nonempty line has indentation, and all subsequent lines either start with the same indentation characters or are empty, then remove that prefix from those lines.

I think that handles cases where editors strip trailing spaces or the first line is blank. So e.g.:
python -c "
    some_code_here()
"
Then python receives  something like "\n    some_code_here\n"

python -c "
    some_code here()

    if some_some_other_code():
        still_more_code()
"
Then python receives something like "\n    some_code_here\n\n    if ..."

This wouldn't handle cases where indentation is mixed and there is a first line, e.g.:
python -c "first_thing()
    if second_thing():
        third_thing()
"
That seems simple enough to avoid, and raising a syntax error is reasonable in that case.

Best wishes,
Lucas