1.1 --- a/classhook.py Sun Nov 21 23:21:30 2004 +0100
1.2 +++ b/classhook.py Sun Nov 21 23:22:28 2004 +0100
1.3 @@ -151,15 +151,26 @@
1.4
1.5 for class_file in class_files:
1.6 translator = bytecode.ClassTranslator(class_file)
1.7 - cls = translator.process(global_names)
1.8 + cls, external_names = translator.process(global_names)
1.9 module.__dict__[cls.__name__] = cls
1.10 classes.append((cls, class_file))
1.11
1.12 + # Import the local names.
1.13 +
1.14 + for external_name in external_names:
1.15 + external_name_parts = external_name.split(".")
1.16 + if len(external_name_parts) > 1:
1.17 + external_module_name = ".".join(external_name_parts[:-1])
1.18 + print "* Importing", external_module_name
1.19 + obj = __import__(external_module_name, global_names, {}, [])
1.20 + global_names[external_name_parts[0]] = obj
1.21 +
1.22 # Finally, call __clinit__ methods for all relevant classes.
1.23
1.24 for cls, class_file in classes:
1.25 + print "**", cls, class_file
1.26 if hasattr(cls, "__clinit__"):
1.27 - cls.__clinit__()
1.28 + eval(cls.__clinit__.func_code, global_names)
1.29
1.30 return module
1.31