[Scons-users] Module Scons.Util

Bill Deegan bill at baddogconsulting.com
Sun Oct 1 17:16:02 EDT 2017


Do you have a stack trace where that bit of logic is called?

Ideally I'd figure out when/where it's getting exercised and make sure any
change doesn't break anything useful.

I'm guessing not tests are properly testing this segment of code..

On Sun, Oct 1, 2017 at 1:37 PM, Bill Deegan <bill at baddogconsulting.com>
wrote:

> James,
>
> You responded to the digest message rather than this thread:
>
> No you did not quite get that Bill
>> The elif clearly limits the type of s at this point to a duck type of
>> sequence
>> then l is initialized to an empty sequence type
>> then in the for loop for each element of s the function recursively is
>> called on the element returning a string which is appended to l
>> l is then discarded on the return of the join of s with a blank between
>> each. This assumes all the elements of s can be converted to a string type
>> for the join.
>> Thus l is unneeded and so is the for loop over s, which merely appends
>> everything to l.
>>
>
> Gotcha. I see that now.
> Strange, let me look at the history and see if is a bad merge, regardless
> needs to be cleaned up.
>
> -Bill
>
> On Sun, Oct 1, 2017 at 10:27 AM, Bill Deegan <bill at baddogconsulting.com>
> wrote:
>
>> I think you're mistaken.
>> If s is a UserString or not a Sequence or BaseStringTypes then it's
>> actually doing something.
>>
>> It could probably be rewritten as:
>>
>> return ''.join([to_String_for_subst(e) for e in s])
>>
>>
>>
>> On Sun, Oct 1, 2017 at 10:16 AM, James Rinkevich <rinkevichjm at gmail.com>
>> wrote:
>>
>>> in this function
>>> def to_String_for_subst(s,
>>>                         isinstance=isinstance, str=str,
>>> to_String=to_String,
>>>                         BaseStringTypes=BaseStringTypes,
>>> SequenceTypes=SequenceTypes,
>>>                         UserString=UserString):
>>>
>>>     # Note that the test cases are sorted by order of probability.
>>>     if isinstance(s, BaseStringTypes):
>>>         return s
>>>     elif isinstance(s, SequenceTypes):
>>>         l = []
>>>         for e in s:
>>>             l.append(to_String_for_subst(e))
>>>         return ' '.join( s )
>>>     elif isinstance(s, UserString):
>>>         # s.data can only be either a unicode or a regular
>>>         # string. Please see the UserString initializer.
>>>         return s.data
>>>     else:
>>>         return str(s)
>>>
>>> the lines
>>>         l = []
>>>         for e in s:
>>>             l.append(to_String_for_subst(e))
>>> have no effect and just waste time, perhaps someone intended the return
>>> line to be
>>>        return ' '.join( l )
>>> instead of
>>>        return ' '.join( s )
>>>
>>>
>>>
>>> _______________________________________________
>>> Scons-users mailing list
>>> Scons-users at scons.org
>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20171001/80a80ef5/attachment.html>


More information about the Scons-users mailing list