B
    3Rc\              ;   @   s  d Z ddlZddlZddlZdZdZejd dkZejd dkZerfe	fZ
efZefZe	ZeZejZn|efZ
eefZeejfZeZe	ZejdredZnFG d	d
 d
eZyee  W n ek
r   edZY n
X edZ[dd Zdd ZG dd deZ G dd de Z!G dd dej"Z#G dd de Z$G dd de#Z%e$dddde$dddd de$d!ddd"d!e$d#d$dd%d#e$d&ddd'd&e$d(d$dd)d(e$d*d$d+d,e$d-d$d.e$ddde$d/d/d0e$d1d1d0e$d2d2d0e$d)d$dd)d(e$d3ddd4d3e$d5ddd6d5e!dd$e!d7d8e!d9d:e!d;d<d=e!d>d?d@e!dAdBdCe!dDdEdFe!dGdHdIe!dJdKdLe!dMdNdOe!dPdQdRe!dSdTdUe!dVdVdWe!dXdXdWe!dYdYdWe!dZdZd[e!d\d]e!d^d_e!d`dae!dbdcdbe!dddee!dfdgdhe!didjdke!dldmdne!dodpdqe!drdsdte!dudvdwe!dxdydze!d{d|d}e!d~dde!ddde!dddke!ddde!ddde!dddqe!de&d de!de&d de!de&d e&d e!ddde!ddde!ddde!ddg9Z'x<e'D ]4Z(e)e%e(j*e( e+e(e!re(ej,e&d e(j* < qW [(e'e%_'e%e&d  Z-ej,e&d < G dd de#Z.e$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$dddgZ/xe/D ]Z(e)e.e(j*e( qW [(e/e._'e.e&d  ej,e&d < ej,e&d < G dd de#Z0e$ddde$ddde$dddgZ1xe1D ]Z(e)e0e(j*e( q<W [(e1e0_'e0e&d  ej,e&d < ej,e&d < G dd de#Z2e$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$ddde$dddg!Z3xe3D ]Z(e)e2e(j*e( qW [(e3e2_'e2e&d  ej,e&d < ej,e&d < G dd de#Z4e$ddde$ddde$ddde$dddgZ5xe5D ]Z(e)e4e(j*e( qjW [(e5e4_'e4e&d  ej,e&d < ej,e&d < G dd de#Z6e$dddgZ7xe7D ]Z(e)e6e(j*e( qW [(e7e6_'e6e&d  ej,e&d < ej,e&d < G dd dej"Z8e8e&d ej,e&d < dd Z9dd Z:erndZ;dZ<dZ=dZ>dZ?dZ@ndZ;dZ<dZ=dZ>d Z?dZ@yeAZBW n" eCk
r   dd ZBY nX eBZAyeDZDW n" eCk
r   dd ZDY nX e	rdd ZEejFZGeZHn2dd ZEd	d
 ZGG dd deZHeDZDeeEd eIe;ZJeIe<ZKeIe=ZLeIe>ZMeIe?ZNeIe@ZOe	rdd ZPdd ZQdd ZRdd ZSn0dd ZPdd ZQdd ZRdd ZSeePd eeQd eeRd eeSd e
rdd ZTd d! ZUeVZWejd" d"k
rZd#d$ ZXneYd%d"d&ZXeZdZ[ej\Z]e^Z_ddl`Z`e`jaZae`jbZbnVd'd ZTd(d! ZUeWZWeVZXd)d* Z[d+d, Z]d-d. Z_ddlaZaeaja ZaZbeeTd/ eeUd0 er,ece-jdd1ZedAd2d3ZfndBd4d5Zeeed6 ece-jdd7dZgegdkrld8d9 Zgeefd: d;d< Zhd=d> Zierd?d@ ZjnejZjdS (C  z6Utilities for writing code that runs on Python 2 and 3    Nz'Benjamin Peterson <benjamin@python.org>z1.6.1      javaic               @   s   e Zd Zdd ZdS )Xc             C   s   dS )Nl         )selfr   r   (lib/python3.7/site-packages/rdkit/six.py__len__8   s    z	X.__len__N)__name__
__module____qualname__r	   r   r   r   r   r   6   s   r   l    c             C   s
   || _ dS )z Add documentation to a function.N)__doc__)funcdocr   r   r   _add_docF   s    r   c             C   s   t |  tj|  S )z7Import module, returning the module after the last dot.)
__import__sysmodules)namer   r   r   _import_moduleK   s    r   c               @   s   e Zd Zdd Zdd ZdS )
_LazyDescrc             C   s
   || _ d S )N)r   )r   r   r   r   r   __init__S   s    z_LazyDescr.__init__c             C   sP   y|   }W n" tk
r.   td| j Y nX t|| j| t|j| j |S )Nz%s could not be imported )_resolveImportErrorAttributeErrorr   setattrdelattr	__class__)r   objtpresultr   r   r   __get__V   s    z_LazyDescr.__get__N)r
   r   r   r   r!   r   r   r   r   r   Q   s   r   c                   s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	MovedModuleNc                s2   t t| | tr(|d kr |}|| _n|| _d S )N)superr"   r   PY3mod)r   r   oldnew)r   r   r   r   d   s    zMovedModule.__init__c             C   s
   t | jS )N)r   r%   )r   r   r   r   r   m   s    zMovedModule._resolvec             C   s`   |dkr| j tjkrt|y|  }W n tk
rD   t|Y nX t||}t| || |S )N)__file__r
   __path__)r%   r   r   r   r   r   getattrr   )r   attr_modulevaluer   r   r   __getattr__p   s    

zMovedModule.__getattr__)N)r
   r   r   r   r   r.   __classcell__r   r   )r   r   r"   b   s   	r"   c                   s(   e Zd Z fddZdd Zg Z  ZS )_LazyModulec                s   t t| | | jj| _d S )N)r#   r0   r   r   r   )r   r   )r   r   r   r      s    z_LazyModule.__init__c             C   s    ddg}|dd | j D 7 }|S )Nr   r
   c             S   s   g | ]
}|j qS r   )r   ).0r+   r   r   r   
<listcomp>   s    z'_LazyModule.__dir__.<locals>.<listcomp>)_moved_attributes)r   Zattrsr   r   r   __dir__   s    z_LazyModule.__dir__)r
   r   r   r   r4   r3   r/   r   r   )r   r   r0      s   r0   c                   s&   e Zd Zd fdd	Zdd Z  ZS )MovedAttributeNc                sd   t t| | trH|d kr |}|| _|d kr@|d kr<|}n|}|| _n|| _|d krZ|}|| _d S )N)r#   r5   r   r$   r%   r+   )r   r   Zold_modZnew_modZold_attrZnew_attr)r   r   r   r      s    zMovedAttribute.__init__c             C   s   t | j}t|| jS )N)r   r%   r*   r+   )r   moduler   r   r   r      s    
zMovedAttribute._resolve)NN)r
   r   r   r   r   r/   r   r   )r   r   r5      s   r5   c               @   s   e Zd ZdZdS )_MovedItemszLazy loading of moved objectsN)r
   r   r   r   r   r   r   r   r7      s   r7   Z	cStringIOioStringIOfilter	itertoolsbuiltinsZifilterfilterfalseZifilterfalseinputZ__builtin__Z	raw_inputmapZimaprangeZxrangeZreload_moduleimpreloadreduce	functoolsUserDictcollectionsUserList
UserStringzipZizipzip_longestZizip_longestZconfigparserZConfigParsercopyregZcopy_regZdbm_gnuZgdbmzdbm.gnuZhttp_cookiejarZ	cookielibzhttp.cookiejarZhttp_cookiesZCookiezhttp.cookiesZhtml_entitiesZhtmlentitydefszhtml.entitiesZhtml_parserZ
HTMLParserzhtml.parserZhttp_clientZhttplibzhttp.clientZemail_mime_multipartzemail.MIMEMultipartzemail.mime.multipartZemail_mime_textzemail.MIMETextzemail.mime.textZemail_mime_basezemail.MIMEBasezemail.mime.baseZBaseHTTPServerzhttp.serverZCGIHTTPServerZSimpleHTTPServerZcPicklepickleZqueueZQueuereprlibreprZsocketserverZSocketServer_threadZthreadZtkinterZTkinterZtkinter_dialogZDialogztkinter.dialogZtkinter_filedialogZ
FileDialogztkinter.filedialogZtkinter_scrolledtextZScrolledTextztkinter.scrolledtextZtkinter_simpledialogZSimpleDialogztkinter.simpledialogZtkinter_tixZTixztkinter.tixZtkinter_ttkZttkztkinter.ttkZtkinter_constantsZTkconstantsztkinter.constantsZtkinter_dndZTkdndztkinter.dndZtkinter_colorchooserZtkColorChooserztkinter.colorchooserZtkinter_commondialogZtkCommonDialogztkinter.commondialogZtkinter_tkfiledialogZtkFileDialogZtkinter_fontZtkFontztkinter.fontZtkinter_messageboxZtkMessageBoxztkinter.messageboxZtkinter_tksimpledialogZtkSimpleDialogZurllib_parsez.moves.urllib_parsezurllib.parseZurllib_errorz.moves.urllib_errorzurllib.errorZurllibz.moves.urllibZurllib_robotparserrobotparserzurllib.robotparserZxmlrpc_clientZ	xmlrpclibzxmlrpc.clientZxmlrpc_serverzxmlrpc.serverwinreg_winregz.moves.z.movesc               @   s   e Zd ZdZdS )Module_six_moves_urllib_parsez7Lazy loading of moved objects in six.moves.urllib_parseN)r
   r   r   r   r   r   r   r   rS      s   rS   ZParseResultZurlparseZSplitResultZparse_qsZ	parse_qslZ	urldefragZurljoinZurlsplitZ
urlunparseZ
urlunsplitZquoteZ
quote_plusZunquoteZunquote_plusZ	urlencodeZ
splitqueryz.moves.urllib.parsec               @   s   e Zd ZdZdS )Module_six_moves_urllib_errorz7Lazy loading of moved objects in six.moves.urllib_errorN)r
   r   r   r   r   r   r   r   rT     s   rT   ZURLErrorZurllib2Z	HTTPErrorZContentTooShortErrorz.moves.urllib.errorc               @   s   e Zd ZdZdS )Module_six_moves_urllib_requestz9Lazy loading of moved objects in six.moves.urllib_requestN)r
   r   r   r   r   r   r   r   rU   ,  s   rU   Zurlopenzurllib.requestZinstall_openerZbuild_openerZpathname2urlZurl2pathnameZ
getproxiesZRequestZOpenerDirectorZHTTPDefaultErrorHandlerZHTTPRedirectHandlerZHTTPCookieProcessorZProxyHandlerZBaseHandlerZHTTPPasswordMgrZHTTPPasswordMgrWithDefaultRealmZAbstractBasicAuthHandlerZHTTPBasicAuthHandlerZProxyBasicAuthHandlerZAbstractDigestAuthHandlerZHTTPDigestAuthHandlerZProxyDigestAuthHandlerZHTTPHandlerZHTTPSHandlerZFileHandlerZ
FTPHandlerZCacheFTPHandlerZUnknownHandlerZHTTPErrorProcessorZurlretrieveZ
urlcleanupZ	URLopenerZFancyURLopenerZproxy_bypassz.moves.urllib.requestz.moves.urllib_requestc               @   s   e Zd ZdZdS ) Module_six_moves_urllib_responsez:Lazy loading of moved objects in six.moves.urllib_responseN)r
   r   r   r   r   r   r   r   rV   ^  s   rV   Zaddbasezurllib.responseZaddclosehookZaddinfoZ
addinfourlz.moves.urllib.responsez.moves.urllib_responsec               @   s   e Zd ZdZdS )#Module_six_moves_urllib_robotparserz=Lazy loading of moved objects in six.moves.urllib_robotparserN)r
   r   r   r   r   r   r   r   rW   s  s   rW   ZRobotFileParserz.moves.urllib.robotparserz.moves.urllib_robotparserc               @   s^   e Zd ZdZeje d  Zeje d  Zeje d  Zeje d  Z	eje d  Z
dd Zd	S )
Module_six_moves_urllibzICreate a six.moves.urllib namespace that resembles the Python 3 namespacez.moves.urllib_parsez.moves.urllib_errorz.moves.urllib_requestz.moves.urllib_responsez.moves.urllib_robotparserc             C   s   dddddgS )NparseerrorrequestresponserP   r   )r   r   r   r   r4     s    zModule_six_moves_urllib.__dir__N)r
   r   r   r   r   r   rY   rZ   r[   r\   rP   r4   r   r   r   r   rX     s   rX   c             C   s   t t| j|  dS )zAdd an item to six.moves.N)r   r7   r   )Zmover   r   r   add_move  s    r]   c             C   sX   yt t|  W nD tk
rR   ytj| = W n" tk
rL   td| f Y nX Y nX dS )zRemove item from six.moves.zno such move, %rN)r   r7   r   moves__dict__KeyError)r   r   r   r   remove_move  s    ra   __func____self____closure____code____defaults____globals__im_funcZim_selfZfunc_closureZ	func_codeZfunc_defaultsZfunc_globalsc             C   s   |   S )N)next)itr   r   r   advance_iterator  s    rk   c             C   s   t dd t| jD S )Nc             s   s   | ]}d |j kV  qdS )__call__N)r_   )r1   klassr   r   r   	<genexpr>  s    zcallable.<locals>.<genexpr>)anytype__mro__)r   r   r   r   callable  s    rr   c             C   s   | S )Nr   )unboundr   r   r   get_unbound_function  s    rt   c             C   s   | j S )N)rh   )rs   r   r   r   rt     s    c             C   s   t | ||jS )N)types
MethodTyper   )r   r   r   r   r   create_bound_method  s    rw   c               @   s   e Zd Zdd ZdS )Iteratorc             C   s   t | | S )N)rp   __next__)r   r   r   r   ri     s    zIterator.nextN)r
   r   r   ri   r   r   r   r   rx     s   rx   z3Get the function out of a possibly unbound functionc             K   s   t | jf |S )N)iterkeys)dkwr   r   r   iterkeys  s    r~   c             K   s   t | jf |S )N)rz   values)r|   r}   r   r   r   
itervalues  s    r   c             K   s   t | jf |S )N)rz   items)r|   r}   r   r   r   	iteritems  s    r   c             K   s   t | jf |S )N)rz   Zlists)r|   r}   r   r   r   	iterlists  s    r   c             K   s   t | jf |S )N)rz   r~   )r|   r}   r   r   r   r~     s    c             K   s   t | jf |S )N)rz   r   )r|   r}   r   r   r   r     s    c             K   s   t | jf |S )N)rz   r   )r|   r}   r   r   r   r     s    c             K   s   t | jf |S )N)rz   r   )r|   r}   r   r   r   r     s    z1Return an iterator over the keys of a dictionary.z3Return an iterator over the values of a dictionary.z?Return an iterator over the (key, value) pairs of a dictionary.zBReturn an iterator over the (key, [values]) pairs of a dictionary.c             C   s
   |  dS )Nzlatin-1)encode)sr   r   r   b	  s    r   c             C   s   | S )Nr   )r   r   r   r   u  s    r      c             C   s
   t | fS )N)bytes)ir   r   r   int2byte  s    r   to_bytesZbigc             C   s   | S )Nr   )r   r   r   r   r     s    c             C   s   t | dddS )Nz\\z\\\\Zunicode_escape)unicodereplace)r   r   r   r   r   #  s    c             C   s   t | d S )Nr   )ord)Zbsr   r   r   byte2int)  s    r   c             C   s   t | | S )N)r   )bufr   r   r   r   
indexbytes,  s    r   c             C   s   dd | D S )Nc             s   s   | ]}t |V  qd S )N)r   )r1   Zbyter   r   r   rn   0  s    ziterbytes.<locals>.<genexpr>r   )r   r   r   r   	iterbytes/  s    r   zByte literalzText literalexecc             C   s   |j |k	r|||d S )N)__traceback__with_traceback)r   r-   tbr   r   r   reraise:  s    

r   c             C   sB   |dkr*t d}|j}|dkr&|j}~n|dkr6|}td dS )zExecute code in a namespace.Nr   zexec _code_ in _globs_, _locs_)r   	_getframe	f_globalsf_localsr   )Z_code_Z_globs_Z_locs_framer   r   r   exec_A  s    
r   z9def reraise(tp, value, tb=None):
    raise tp, value, tb
printc        
         s4  | dtj  dkrdS  fdd}d}| dd}|dk	r`t|trNd}nt|ts`td| d	d}|dk	rt|trd}nt|tstd
|rtd|sx| D ]}t|trd}P qW |rtd}td}nd}d}|dkr|}|dkr|}x,t| D ] \}	}|	r|| || qW || dS )z4The new-style print function for Python 2.4 and 2.5.fileNc                sd   t | tst| } t  trVt | trV jd k	rVt dd }|d krHd}|  j|}  |  d S )Nerrorsstrict)	
isinstance
basestringstrr   r   encodingr*   r   write)datar   )fpr   r   r   Z  s    
zprint_.<locals>.writeFsepTzsep must be None or a stringendzend must be None or a stringz$invalid keyword arguments to print()
 )popr   stdoutr   r   r   	TypeError	enumerate)
argskwargsr   Zwant_unicoder   r   argnewlineZspacer   r   )r   r   print_T  sL    






r   zReraise an exception.c             G   s   | d|i S )z%Create a base class with a metaclass.ZNewBaser   )metabasesr   r   r   with_metaclass  s    r   c                s    fdd}|S )z6Class decorator for creating a class with a metaclass.c                sl   | j  }|dd  |dd  |d}|d k	r\t|trD|g}x|D ]}|| qJW  | j| j|S )Nr_   __weakref__	__slots__)r_   copyr   getr   r   r
   	__bases__)clsZ	orig_varsslotsZ	slots_var)	metaclassr   r   wrapper  s    



zadd_metaclass.<locals>.wrapperr   )r   r   r   )r   r   add_metaclass  s    r   c             C   s   | |k d p| |kd S )Nr   r   )Zt1Zt2r   r   r   cmp  s    r   )N)NN)kr   operatorr   ru   
__author____version__version_infoZPY2r$   r   Zstring_typesintZinteger_typesrp   Zclass_typesZ	text_typer   Zbinary_typemaxsizeZMAXSIZEr   ZlongZ	ClassTyper   platform
startswithobjectr   lenOverflowErrorr   r   r   r"   
ModuleTyper0   r5   r7   r
   r3   r+   r   r   r   r   r^   rS   Z_urllib_parse_moved_attributesrT   Z_urllib_error_moved_attributesrU   Z _urllib_request_moved_attributesrV   Z!_urllib_response_moved_attributesrW   Z$_urllib_robotparser_moved_attributesrX   r]   ra   Z
_meth_funcZ
_meth_selfZ_func_closureZ
_func_codeZ_func_defaultsZ_func_globalsri   rk   	NameErrorrr   rt   rv   rw   rx   
attrgetterZget_method_functionZget_method_selfZget_function_closureZget_function_codeZget_function_defaultsZget_function_globalsr~   r   r   r   r   r   chrZunichrr   methodcaller
itemgetterr   getitemr   rz   r   r8   r9   BytesIOr*   r<   r   r   r   r   r   r   r   r   r   r   <module>   s8  

#




















































 


 
































 



 
"








6