Detecting __future__ features

Diez B. Roggisch deets at nospam.web.de
Mon Jul 30 09:48:00 EDT 2007


Neil Cerutti wrote:

> On 2007-07-30, André <andre.roberge at gmail.com> wrote:
>> On Jul 30, 9:39 am, Neil Cerutti <horp... at yahoo.com> wrote:
>>> I don't understand the qualification, "at runtime," you're
>>> making. What's wrong with just importing what you want and
>>> using it? If it's already been enabled, no harm will come from
>>> the import statement.
>>>
>>
>> I'm not the OP, so perhaps I am missing his intent. However, I
>> can see a good reason for asking this question.
>>
>> I seem to recall that the "from __future__ import" statement
>> can only be done at the beginning of a script.  What if you are
>> designing a module meant to be imported, and used by other
>> programs over which you have no control?   You can't use "from
>> __future__ import" in your module.  So, you may have to find a
>> way to figure out what's been done.  (the example given with
>> the division operator is a good one).
> 
> Is "from __future__ import" really that lame?

Well, if you consider it lame, how about you being a 7331 haX0r who tells us
how python is going to handle this then:

def foo():
    yield 1

if random_condition():
   from __future__ import generators

def bar():
    yield 2

The point is that from __future__ can massively alter the behavior of the
parser - accepting keywords that otherwise won't be keywords, as in this
example, and many more.

Making the switch between different parser-implementations on the fly isn't
technically impossible - but really, really, really complicated. But then,
if it's lameness sucks so much, you might wanna take a stab at it?

Diez




More information about the Python-list mailing list