Index: third_party/google-endpoints/libfuturize/fixes/fix_future_standard_library_urllib.py |
diff --git a/third_party/google-endpoints/libfuturize/fixes/fix_future_standard_library_urllib.py b/third_party/google-endpoints/libfuturize/fixes/fix_future_standard_library_urllib.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3d62959fd29e99046d899b6a11396411f6772da5 |
--- /dev/null |
+++ b/third_party/google-endpoints/libfuturize/fixes/fix_future_standard_library_urllib.py |
@@ -0,0 +1,30 @@ |
+""" |
+For the ``future`` package. |
+ |
+A special fixer that ensures that these lines have been added:: |
+ |
+ from future import standard_library |
+ standard_library.install_hooks() |
+ |
+even if the only module imported was ``urllib``, in which case the regular fixer |
+wouldn't have added these lines. |
+ |
+""" |
+ |
+from lib2to3.fixes.fix_urllib import FixUrllib |
+from libfuturize.fixer_util import touch_import_top, find_root |
+ |
+ |
+class FixFutureStandardLibraryUrllib(FixUrllib): # not a subclass of FixImports |
+ run_order = 8 |
+ |
+ def transform(self, node, results): |
+ # transform_member() in lib2to3/fixes/fix_urllib.py breaks node so find_root(node) |
+ # no longer works after the super() call below. So we find the root first: |
+ root = find_root(node) |
+ result = super(FixFutureStandardLibraryUrllib, self).transform(node, results) |
+ # TODO: add a blank line between any __future__ imports and this? |
+ touch_import_top(u'future', u'standard_library', root) |
+ return result |
+ |
+ |