"""API generator for decorator classes. """ __author__ = "Patrick K. O'Brien " __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] import inspect import os import sys import types header = '''\ """wxPython decorator classes. This file is automatically generated, and these are not the real wxPython classes. These are Python versions for API documentation purposes only. Please send corrections, questions, and suggestions to: Patrick K. O'Brien """ __author__ = "Patrick K. O'Brien " from wxd import Parameters as wx try: True except NameError: True = 1==1 False = 1==0 ''' modlist = [ 'Base', 'Window', 'Frames', 'Accelerators', 'App', 'ClipDragDrop', 'Config', 'Controls', 'DataStructures', 'DateTime', 'Dialogs', 'Drawing', 'Errors', 'EventFunctions', 'Events', 'FileSystem', 'Functions', 'Help', 'ImageHandlers', 'Joystick', 'LayoutConstraints', 'Logging', 'Menus', 'MimeTypes', 'Misc', 'Panel', 'Printing', 'Process', 'SashSplitter', 'Sizers', 'Streams', 'Threading', 'ToolBar', 'Tree', 'Validators', ] dir = os.path.realpath('api/wx/') filename = os.path.join(dir, '__init__.py') def main(): modules = {} f = file(filename, 'w') f.write(header) for modname in modlist: modules[modname] = __import__(modname, globals()) for modname in modlist: module = modules[modname] try: source = inspect.getsource(module) except IOError: print 'No source for', module else: # Remove everything up to the first class or function definition. splitter = '\n\nclass ' parts = source.split(splitter, 1) if len(parts) == 2: source = splitter + parts[1] else: splitter = '\n\ndef ' parts = source.split(splitter, 1) if len(parts) == 2: source = splitter + parts[1] source = '\n\n\n' + source.strip() f.write(source) print 'Writing', modname f.write('\n') f.close() # Add constants and any other missing stuff. f = file(filename, 'a') f.write('\n\n## Other Stuff:\n\n') import wx as old old = old.__dict__ sys.path.insert(0, dir) # Munge the sys.path so that we can import __init__ # import the file we just created. new = __init__.__dict__ l = [(k, v) for (k, v) in old.items() if (not k.startswith('_') and not k.endswith('Ptr') and not (k == 'cvar'))] l.sort() from wxPython import wx for key, value in l: if key not in new: if (inspect.isclass(value) or inspect.isroutine(value) or type(value) is types.InstanceType): value = repr(value) text = '%s = %r' % (key, value) f.write(text + '\n') print 'Writing', text f.close() if __name__ == '__main__': main()