diff options
author | Benjamin Peterson <benjamin@python.org> | 2014-01-04 23:12:01 -0600 |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2014-01-04 23:12:01 -0600 |
commit | 70b9d871fca4ee61c8807557645fc1e2e7d36973 (patch) | |
tree | 90d363ce033afc06ddd68a4d7002fc5b37b1823a | |
parent | b1994d8f1647968b1898dc48c8adb788ddc0b8a6 (diff) | |
download | six-70b9d871fca4ee61c8807557645fc1e2e7d36973.tar.gz |
pretend __file__ doesn't exist if the module hasn't been loaded yet (fixes #51)
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | six.py | 7 |
2 files changed, 12 insertions, 0 deletions
@@ -3,6 +3,11 @@ Changelog for Six This file lists the changes in each six version. +1.5.1 +----- + +- Issue #51: Hack around the Django autoreloader after recent six.moves changes. + 1.5.0 ----- @@ -105,6 +105,13 @@ class MovedModule(_LazyDescr): return _import_module(self.mod) def __getattr__(self, attr): + # Hack around the Django autoreloader. The reloader tries to get + # __file__ of every module in sys.modules. This doesn't work well if + # this MovedModule is for an module that is unavailable on this machine + # (like winreg on Unix systems). Thus, we pretend __file__ doesn't exist + # if the module hasn't been loaded yet. See issue #51. + if attr == "__file__" and self.mod not in sys.modules: + raise AttributeError _module = self._resolve() value = getattr(_module, attr) setattr(self, attr, value) |