with_statement was not ported, but implemented in Python 2.5. Adding new keywords or syntax can break existing applications. With Python, as they decide to handle this, people can opt out of these functions earlier so that you can slowly translate your code.
From http://python.org/doc/2.5.2/ref/future.html
The future statement is a compiler directive that a particular module must be compiled using the syntax or semantics that will be available in the specified future version of Python. A future expression is intended to facilitate the transition to future versions of Python that introduce incompatible language changes. This allows you to use new features for each module before release, in which the feature becomes standard.
In fact, you can check futures to get information about when they were first supported, when imports are no longer needed, etc.
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import __future__ >>> dir(__future__) ['CO_FUTURE_ABSOLUTE_IMPORT', 'CO_FUTURE_DIVISION', 'CO_FUTURE_WITH_STATEMENT', 'CO_GENERATOR_ALLOWED', 'CO_NESTED', '_Feature', '__all__', '__builtins__', __doc__', '__file__', '__name__', 'absolute_import', 'all_feature_names', 'division', 'generators', 'nested_scopes', 'with_statement'] >>> __future__.with_statement _Feature((2, 5, 0, 'alpha', 1), (2, 6, 0, 'alpha', 0), 32768) >>>
I personally have heavily used with_statement in Python 2.5 for over a year now and have had no problems. I also run this code transparently with Python 2.6. There are some strange angular cases that they worked when cleaning in the language, mostly related to clean and correctly condensed nested expressions.