[Python-ideas] Making it easy to prepare for PEP479
Steven D'Aprano
steve at pearwood.info
Mon May 18 14:00:55 CEST 2015
On Mon, May 18, 2015 at 11:14:31AM +0300, Ram Rachum wrote:
> Hi everybody,
>
> I just heard about PEP479, and I want to prepare my open-source projects
> for it.
>
> I have no problem changing the code so it won't depend on StopIteration to
> stop generators, but I'd also like to test it in my test suite. In Python
> 3.5 I could use `from __future__ import generator_stop` so the test would
> be real (i.e. would fail wherever I rely on StopIteration to stop a
> generator). But I can't really put this snippet in my code because then it
> would fail on all Python versions below 3.5.
Sometimes you have to do things the old fashioned way:
if sys.version_info[:2] < (3, 5):
# write test one way
else:
# write test another way
At least it's not a change of syntax :-)
You can also move tests into a separate file that is version specific.
That's a bit of a nuisance with small projects where you would a single
test file, but for larger projects there's nothing wrong with splitting
tests across multiple files.
> This makes me think of two ideas:
>
> 1. Maybe we should allow `from __future__ import whatever` in code, even if
> `whatever` wasn't invented yet, and simply make it a no-op? This wouldn't
> help now but it could prevent these problems in the future.
from __future__ import spelling_mistaek
# code that depends on spelling_mistake feature will now behave weirdly
> 2. Maybe introduce a way to do `from __future__ import generator_stop`
> without including it in code? Maybe a flag to the `python` command? (If
> something like this exists please let me know.)
I don't think that is important enough to require either an environment
variable or a command line switch.
--
Steve
More information about the Python-ideas
mailing list