User:Mstone/Tricks: Difference between revisions

From OLPC
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 33: Line 33:


; tree-based python context management
; tree-based python context management
: [http://dev.laptop.org/git?p=users/mstone/puritan;a=blob;f=main.py;hb=f9#l16 puritan's main.py] and [http://dev.laptop.org/git?p=users/mstone/puritan;a=blob;f=contexts.py;hb=f9 context.py]
: [http://dev.laptop.org/git?p=users/mstone/puritan;a=blob;f=main.py;hb=f9#l16 puritan's main.py] and [http://dev.laptop.org/git?p=users/mstone/puritan;a=blob;f=contexts.py;hb=f9 contexts.py]


; custom dbus decorators
; custom dbus decorators

Revision as of 01:43, 24 September 2008

This page contains pointers to a collection of idioms which I rely on to accomplish tasks quickly and with predictable results.

verbose python tracebacks
Just import nice_traces; if you're feeling fancy, then consider trace(sys.exc_info())
verbosity controls on logging
See trac_helper.py
pythonic relations
See my relation module and Alloy (which was my inspiration, though I've made nothing more than a poor knockoff).
relational error logging
See trac_helper.py and collect-pkgs.py.
email-based error reporting
See email_warnings.py.
pdb
from pdb import set_trace as debug ... debug()
rpm makefiles
See rpm-packaging as well as individual projects like olpc-netutils along with my Fedora packaging bibliography.
pymeta parser-based controllers
triagebot is based on a model-view-controller architecture where the controller object is assembled at runtime based on data collected with a metaclass.
pymeta makes it easy to pick the right response to complicated input.
python gdb macros
http://wiki.python.org/moin/DebuggingWithGdb
python memory profiling
guppy + Tomeu's memory leak testing writeup.
tree-based python context management
puritan's main.py and contexts.py
custom dbus decorators
sds stub
ipython for exploring interprocess communication
IPython is wonderfully helpful for exploring xml-rpc and dbus interfaces.
code to make pylint happy
rainbow's inject.py can be automatically checked for many errors by pylint because it passes all data explicitly through function calls.
C error handling
nss-rainbow uses a dash of code-generation and a lot of convention to be very consistent about error detection and handling.
C warning flags & Makefile tips
nss-rainbow's Makefile gets a number of things right, though it can still be improved in several ways.
scripts for user creation
provision users on new machines in a scripted fashion.