
c'oT÷  ã               @   sw  d  Z  d d l m Z e j rþ d d l m Z d d l m Z m Z m	 Z	 d d l
 m Z m Z d d l
 Z
 e
 j Z e Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z e ƒ  Z e d d „ Z d d d d d d d d d d d g Z nu d d l  Z  e  j Z e  j Z e  j	 Z	 e  j Z e  j Z e  j Z e  j Z e  j Z e  j Z e  j Z e  j Z g  Z d S)a.  
A module that brings in equivalents of various modified Python 3 builtins
into Py2. Has no effect on Py3.

The builtin functions are:

- ``ascii`` (from Py2's future_builtins module)
- ``hex`` (from Py2's future_builtins module)
- ``oct`` (from Py2's future_builtins module)
- ``chr`` (equivalent to ``unichr`` on Py2)
- ``input`` (equivalent to ``raw_input`` on Py2)
- ``next`` (calls ``__next__`` if it exists, else ``next`` method)
- ``open`` (equivalent to io.open on Py2)
- ``super`` (backport of Py3's magic zero-argument super() function
- ``round`` (new "Banker's Rounding" behaviour from Py3)

``isinstance`` is also currently exported for backwards compatibility
with v0.8.2, although this has been deprecated since v0.9.


input()
-------
Like the new ``input()`` function from Python 3 (without eval()), except
that it returns bytes. Equivalent to Python 2's ``raw_input()``.

Warning: By default, importing this module *removes* the old Python 2
input() function entirely from ``__builtin__`` for safety. This is
because forgetting to import the new ``input`` from ``future`` might
otherwise lead to a security vulnerability (shell injection) on Python 2.

To restore it, you can retrieve it yourself from
``__builtin__._old_input``.

Fortunately, ``input()`` seems to be seldom used in the wild in Python
2...

é    )Úutils)Úopen)ÚasciiÚoctÚhex)ÚunichrÚpowN)Únewnext)Únewround)Únewsuper)Únewintc             C   sÈ   t  |  t ƒ r t |  ƒ }  t  | t ƒ r6 t | ƒ } t  | t ƒ rQ t | ƒ } y- | t k rm t |  | ƒ St |  | | ƒ SWnC t k
 rÃ | t k r« t |  d | ƒ St |  d | | ƒ SYn Xd S)z¿
        pow(x, y[, z]) -> number

        With two arguments, equivalent to x**y.  With three arguments,
        equivalent to (x**y) % z, but may be more efficient (e.g. for ints).
        y                N)Ú
isinstancer   ZlongÚ	_SENTINELÚ_builtin_powÚ
ValueError)ÚxÚyÚz© r   ú6/usr/lib/python3/dist-packages/future/builtins/misc.pyr   B   s    r   r   Úchrr   Úinputr   Únextr   r   ÚroundÚsuper)!Ú__doc__Zfuturer   ZPY2Úior   Zfuture_builtinsr   r   r   Z__builtin__r   r   r   r   r   Z	raw_inputr   Zfuture.builtins.newnextr	   r   Zfuture.builtins.newroundr
   r   Zfuture.builtins.newsuperr   r   Zfuture.types.newintr   Úobjectr   Ú__all__Úbuiltinsr   r   r   r   Ú<module>%   s:   														