14 def __init__(self, *args, **kwargs): |
13 def __init__(self, *args, **kwargs): |
15 self.__classname__ = kwargs["__classname__"] |
14 self.__classname__ = kwargs["__classname__"] |
16 |
15 |
17 def __getattr__(self,name): |
16 def __getattr__(self,name): |
18 if name.startswith('__'): |
17 if name.startswith('__'): |
19 raise AttributeError, name |
18 raise AttributeError(name) |
20 return FakeObject(__classname__=self.__classname__+"."+name) |
19 return FakeObject(__classname__=self.__classname__+"."+name) |
21 |
20 |
22 def __call__(self, *args, **kwargs): |
21 def __call__(self, *args, **kwargs): |
23 return FakeObject(__classname__=self.__classname__+"()") |
22 return FakeObject(__classname__=self.__classname__+"()") |
24 |
23 |
25 def __getitem__(self, key): |
24 def __getitem__(self, key): |
26 raise IndexError, key |
25 raise IndexError(key) |
27 |
26 |
28 def __str__(self): |
27 def __str__(self): |
29 return self.__classname__ |
28 return self.__classname__ |
30 |
29 |
31 def __or__(self, other): |
30 def __or__(self, other): |
32 return FakeObject(__classname__=self.__classname__+"|"+other.__classname__) |
31 return FakeObject(__classname__=self.__classname__+"|"+other.__classname__) |
33 |
32 |
34 |
33 |
35 class FakeClass: |
34 class FakeClass: |
36 def __init__(self, *args, **kwargs): |
35 def __init__(self, *args, **kwargs): |
37 print("DUMMY Class __init__ !",self.__name__,args,kwargs) |
36 print(("DUMMY Class __init__ !",self.__name__,args,kwargs)) |
38 |
37 |
39 |
38 |
40 class FakeModule(ModuleType): |
39 class FakeModule(ModuleType): |
41 def __init__(self, name, classes): |
40 def __init__(self, name, classes): |
42 self.__modname__ = name |
41 self.__modname__ = name |
43 self.__objects__ = dict(map(lambda desc: |
42 self.__objects__ = dict([(desc, type(desc, (FakeClass,), {})) |
44 (desc, new.classobj(desc, (FakeClass,), {})) |
43 if type(desc)==str else desc for desc in classes]) |
45 if type(desc)==str else desc, classes)) |
|
46 ModuleType(name) |
44 ModuleType(name) |
47 |
45 |
48 def __getattr__(self,name): |
46 def __getattr__(self,name): |
49 if name.startswith('__'): |
47 if name.startswith('__'): |
50 raise AttributeError, name |
48 raise AttributeError(name) |
51 |
49 |
52 if self.__objects__.has_key(name): |
50 if name in self.__objects__: |
53 return self.__objects__[name] |
51 return self.__objects__[name] |
54 |
52 |
55 obj = FakeObject(__classname__=self.__modname__+"."+name) |
53 obj = FakeObject(__classname__=self.__modname__+"."+name) |
56 self.__objects__[name] = obj |
54 self.__objects__[name] = obj |
57 return obj |
55 return obj |