I'm not entirely sure how genshi handles this as I make sure all my
string-like types are unicode all the way in from the validator to the
DB, but if your use case is valid (read: could benefit the others) we
could add it as a 'helper function in tg2'

On Thu, Dec 18, 2008 at 4:28 PM, Andi Albrecht
<[email protected]> wrote:
>
> I agree, it'd be a cosmetic change and the docstring is clear. I've
> came across this function some time ago while looking for a handy
> "convert to unicode" function to use it in templates or at least to
> prepare some values for the template.
>
> My problem is solved by doing a string conversion before calling
> to_unicode (as you already suggested), but breaking validator code
> would be a bad side-effect ;-)
>
> Thanks for your reply,
>
> Andi
>
> On Thu, Dec 18, 2008 at 8:30 PM, Jorge Vargas <[email protected]> wrote:
>>
>> On Thu, Dec 18, 2008 at 3:36 AM, Andi Albrecht
>> <[email protected]> wrote:
>>>
>>> Hi all,
>>>
>>> the docstring of util.to_unicode() says clearly that it converts an
>>> "encoded string to unicode string". Unfortunately when the function is
>>> called with anything else than an instance of basestring (str,
>>> unicode) the input value is returned without any type conversion. It's
>>> actually not what I'd expected. What I'd expected is either that the
>>> function raises an exception if the input value isn't an instance of
>>> basestring or that the function tries to convert the input value into
>>> an unicode. For example, when calling "to_unicode(1L)" I would expect
>>> that the return value is u"1" but not 1L.
>>>
>>> Are there any concerns to add some simple type conversion. IMO something 
>>> like
>>>
>>> if not isinstance(value, basestring):
>>>  value = unicode(value)
>>> if isinstanve(value, str):
>>>  [...conversion as usual...]
>>> return value
>>>
>>> is better than returning value without even trying to convert it to an
>>> unicode as the function's name suggests.
>>>
>>> Andi
>>>
>> hello I assume you are talking about the 1.x branch.
>>
>> I don't consider this a bug, as you pointed out the docstring clearly
>> states it's a str-> unicode converter
>>
>> Now I don't think changing the behavior is good for two reasons
>> 1- util is really a package of util functions for TG not for client code
>> 2- this function is used here:
>> widgets/base.py:        params["value"] =
>> to_unicode(self.adjust_value(value, **params))
>>
>> therefore changing the function will mean that the widget will not
>> have ints and floats, which I'm certain are used by the validators.
>>
>> if you want this behavior you can do:
>>
>>>>> util.to_unicode(str(1L))
>> u'1'
>>
>> we could change the function name, after all it's used only at one
>> stop in the tg1 codebase ( at least that's what grep says) but why
>> break for a cosmetic change?
>>
>> >
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to