3
+��h�! � T @ s� d Z ddlmZ ddlmZmZmZmZmZ ddl m
Z
d�Zd�d�d�d�d�d�d�d�d�ed� d�ed� ed� d�d�d˜Zd�d�d�d�d�d�d�d�dԜZ
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�d� Zd�d� ZG d�d� d�ej�Zd�S )�z
Fixer for complicated imports
� )�
fixer_base)�Name�String�
FromImport�Newline�Comma)�touch_import_top�ACTIVE�ALL�ANCHOR�ARC�BASELINE�BEVEL�BOTH�BOTTOM�BROWSE�BUTT�CASCADE�CENTER�CHAR�CHECKBUTTON�CHORD�COMMAND�CURRENT�DISABLED�DOTBOX�E�END�EW� EXCEPTION�EXTENDED�FALSE�FIRST�FLAT�GROOVE�HIDDEN�
HORIZONTAL�INSERT�INSIDE�LAST�LEFT�MITER�MOVETO�MULTIPLE�N�NE�NO�NONE�NORMAL�NS�NSEW�NUMERIC�NW�OFF�ON�OUTSIDE�PAGES�PIESLICE�
PROJECTING�RADIOBUTTON�RAISED�READABLE�RIDGE�RIGHT�ROUND�S�SCROLL�SE�SEL� SEL_FIRST�SEL_LAST� SEPARATOR�SINGLE�SOLID�SUNKEN�SW�StringTypes�TOP�TRUE�
TclVersion� TkVersion� UNDERLINE�UNITS�VERTICAL�W�WORD�WRITABLE�X�Y�YES�wantobjects�AbstractBasicAuthHandler�AbstractDigestAuthHandler�AbstractHTTPHandler�BaseHandler�CacheFTPHandler�
FTPHandler�FileHandler�HTTPBasicAuthHandler�HTTPCookieProcessor�HTTPDefaultErrorHandler�HTTPDigestAuthHandler� HTTPError�HTTPErrorProcessor�HTTPHandler�HTTPPasswordMgr�HTTPPasswordMgrWithDefaultRealm�HTTPRedirectHandler�HTTPSHandler�OpenerDirector�ProxyBasicAuthHandler�ProxyDigestAuthHandler�ProxyHandler�Request�StringIO�URLError�UnknownHandler�
addinfourl�build_opener�install_opener�parse_http_list�parse_keqv_list�randombytes�request_host�urlopen�ContentTooShortError�FancyURLopener� URLopener�basejoin� ftperrors�
getproxies�getproxies_environment� localhost�pathname2url�quote�
quote_plus� splitattr� splithost�
splitnport�splitpasswd� splitport�
splitquery�splittag� splittype� splituser�
splitvalue�thishost�unquote�unquote_plus�unwrap�url2pathname�
urlcleanup� urlencode�urlretrieve�parse_qs� parse_qsl� urldefrag�urljoin�urlparse�urlsplit�
urlunparse�
urlunsplit�ndbm�gnu�dumb�error�open�whichdb�BaseHTTPRequestHandler�
HTTPServer�CGIHTTPRequestHandler�SimpleHTTPRequestHandler�
FileDialog�LoadFileDialog�SaveFileDialog�dialogstates�test� Directory�Open�SaveAs�_Dialog�askdirectory�askopenfile�askopenfilename�askopenfilenames�askopenfiles�
asksaveasfile�asksaveasfilename�SimpleDialog�askfloat�
askinteger� askstring�Dialog�CGIXMLRPCRequestHandler�SimpleXMLRPCDispatcher�SimpleXMLRPCRequestHandler�SimpleXMLRPCServer�list_public_methods�remove_duplicates�resolve_dotted_attribute�DocCGIXMLRPCRequestHandler�DocXMLRPCRequestHandler�DocXMLRPCServer�
ServerHTMLDoc�XMLRPCDocGenerator)�urllib2�urllibr� �dbm�anydbmr� �BaseHTTPServer�
CGIHTTPServer�SimpleHTTPServerr� �tkFileDialogr� �tkSimpleDialogr� r� r� r� r� r� r� r� r� r� )zurllib.requestzurllib.errorzurllib.parsezdbm.__init__zhttp.serverztkinter.filedialogztkinter.simpledialogz
xmlrpc.serverz name='%s'z attr='%s'z
using='%s'z$dotted_name=dotted_name< %s '.' %s >z?pow=power< %s trailer< '.' %s > trailer< '.' using=any > any* >z-pow=power< %s trailer< '.' using=any > any* >z�from_import=import_from< 'from' %s 'import' (import_as_name< using=any 'as' renamed=any> | in_list=import_as_names< using=any* > | using='*' | using=NAME) >zSname_import=import_name< 'import' (%s | in_list=dotted_as_names< imp_list=any* >) >z8name_import_rename=dotted_as_name< %s 'as' renamed=any >z�from_import_rename=import_from< 'from' %s 'import' (%s | import_as_name< %s 'as' renamed=any > | in_list=import_as_names< any* (%s | import_as_name< %s 'as' renamed=any >) any* >) >c C sN dd� t D �} ddjdd� | D �� }|d7 }|djdd� | D ��d 7 }|S )zI
Builds a pattern for all toplevel names
(urllib, http, etc)
c S s g | ]}|j d ��qS )�.)�split)�.0�mod� r� �G/root/tmp/pip-build-yeh9mt8d/future/libpasteurize/fixes/fix_imports2.py�
<listcomp>� s z*all_modules_subpattern.<locals>.<listcomp>z( z | c S s( g | ] }t t|d t|d f �qS )r � )�dotted_name�simple_name�simple_attr)r� r� r� r� r� r� � s c S s$ g | ]}|d dkrt |d �qS )r� �__init__r )r� )r� r� r� r� r� r� � s z ))�MAPPING�join)Znames_dot_attrs�retr� r� r� �all_modules_subpattern� s r� c c s� t t� V x�| j� D ]�\}}|jd�\}}t| }t| }t||f }t| V t||f V |dkr|t| V t | V t
| V t|||||f V qW dS )z�
mapping1: A dict mapping py3k modules to all possible py2k replacements
mapping2: A dict mapping py2k modules to the things they do
This builds a HUGE pattern to match all ways that things can be imported
r� r� N)�from_importr� �itemsr� r� r� r� �name_import�
power_twoname�
power_onename�name_import_rename�from_import_rename) Zmapping1Zmapping2Zpy3kZpy2k�name�attrZs_nameZs_attrZd_namer� r� r� �build_import_pattern� s
r� c @ s( e Zd ZdZdjeee��Zdd� Z dS )�FixImports2� z |
c C s t dd|� d S )N�futureZstandard_library)r )�self�node�resultsr� r� r� � transform� s zFixImports2.transformN)
�__name__�
__module__�__qualname__Z run_orderr� r� r� �
PY2MODULESZPATTERNr� r� r� r� r� r� � s r� N)Tr r
r r r
r r r r r r r r r r r r r r r r r r r r! r" |