Back to the NVDA Scripting guide

Generating API documentation for NVDA

This is how I generated API documentation using the epydoc program on my Windows machine, November 2011.

  1. Install the 32-bit version of Python 2.7.2 from www.python.org/download - I tried a later version of Python, that didn't work, and the epydoc installer wouldn't install with the 64-bit version of Python.
  2. Add the Python folder path (e.g. "C:\Python27") to your system Path environment variable. I found if I didn't do this then I got lots of "could not find module" errors later on.
  3. Install the latest epydoc from epydoc.sourceforge.net You need to to right-click on the installer and select Run as Administrator - it won't automatically promote itself or trigger a UAC prompt itself.
  4. Get the NVDA source code using Bazaar. See Get the NVDA Source Code for how I did this.
    (Apparently at this point you can call epydoc specifying "*.py *\*.py *\*\*.py" as arguments so as to catch the nested folders of py files. I didn't do this, so my method follows, but using the multiple-arguments is the correct way. Just so you know.)
  5. Put this VB Script file into your NVDA source code folder and run it. It will generate a batch file that will in turn call epydoc with all the py source files to process. MakeEpydoc.vbs The output file is called epydoc.bat and will appear in the same folder.
  6. Copy epydoc.bat to the Python Scripts folder, which is probably C:\Python27\Scripts, and run it.
  7. You should now have a folder called epydocs in the Scripts folder, which should contain all the generated API documentation, the start page for which is index.html.

Notes: The use of a VB Script file to generate a batch file to run epydoc makes zero sense to me, but I can't work out how to make epydoc process a whole folder. There are probably some better commandline options for epydoc, like "add a better title to the index.html page", but I just did that by hand. And I also added a bunch of lines to the system PythonPath variable: although that didn't make it work, it might have been necessary to do - I have no idea.


WebbIE home page