ó
öÀ„\c           @   s  d  Z  d d l Z d d l Z d d l m Z m Z m Z e r_ d d l m	 Z	 m
 Z
 m Z n  e d ƒ Z e rz d Z n d Z e r™ d d l m Z n	 d „  Z e r· e j ƒ  Z n e d	 ƒ j ƒ  Z e rÛ d
 „  Z n	 d „  Z e rö d „  Z n d Z e rd d l m Z n d d l m Z e rDd e f d „  ƒ  YZ n d e f d „  ƒ  YZ e rsd d l m Z n d d „ Z e  d „ Z! d S(   sÒ   
    sphinx.util.pycompat
    ~~~~~~~~~~~~~~~~~~~~

    Stuff for Python version compatibility.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iÿÿÿÿN(   t   PY3t	   text_typet   exec_(   t   Anyt   Callablet	   Generatort    t   u(   t   TextIOWrapperc         C   s   t  j | p d ƒ d |  ƒ S(   Nt   asciii   (   t   codecst   lookup(   t   streamt   encoding(    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyR   &   s    t   localec         C   s   |  j  d d ƒ j d ƒ S(   NR	   t   backslashreplace(   t   encodet   decode(   t   s(    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyt   terminal_safe5   s    c         C   s   |  j  d d ƒ S(   NR	   R   (   R   (   R   (    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyR   9   s    c         C   s»   d d l  m } m } d d l m } | d ƒ } | | ƒ } | j |  ƒ d } y | j | d ƒ } WnG | k
 r° } | j d \ }	 }
 t | j	 |  |	 |
 | j
 f ƒ ‚ n Xt | ƒ S(   Niÿÿÿÿ(   t   RefactoringToolt   get_fixers_from_package(   t
   ParseErrors   lib2to3.fixesi    s   conf.pyi   (   t   lib2to3.refactorR   R   t   lib2to3.pgen2.parseR   t   _read_python_sourcet   refactor_stringt   contextt   SyntaxErrort   msgt   valueR   (   t   filepathR   R   R   t   fixerst   refactoring_toolt   sourcet   treet   errt   linenot   offset(    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyt   convert_with_2to3A   s    %(   t   escapet   UnicodeMixinc           B   s   e  Z d  Z d „  Z RS(   s_   Mixin class to handle defining the proper __str__/__unicode__
        methods in Python 2 or 3.c         C   s
   |  j  ƒ  S(   N(   t   __unicode__(   t   self(    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyt   __str__b   s    (   t   __name__t
   __module__t   __doc__R,   (    (    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyR)   ^   s   c           B   s   e  Z d  Z d „  Z RS(   s_   Mixin class to handle defining the proper __str__/__unicode__
        methods in Python 2 or 3.c         C   s   |  j  ƒ  j d ƒ S(   Nt   utf8(   R*   R   (   R+   (    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyR,   i   s    (   R-   R.   R/   R,   (    (    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyR)   e   s   (   t   indentc            s=   ˆ  d  k r d „  ‰  n  ‡  ‡ ‡ f d †  } d j | ƒ  ƒ S(   Nc         S   s
   |  j  ƒ  S(   N(   t   strip(   t   line(    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyt	   predicatev   s    c          3   s9   x2 ˆ j  t ƒ D]! }  ˆ  |  ƒ r, ˆ |  n |  Vq Wd  S(   N(   t
   splitlinest   True(   R3   (   R4   t   prefixt   text(    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyt   prefixed_linesz   s    R   (   t   Nonet   join(   R8   R7   R4   R9   (    (   R4   R7   R8   s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyR1   s   s    c   	      C   sº   d d l  m } t r d n d } | |  | ƒ  } | j ƒ  } Wd  QX|  j | ƒ } y t | | d ƒ } Wn; t k
 r¨ t r¢ t |  ƒ } t | | d ƒ } q© ‚  n Xt | | ƒ d  S(   Niÿÿÿÿ(   t   fs_encodingt   rbt   rbUt   exec(	   t   sphinx.util.osutilR<   R    t   readR   t   compileR   R'   R   (	   R   t   _globalst   openR<   t   modet   fR"   t   filepath_enct   code(    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyt	   execfile_   s    ("   R/   R
   t   syst   sixR    R   R   t   Falset   typingR   R   R   t   typeR:   t   NoneTypeR   t   ioR   t   getdefaultencodingt   sys_encodingt
   __import__t   getpreferredencodingR   R'   t   htmlR(   t
   htmlescapet   cgit   objectR)   t   textwrapR1   RD   RI   (    (    (    s3   lib/python2.7/site-packages/sphinx/util/pycompat.pyt   <module>
   s>   			
