One of the nice things about python modules that are not c-compiled is the fact that you can read the source code. The bad part is that the source code is not always easy to find. This is where ipython comes in.
IPython is an alternative to the regular python interpreter which offers a bunch of niceties. This interpreter is supported by web2py out of the box; just install ipython (pip install ipython) and start web2py at the command prompt (python web2py.py -S <appname> -M). This will load the web2py environment for your application and it's models using the ipython interpreter. I won't go through them all, but rather just a couple that really come in handy for me during web2py development. Let's say you want to see the doc string for SQLFORM: In [2]: form = SQLFORM?<return> ipython display a scrollable doc string (type 'q' to exit the doc string viewer) Now you want to see the source code of the SQLFORM class: In [3]: form = SQLFORM??<return> ipython now shows the entire SQLFORM class Let's say you want to just see all of the methods that SQLFORM has to offer: In [5]: SQLFORM.<tab> SQLFORM.AUTOTYPES SQLFORM.assert_status SQLFORM.grid SQLFORM.search_menu SQLFORM.FIELDKEY_DELETE_RECORD SQLFORM.build_query SQLFORM.hidden_fields SQLFORM.sibling SQLFORM.FIELDNAME_REQUEST_DELETE SQLFORM.confirm SQLFORM.insert SQLFORM.siblings SQLFORM.ID_LABEL_SUFFIX SQLFORM.createform SQLFORM.mro SQLFORM.smartdictform SQLFORM.ID_ROW_SUFFIX SQLFORM.dictform SQLFORM.process SQLFORM.smartgrid SQLFORM.REDIRECT_JS SQLFORM.element SQLFORM.regex_attr SQLFORM.tag SQLFORM.accepts SQLFORM.elements SQLFORM.regex_class SQLFORM.update SQLFORM.add_button SQLFORM.factory SQLFORM.regex_id SQLFORM.validate SQLFORM.add_class SQLFORM.flatten SQLFORM.regex_tag SQLFORM.widgets SQLFORM.append SQLFORM.formstyles SQLFORM.remove_class SQLFORM.xml Finally, if you want to dig into any of those methods, like smartgrid: In [6]: SQLFORM.smartgrid?<return> or In [7]: SQLFORM.smartgrid??<return> and since the SQLFORM code is well documented and the argument names are descriptive, you should be able to figure out more problems on your own. This is just a taste of what you can do with ipython. It can also display more detailed traceback messages, run os-level commands without exiting the interpreter, debug code, etc. I hope this helps a bit! Jim -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.