diff options
author | alexanderlukanin13 <alexander.lukanin.13@gmail.com> | 2013-11-07 12:37:58 +0600 |
---|---|---|
committer | alexanderlukanin13 <alexander.lukanin.13@gmail.com> | 2013-11-07 12:37:58 +0600 |
commit | d4ef06a1d8f8ba96d702482979b57a73bca4c578 (patch) | |
tree | 73f68dda13b078500b928c302b035a6b0ba50e71 | |
parent | c2312c1c26a9c68d4c7dad96eba5b39695adbd3f (diff) | |
download | six-d4ef06a1d8f8ba96d702482979b57a73bca4c578.tar.gz |
moves import bug fixed
-rw-r--r-- | .hgignore | 1 | ||||
-rw-r--r-- | six.py | 11 | ||||
-rw-r--r-- | test_six.py | 20 |
3 files changed, 30 insertions, 2 deletions
@@ -3,4 +3,5 @@ syntax: glob dist MANIFEST documentation/_build +.idea .tox @@ -81,14 +81,21 @@ class _LazyDescr(object): def __init__(self, name): self.name = name + self._cached_value = None def __get__(self, obj, tp): + if self._cached_value is not None: + return self._cached_value result = self._resolve() setattr(obj, self.name, result) - # This is a bit ugly, but it avoids running this again. - delattr(tp, self.name) return result + def __set__(self, obj, value): + self._cached_value = value + + def __delete__(self, obj): + self._cached_value = None + class MovedModule(_LazyDescr): diff --git a/test_six.py b/test_six.py index efeb33e..ec4d468 100644 --- a/test_six.py +++ b/test_six.py @@ -140,6 +140,26 @@ def test_move_items_urllib_robotparser(item_name): getattr(six.moves.urllib.robotparser, item_name) +def test_import_moves_error_1(): + from six.moves.urllib.parse import urljoin + from six import moves + # In 1.4.1: AttributeError: 'Module_six_moves_urllib_parse' object has no attribute 'urljoin' + assert moves.urllib.parse.urljoin + + +def test_import_moves_error_2(): + from six import moves + assert moves.urllib.parse.urljoin + # In 1.4.1: ImportError: cannot import name urljoin + from six.moves.urllib.parse import urljoin + + +def test_import_moves_error_3(): + from six.moves.urllib.parse import urljoin + # In 1.4.1: ImportError: cannot import name urljoin + from six.moves.urllib_parse import urljoin + + def test_filter(): from six.moves import filter f = filter(lambda x: x % 2, range(10)) |