On Thu, Oct 09, 2008 at 08:42:21AM -0300, Tim Cook wrote:
> I am having difficulty understanding this error.
> It occurs in the call:
>  ontObj.parentArchetype = ObjectRef(oid,u'openehr',u'ARCHETYPE')
> The first parameter for ObjectRef is declared in the schema as:
>     refId = Object(
>         schema=IObjectId,
>         title = _(u'Id'),
>         description = _(u'Globally unique id of an object (of type
> ObjectId), regardless of where it is stored.'),
>         required = True
>         )
> If I print the parameter 'oid' it does correctly report:
> <oship.openehr.rm.support.identification.objectid.ObjectId object at
> 0x1b70210>
> the other two parameters for ObjectRef are declared as TextLines.
> The traceback is:
> zope.schema.interfaces.WrongContainedType: [, []] 

Oh dear.  That's one of the worst error messages I've seen.

> What I do not understand is how to interpret the [, []] 

By reading the source code.

Object field validation actually attempts to validate the schema
(IObjectId in this case) of the object you're trying to store (the
ObjectId object, in this case).  If any of the fields cannot be
validated during this nested validation, you get a WrongContainedType
with the list of errors (one for each field).

Apparently those errors have horrible __repr__s.  That ought to be

> I'm not passing a list nor is the schema using a list.
> I realize that this may be pretty basic but I am missing something in
> reading the error.

I'd put a breakpoint in zope.schema._field, specifically, in
Object._validate, and try to see what's wrong by single-stepping.

Marius Gedminas
We're sysadmins. To us, data is a protocol-overhead.

Attachment: signature.asc
Description: Digital signature

Zope3-users mailing list

Reply via email to