Ticket #322: pyamf_classalias.diff
| File pyamf_classalias.diff, 2.1 KB (added by mvtellingen, 4 months ago) |
|---|
-
pyamf/tests/test_basic.py
427 427 428 428 self.assertEquals(pyamf.has_alias(Spam), True) 429 429 430 def test_required_arguments(self): 431 class Foo(object): 432 def __init__(self, bar, valid=1): 433 pass 434 self.assertRaises(TypeError, pyamf.register_class, Foo) 435 436 class Foo(object): 437 def __init__(self, bar, valid): 438 pass 439 self.assertRaises(TypeError, pyamf.register_class, Foo) 440 441 class Foo(object): 442 def __init__(self, bar=1, valid=1): 443 pass 444 pyamf.register_class(Foo) 445 446 430 447 class UnregisterClassTestCase(ClassCacheClearingTestCase): 431 448 def test_klass(self): 432 449 alias = pyamf.register_class(Spam, 'spam.eggs') -
pyamf/__init__.py
361 361 return self.klass.__new__(self.klass) 362 362 elif type(self.klass) is types.ClassType: # classic class 363 363 return util.make_classic_instance(self.klass) 364 365 364 raise TypeError, 'invalid class type %r' % self.klass 366 365 367 366 return self.klass(*args, **kwargs) 368 367 369 368 def __str__(self): … … 634 633 if alias is not None and alias in CLASS_CACHE.keys(): 635 634 raise ValueError, "alias '%s' already registered" % alias 636 635 636 # Check that the constructor of the class doesn't require any additonal 637 # arguments. 638 if hasattr(klass, '__init__') and hasattr(klass.__init__, 'im_func'): 639 klass_func = klass.__init__.im_func 640 # Number of arguments - number of default values 641 if klass_func.func_code.co_argcount - len(klass_func.func_defaults or []) > 1: 642 raise TypeError("pyamf doesn't support required init arguments") 643 637 644 x = ClassAlias(klass, alias, attr_func=attr_func, attrs=attrs, 638 645 metadata=metadata) 639 646
