The following simple example:
setup.cfg
[global]
setup_hook = hooks.foo
and the following hooks.py file
def foo(content):
pass
Traceback (most recent call last):
File "../distutils2/distutils2/pysetup", line 5, in <module>
main()
File "/Users/david/src/projects/distutils2/distutils2/run.py", line 486, in main
return dispatcher()
File "/Users/david/src/projects/distutils2/distutils2/run.py", line 477, in __call__
return func(self, self.args)
File "/Users/david/src/projects/distutils2/distutils2/run.py", line 161, in _run
dist.parse_config_files()
File "/Users/david/src/projects/distutils2/distutils2/dist.py", line 317, in parse_config_files
return self.config.parse_config_files(filenames)
File "/Users/david/src/projects/distutils2/distutils2/config.py", line 258, in parse_config_files
self._read_setup_cfg(parser, filename)
File "/Users/david/src/projects/distutils2/distutils2/config.py", line 120, in _read_setup_cfg
self.setup_hook = resolve_name(setup_hook)
File "/Users/david/src/projects/distutils2/distutils2/util.py", line 644, in resolve_name
raise ImportError(exc)
ImportError: 'str' object has no attribute 'foo'
I don't understand how it works exactly, but the current code cannot work, as ret needs to be a module package after the __import__ (i.e. the codepath following line 632 and later in util.py (resolve_name function))
|