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? $ ./bin/zopectl debug Traceback (most recent call last): File "/home/peterbe/buildout-eggs/tmpUIBNQF/zc.zope3recipes-0.7.0-py2.4.egg/zc/zope3recipes/debugzope.py", line 60, in debug File "/home/peterbe/buildout-eggs/tmpUIBNQF/zc.zope3recipes-0.7.0-py2.4.egg/zc/zope3recipes/debugzope.py", line 39, in zglobals File "/home/peterbe/buildout-eggs/zope.app.appsetup-3.4.1-py2.4.egg/zope/app/appsetup/appsetup.py", line 111, in config context = xmlconfig.file(file, context=context, execute=execute) File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/xmlconfig.py", line 610, in file File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/xmlconfig.py", line 546, in include File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile File "/usr/lib/python2.4/xml/sax/expatreader.py", line 107, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib/python2.4/xml/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib/python2.4/xml/sax/expatreader.py", line 207, in feed self._parser.Parse(data, isFinal) File "/usr/lib/python2.4/xml/sax/expatreader.py", line 348, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/config.py", line 542, in end File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/config.py", line 690, in finish File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/xmlconfig.py", line 546, in include File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile File "/usr/lib/python2.4/xml/sax/expatreader.py", line 107, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib/python2.4/xml/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib/python2.4/xml/sax/expatreader.py", line 207, in feed self._parser.Parse(data, isFinal) File "/usr/lib/python2.4/xml/sax/expatreader.py", line 348, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/config.py", line 542, in end File "/home/peterbe/buildout-eggs/tmpU_pQr6/zope.configuration-3.4.0-py2.4.egg/zope/configuration/config.py", line 690, in finish File "/home/peterbe/buildout-eggs/tmp_TGW-i/grok-0.12.1-py2.4.egg/grok/zcml.py", line 48, in grokDirective File "/home/peterbe/buildout-eggs/tmp_TGW-i/grok-0.12.1-py2.4.egg/grok/zcml.py", line 53, in do_grok File "/home/peterbe/buildout-eggs/martian-0.9.3-py2.4.egg/martian/core.py", line 194, in grok_dotted_name grok_package(module_info, grokker, **kw) File "/home/peterbe/buildout-eggs/martian-0.9.3-py2.4.egg/martian/core.py", line 199, in grok_package grok_package(sub_module_info, grokker, **kw) File "/home/peterbe/buildout-eggs/martian-0.9.3-py2.4.egg/martian/core.py", line 197, in grok_package grok_module(module_info, grokker, **kw) File "/home/peterbe/buildout-eggs/martian-0.9.3-py2.4.egg/martian/core.py", line 202, in grok_module grokker.grok(module_info.dotted_name, module_info.getModule(), File "/usr/lib/python2.4/site-packages/martian-0.9.3-py2.4.egg/martian/scan.py", line 118, in getModule File "/usr/lib/python2.4/site-packages/martian-0.9.3-py2.4.egg/martian/scan.py", line 188, in resolve File "/home/peterbe/dev/GROK/GrokGlossary/src/grokglossary/app.py", line 20, in ? class ITerm(interface.Interface): File "/home/peterbe/dev/GROK/GrokGlossary/src/grokglossary/app.py", line 21, in ITerm term = schema.TextLine(title='Term') File "/home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/_bootstrapfields.py", line 278, in __init__ super(Text, self).__init__(*args, **kw) File "/home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/_bootstrapfields.py", line 260, in __init__ super(MinMaxLen, self).__init__(**kw) File "/home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/_bootstrapfields.py", line 108, in __init__ self.title = title File "/home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/fieldproperty.py", line 52, in __set__ field.validate(value) File "/home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/_bootstrapfields.py", line 138, in validate self._validate(value) File "/home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/_bootstrapfields.py", line 263, in _validate super(MinMaxLen, self)._validate(value) File "/home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/_bootstrapfields.py", line 165, in _validate raise WrongType(value, self._type) ZopeXMLConfigurationError: File "/home/peterbe/dev/GROK/GrokGlossary/parts/app/site.zcml", line 4.0-4.34 ZopeXMLConfigurationError: File "/home/peterbe/dev/GROK/GrokGlossary/src/grokglossary/configure.zcml", line 5.2-5.27 WrongType: ('Term', <type 'unicode'>) > /home/peterbe/buildout-eggs/zope.schema-3.4.0-py2.4.egg/zope/schema/_bootstrapfields.py(165)_validate() -> raise WrongType(value, self._type) -- Peter Bengtsson, work www.fry-it.com home www.peterbe.com hobby www.issuetrackerproduct.com _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users