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.


Reply via email to