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 -- http://mail.python.org/mailman/listinfo/python-list