[Python-ideas] Implicit string literal concatenation considered harmful?

Ethan Furman ethan at stoneleaf.us
Mon May 20 19:07:49 CEST 2013


On 05/11/2013 11:37 AM, Christian Tismer wrote:
> On 11.05.13 19:24, M.-A. Lemburg wrote:
>> On 11.05.2013 19:05, Christian Tismer wrote:
>>> I think a simple stripping of white-space in
>>>
>>>      text = s"""
>>>        leftmost column
>>>          two-char indent
>>>        """
>>>
>>> would solve 95 % of common indentation and concatenation cases.
>>> I don't think provision for merging is needed very often.
>>> If text occurs deeply nested in code, then it is also quite likely to
>>> be part of an expression, anyway.
>>> My major use-case is text constants in a class or function that
>>> is multiple lines long and should be statically ready to use without
>>> calling a function.
>>>
>>> (here an 's' as a strip prefix, but I'm not sold on that)
>> This is not a good solution for long lines where you don't want to
>> have embedded line endings. Taken from existing code:
>>
>> _litmonth = ('(?P<litmonth>'
>>               'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|'
>>               'mär|mae|mrz|mai|okt|dez|'
>>               'fev|avr|juin|juil|aou|aoû|déc|'
>>               'ene|abr|ago|dic|'
>>               'out'
>>               ')[a-z,\.;]*')
>>
>> or
>>                      raise errors.DataError(
>>                          'Inconsistent revenue item currency: '
>>                          'transaction=%r; transaction_position=%r' %
>>                          (transaction, transaction_position))
>>
>
> Your first example is a regex, which could be used as-is.

If implicit string concatenation goes away, how can the regex be used as-is?


> Your second example is indented five levels deep. That is a coding
> style which I would propose to write differently for better readability.
> And if you stick with it, why not use the "+"?
>
> I want to support constant strings, which should not be somewhere
> in the middle of code. Your second example is computed, anyway,
> not the case that I want to solve.

You may not want to solve it, but it needs solving if ISC goes away.

--
~Ethan~


More information about the Python-ideas mailing list