| # copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
| # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
| # |
| # This file is part of astroid. |
| # |
| # astroid is free software: you can redistribute it and/or modify it under |
| # the terms of the GNU Lesser General Public License as published by the Free |
| # Software Foundation, either version 2.1 of the License, or (at your option) any |
| # later version. |
| # |
| # astroid is distributed in the hope that it will be useful, but WITHOUT |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
| # details. |
| # |
| # You should have received a copy of the GNU Lesser General Public License along |
| # with astroid. If not, see <http://www.gnu.org/licenses/>. |
| |
| """Astroid hooks for six.moves.""" |
| |
| import sys |
| from textwrap import dedent |
| |
| from astroid import MANAGER, register_module_extender |
| from astroid.builder import AstroidBuilder |
| |
| |
| def six_moves_transform_py2(): |
| return AstroidBuilder(MANAGER).string_build(dedent(''' |
| import urllib as _urllib |
| import urllib2 as _urllib2 |
| import urlparse as _urlparse |
| |
| class Moves(object): |
| import BaseHTTPServer |
| import CGIHTTPServer |
| import SimpleHTTPServer |
| |
| from StringIO import StringIO |
| from cStringIO import StringIO as cStringIO |
| from UserDict import UserDict |
| from UserList import UserList |
| from UserString import UserString |
| |
| import __builtin__ as builtins |
| import thread as _thread |
| import dummy_thread as _dummy_thread |
| import ConfigParser as configparser |
| import copy_reg as copyreg |
| from itertools import (imap as map, |
| ifilter as filter, |
| ifilterfalse as filterfalse, |
| izip_longest as zip_longest, |
| izip as zip) |
| import htmlentitydefs as html_entities |
| import HTMLParser as html_parser |
| import httplib as http_client |
| import cookielib as http_cookiejar |
| import Cookie as http_cookies |
| import Queue as queue |
| import repr as reprlib |
| from pipes import quote as shlex_quote |
| import SocketServer as socketserver |
| import SimpleXMLRPCServer as xmlrpc_server |
| import xmlrpclib as xmlrpc_client |
| import _winreg as winreg |
| import robotparser as urllib_robotparser |
| |
| input = raw_input |
| intern = intern |
| range = xrange |
| xrange = xrange |
| reduce = reduce |
| reload_module = reload |
| |
| class UrllibParse(object): |
| ParseResult = _urlparse.ParseResult |
| SplitResult = _urlparse.SplitResult |
| parse_qs = _urlparse.parse_qs |
| parse_qsl = _urlparse.parse_qsl |
| urldefrag = _urlparse.urldefrag |
| urljoin = _urlparse.urljoin |
| urlparse = _urlparse.urlparse |
| urlsplit = _urlparse.urlsplit |
| urlunparse = _urlparse.urlunparse |
| urlunsplit = _urlparse.urlunsplit |
| quote = _urllib.quote |
| quote_plus = _urllib.quote_plus |
| unquote = _urllib.unquote |
| unquote_plus = _urllib.unquote_plus |
| urlencode = _urllib.urlencode |
| splitquery = _urllib.splitquery |
| splittag = _urllib.splittag |
| splituser = _urllib.splituser |
| uses_fragment = _urlparse.uses_fragment |
| uses_netloc = _urlparse.uses_netloc |
| uses_params = _urlparse.uses_params |
| uses_query = _urlparse.uses_query |
| uses_relative = _urlparse.uses_relative |
| |
| class UrllibError(object): |
| URLError = _urllib2.URLError |
| HTTPError = _urllib2.HTTPError |
| ContentTooShortError = _urllib.ContentTooShortError |
| |
| class DummyModule(object): |
| pass |
| |
| class UrllibRequest(object): |
| urlopen = _urllib2.urlopen |
| install_opener = _urllib2.install_opener |
| build_opener = _urllib2.build_opener |
| pathname2url = _urllib.pathname2url |
| url2pathname = _urllib.url2pathname |
| getproxies = _urllib.getproxies |
| Request = _urllib2.Request |
| OpenerDirector = _urllib2.OpenerDirector |
| HTTPDefaultErrorHandler = _urllib2.HTTPDefaultErrorHandler |
| HTTPRedirectHandler = _urllib2.HTTPRedirectHandler |
| HTTPCookieProcessor = _urllib2.HTTPCookieProcessor |
| ProxyHandler = _urllib2.ProxyHandler |
| BaseHandler = _urllib2.BaseHandler |
| HTTPPasswordMgr = _urllib2.HTTPPasswordMgr |
| HTTPPasswordMgrWithDefaultRealm = _urllib2.HTTPPasswordMgrWithDefaultRealm |
| AbstractBasicAuthHandler = _urllib2.AbstractBasicAuthHandler |
| HTTPBasicAuthHandler = _urllib2.HTTPBasicAuthHandler |
| ProxyBasicAuthHandler = _urllib2.ProxyBasicAuthHandler |
| AbstractDigestAuthHandler = _urllib2.AbstractDigestAuthHandler |
| HTTPDigestAuthHandler = _urllib2.HTTPDigestAuthHandler |
| ProxyDigestAuthHandler = _urllib2.ProxyDigestAuthHandler |
| HTTPHandler = _urllib2.HTTPHandler |
| HTTPSHandler = _urllib2.HTTPSHandler |
| FileHandler = _urllib2.FileHandler |
| FTPHandler = _urllib2.FTPHandler |
| CacheFTPHandler = _urllib2.CacheFTPHandler |
| UnknownHandler = _urllib2.UnknownHandler |
| HTTPErrorProcessor = _urllib2.HTTPErrorProcessor |
| urlretrieve = _urllib.urlretrieve |
| urlcleanup = _urllib.urlcleanup |
| proxy_bypass = _urllib.proxy_bypass |
| |
| urllib_parse = UrllibParse() |
| urllib_error = UrllibError() |
| urllib = DummyModule() |
| urllib.request = UrllibRequest() |
| urllib.parse = UrllibParse() |
| urllib.error = UrllibError() |
| |
| moves = Moves() |
| |
| ''')) |
| |
| |
| def six_moves_transform_py3(): |
| return AstroidBuilder(MANAGER).string_build(dedent(''' |
| class Moves(object): |
| import _io |
| cStringIO = _io.StringIO |
| filter = filter |
| from itertools import filterfalse |
| input = input |
| from sys import intern |
| map = map |
| range = range |
| from imp import reload as reload_module |
| from functools import reduce |
| from shlex import quote as shlex_quote |
| from io import StringIO |
| from collections import UserDict, UserList, UserString |
| xrange = range |
| zip = zip |
| from itertools import zip_longest |
| import builtins |
| import configparser |
| import copyreg |
| import _dummy_thread |
| import http.cookiejar as http_cookiejar |
| import http.cookies as http_cookies |
| import html.entities as html_entities |
| import html.parser as html_parser |
| import http.client as http_client |
| import http.server |
| BaseHTTPServer = CGIHTTPServer = SimpleHTTPServer = http.server |
| import pickle as cPickle |
| import queue |
| import reprlib |
| import socketserver |
| import _thread |
| import winreg |
| import xmlrpc.server as xmlrpc_server |
| import xmlrpc.client as xmlrpc_client |
| import urllib.robotparser as urllib_robotparser |
| import email.mime.multipart as email_mime_multipart |
| import email.mime.nonmultipart as email_mime_nonmultipart |
| import email.mime.text as email_mime_text |
| import email.mime.base as email_mime_base |
| import urllib.parse as urllib_parse |
| import urllib.error as urllib_error |
| import tkinter |
| import tkinter.dialog as tkinter_dialog |
| import tkinter.filedialog as tkinter_filedialog |
| import tkinter.scrolledtext as tkinter_scrolledtext |
| import tkinter.simpledialog as tkinder_simpledialog |
| import tkinter.tix as tkinter_tix |
| import tkinter.ttk as tkinter_ttk |
| import tkinter.constants as tkinter_constants |
| import tkinter.dnd as tkinter_dnd |
| import tkinter.colorchooser as tkinter_colorchooser |
| import tkinter.commondialog as tkinter_commondialog |
| import tkinter.filedialog as tkinter_tkfiledialog |
| import tkinter.font as tkinter_font |
| import tkinter.messagebox as tkinter_messagebox |
| import urllib.request |
| import urllib.robotparser as urllib_robotparser |
| import urllib.parse as urllib_parse |
| import urllib.error as urllib_error |
| moves = Moves() |
| ''')) |
| |
| if sys.version_info[0] == 2: |
| TRANSFORM = six_moves_transform_py2 |
| else: |
| TRANSFORM = six_moves_transform_py3 |
| |
| register_module_extender(MANAGER, 'six', TRANSFORM) |