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