petr.jakes.tpc wrote: > Hi, > > inspired by the article written by Tarek Ziade in the February 07 > issue of the "Linux +" magazine I am experimenting with the doctest > module. > > I have two files, "displeje_pokus.py" and "displeje_pokus.txt" (you > can see the simplified contents of the files bellow). > > When I run "python displeje_pokus.py" I am getting an error (see > below) which I am not able to eliminate. > > thanks for your reply > > Petr Jakes > > ====================== > displeje_pokus.py > ====================== > from sqlobject import * > class TextyDispleje(SQLObject): > pass > > if __name__ == "__main__": > import doctest > doctest.testfile("displeje_pokus.txt", verbose=True) > > ====================== > displeje_pokus.txt > ====================== >>>> import displeje_pokus > > > > Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit > (Intel)] on VIT, Standard >>>> Trying: > import displeje_pokus > Expecting nothing > ********************************************************************** > File "Z:\automat\displeje_pokus.txt", line 13, in displeje_pokus.txt > Failed example: > import displeje_pokus > Exception raised: > Traceback (most recent call last): > File "C:\Python25\lib\doctest.py", line 1212, in __run > compileflags, 1) in test.globs > File "<doctest displeje_pokus.txt[0]>", line 1, in <module> > import displeje_pokus > File "Z:\automat\displeje_pokus.py", line 41, in <module> > class TextyDispleje(sqlobject.SQLObject): > File "c:\python25\lib\site-packages\SQLObject-0.9.2-py2.5.egg > \sqlobject\declarative.py", line 121, in __new__ > cls.__classinit__(cls, new_attrs) > File "c:\python25\lib\site-packages\SQLObject-0.9.2-py2.5.egg > \sqlobject\main.py", line 803, in __classinit__ > classregistry.registry(cls.sqlmeta.registry).addClass(cls) > File "c:\python25\lib\site-packages\SQLObject-0.9.2-py2.5.egg > \sqlobject\classregistry.py", line 91, in addClass > '__file__', '(unknown)'))) > ValueError: class TextyDispleje is already in the registry (other > class is <class '__main__.TextyDispleje'>, from the module __main__ in > Z:\automat\displeje_pokus.py; attempted new class is <class > 'displeje_pokus.TextyDispleje'>, from the module displeje_pokus in Z: > \automat\displeje_pokus.py) > ********************************************************************** > 1 items had failures: > 1 of 1 in displeje_pokus.txt > 1 tests in 1 items. > 0 passed and 1 failed. > ***Test Failed*** 1 failures.
It seems that sqlobject does not allow for two SQLObject subclasses with the same name: >>> from sqlobject import SQLObject >>> class A(SQLObject): pass ... >>> try: ... class A(SQLObject): pass ... except: ... print "Oops!" ... Oops! In your scenario these are __main__.TextyDispleje and displeje_pokus.TextyDispleye. While you could either alter the textfile to >>> import __main__ as displeje_pokus or the module along the lines of # not recommended! from displeje_pokus import TextyDispleje if __name__ == "__main__": # doctest else: class TextyDispleje(SQLObject): pass the clean way to fix the problem is to use a separate script to invoke the doctest. Peter -- http://mail.python.org/mailman/listinfo/python-list