Silfheed wrote: > On Aug 21, 1:32 am, James Stroud <[EMAIL PROTECTED]> wrote: >> Silfheed wrote: >> > Heyas >> >> > So this probably highlights my lack of understanding of how naming >> > works in python, but I'm currently using FailUnlessRaises in a unit >> > test and raising exceptions with a string exception. It's working >> > pretty well, except that I get the deprecation warning that raising a >> > string exception is going to go away. So my question is, how do I >> > mangle the name of my exception class enough that it doesnt stick the >> > name of the module before the name of the exception? >> >> > Namely I'd like to get the following >> >> > *** >> > Traceback (most recent call last): >> > File "<stdin>", line 1, in ? >> > MyError: 'oops!' >> >> > instead of >> >> > *** >> > Traceback (most recent call last): >> > File "<stdin>", line 1, in ? >> > __main__.MyError: 'oops!' >> >> > (or even test_thingie.MyError as is usually the case). >> >> > Creating a class in a separate file and then doing >> >> > *** >> > from module import MyError >> > raise MyError >> >> > still gives >> >> > *** >> > Traceback (most recent call last): >> > File "<stdin>", line 1, in <module> >> > module.MyError >> >> > Anyway, any help appreciated. >> >> Would it be cheating to use metaclasses? >> >> # myModule.py >> class ExampleType(type): >> def __repr__(cls): >> return cls.__name__ >> >> class ExampleError(Exception): >> __metaclass__ = ExampleType >> __name__ = 'ExampleError' >> def __repr__(self): >> return 'ExampleError' >> >> py> import myModule >> py> raise myMo >> myModule myModule.py myModule.pyc myModule.py~ >> py> raise myModule.Ex >> myModule.ExampleError myModule.ExampleType >> py> raise myModule.ExampleError >> ------------------------------------------------------------ >> Traceback (most recent call last): >> File "<ipython console>", line 1, in <module> >> ExampleError >> >> James > > It doesnt appear to work for me. > Same exact code as you have but I still get: > >>>> raise myModule.ExampleError > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > myModule.ExampleError
James tested his code in the ipython console which obviously uses a different routine to produce the traceback. Try >>> class MyError(Exception): ... __module__ = None ... >>> raise MyError("oops") Traceback (most recent call last): File "<stdin>", line 1, in <module> MyError: oops Peter -- http://mail.python.org/mailman/listinfo/python-list