Hi there,

I'm writing a doctest in which I include a MappedCollection subclass. In 
my doctest, I create such a subclass::

   >>> class Foo(MappedCollection):
   ...    pass

Unfortunately later on, sqlalchemy.orm.collections.py has a check to 
determine whether Foo is really a builtin, and if so, it fails to 
instrument, here::

def _instrument_class(cls):
     ...
     # In the normal call flow, a request for any of the 3 basic collection
     # types is transformed into one of our trivial subclasses
     # (e.g. InstrumentedList).  Catch anything else that sneaks in here...
     if cls.__module__ == '__builtin__':
         raise sa_exc.ArgumentError(
             "Can not instrument a built-in type. Use a "
             "subclass, even a trivial one.")

Unfortunately, when Foo is 'cls', it will have __module__ set to 
'__builtin__' even while Foo is not a builtin.

I can work around this issue in the doctest by something something evil 
like::

   >>> Foo.__module__ = 'foo'

Things then seem to work.

Could the check somehow be modified to still find true builtins but not 
those defined in a doctest? I can also see this as being a doctest 
problem; perhaps the __module__ should really be set to '__main__' in 
them, but it might be easier to get it fixed here...

Regards,

Martijn


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

Reply via email to