On Mon, Apr 05, 2004 at 12:47:44PM -0400, Kendall Clark wrote: > http://monkeyfist.com/rdf-model/foo > > which I'd like to map to: > > _q_exports = ["rdf-model"] where "rdf-model" is an instance of a > ModelDispatch class. But, clearly, "rdf-model" isn't a legal Python > variable name (alas -- my #1 Python wart!). > > What is the general trick to having URI path components with "-" and > other illegal Python variable characters mapped to Python bits in > Quixote? I'd prefer a solution other than doing a dynamic lookup; that > will work in some cases, but not in others (I guess it will *work* in > all cases, but ugh!). You could also abuse Python's namespaces: def rdf_model(...): ... globals()['rdf-model'] = rdf_model Using _q_lookup is probably the cleanest. Something like: def _q_lookup(request, component): if component == 'rdf-model': return ModelDispatch(...) ... If you don't want to treat some names specially, you could have a standard pattern: def rdf_model(...): ... ... exports = { 'rdf-model': rdf_model, 'hello_world': hello_world, ... } def _q_lookup(request, component): return exports.get(component) That last bit is untestest but should work. Returning None from _q_lookup signals a non-existent component, if I recall correctly. Neil