[Zope3-Users] Re: Annoying thing about schema
Philipp von Weitershausen
philipp at weitershausen.de
Thu Jun 5 06:10:14 EDT 2008
On 5 Jun 2008, at 11:53 , Peter Bengtsson wrote:
> 2008/6/5 Philipp von Weitershausen <philipp at weitershausen.de>:
>> Peter Bengtsson wrote:
>>> Suppose you've written this:
>>> class ISomething(zope.interface.Interface):
>>> foo = zope.schema.TextLine(title="Foo")
>>> then you get the error below.
>>> First of all, why can't it just help me and just convert the str
>>> to a
>>> unicode. All it'd need to do is just::
>>> title = unicode(title)
>>> Django does this.
>>> If someone does something bad like `TextLine(title="Ölmage")` that
>>> developer should rightly get a UnicodeDecodeError.
>>> Secondly, if there is an actual reason for this extreme analism, why
>>> can't the error be wrapped into something more user friendly?
>> Very good points. I think UnicodeDecodeErrors have a bad
>> reputation, though
>> (mostly because of Python's stupid implicit conversion). I think
>> policy is very sane in this regard: wherever human-readable text
>> has to be
>> entered, either a unicode object or a string just containing ASCII
>> characters are acceptable. A very explicit error message stating
>> that exact
>> policy should be raised. Look at Grok's error messages, we've tried
>> making them understandable.
> This was actually Grok development. But the interface and schema part
> is all zope3.
> I should have posted to zope3-dev instead.
zope-dev (my mistake to suggest zope3-dev, it's been dead for a while
>> I think a proposal on zope3-dev (plus a patch) would be welcomed.
> I'm not sure how to write the proposal. Can't I just make a feature
> request on launchpad or something?
An email to zope-dev would be the best. Writing a proposal is easy, it
can be done in a couple of paragraphs:
1. State the current situtation
2. Identify the problem that you have with the current situation
3. Suggest a solution
4. Identify potential risks
P.S.: As you may have noticed, zope.schema fields use fields
themselves to define the types of their attributes/parameters. For
instance, the 'title' and 'description' arguments are
zope.schema.TextLines. So, in order to make those parameters accept
both unicode and pure ASCII, there are two choices:
a) change zope.schema.Text and TextLine to accept both unicode and str
objects, as long as the 'str' object contained just ASCII (-> validate
and _validate methods)
b) introduce another schema field that has the aforementioned
properties, thus leaving Text and TextLine unchanged.
I personally prefer a), but there might be good reasons to do b).
Definitely something worth discussing in your proposal :).
More information about the Zope3-users