Sat, 23 Apr 2011 04:20:00 in Tech stuff | permalink
(lambda path:
open(path, 'w').write('path = %r' % path) or
globals().__setitem__('__name__', None) or
type(
repr('config:' + path),
(),
(lambda d:
execfile(path, {}, d) or d
)({})
)()
)('config.py')
This ugly single expression hack illustrates the approach that can be used to create config objects from Python source files.
And here's how it can be made step-by-step
>>> (lambda path: path)('config.py')
'config.py'
>>> (lambda path: globals().__setitem__('__name__', None) or path)('config.py')
'config.py'
>>> (lambda path: globals().__setitem__('__name__', None) or type('', (), {})())('config.py')
< object at 0x1004cc790>
>>> (lambda path: globals().__setitem__('__name__', None) or type(repr('config:' + path), (), {})())('config.py')
<'config:config.py' object at 0x1004cc850>
>>> (lambda path: globals().__setitem__('__name__', None) or type(repr('config:' + path), (), (lambda d: execfile(path, {}, d) or d)({}))())('config.py')
<'config:config.py' object at 0x1004cca50>
>>> (lambda path: globals().__setitem__('__name__', None) or type(repr('config:' + path), (), (lambda d: execfile(path, {}, d) or d)({}))())('config.py').path
'config.py'