From 7896f7281d396832a8d78729c86a2926b6c6f164 Mon Sep 17 00:00:00 2001
From: Lars Buitinck <larsmans@gmail.com>
Date: Sat, 21 Jul 2012 17:38:15 +0200
Subject: [PATCH] COSMIT don't call magic methods directly

One tricky case left in doc/sphinxext/gen_rst.py.

Also, don't use relative imports in tests.
---
 doc/sphinxext/gen_rst.py                |  2 +-
 examples/mixture/plot_gmm_classifier.py |  2 +-
 sklearn/cross_validation.py             |  4 ++--
 sklearn/datasets/base.py                |  2 +-
 sklearn/grid_search.py                  |  2 +-
 sklearn/tests/test_cross_validation.py  | 28 ++++++++++++-------------
 6 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/doc/sphinxext/gen_rst.py b/doc/sphinxext/gen_rst.py
index 231d02759a..de4b325fd0 100644
--- a/doc/sphinxext/gen_rst.py
+++ b/doc/sphinxext/gen_rst.py
@@ -101,7 +101,7 @@ def extract_docstring(filename):
 
     docstring = ''
     first_par = ''
-    tokens = tokenize.generate_tokens(lines.__iter__().next)
+    tokens = tokenize.generate_tokens(iter(lines).next)
     for tok_type, tok_content, _, (erow, _), _ in tokens:
         tok_type = token.tok_name[tok_type]
         if tok_type in ('NEWLINE', 'COMMENT', 'NL', 'INDENT', 'DEDENT'):
diff --git a/examples/mixture/plot_gmm_classifier.py b/examples/mixture/plot_gmm_classifier.py
index 288ff2809e..92f113bb44 100644
--- a/examples/mixture/plot_gmm_classifier.py
+++ b/examples/mixture/plot_gmm_classifier.py
@@ -54,7 +54,7 @@ iris = datasets.load_iris()
 # (25%) sets.
 skf = StratifiedKFold(iris.target, k=4)
 # Only take the first fold.
-train_index, test_index = skf.__iter__().next()
+train_index, test_index = next(iter(skf))
 
 
 X_train = iris.data[train_index]
diff --git a/sklearn/cross_validation.py b/sklearn/cross_validation.py
index 3e409d992c..026f0d97c1 100644
--- a/sklearn/cross_validation.py
+++ b/sklearn/cross_validation.py
@@ -1216,7 +1216,7 @@ def train_test_split(*arrays, **options):
     """Split arrays or matrices into random train and test subsets
 
     Quick utility that wraps calls to ``check_arrays`` and
-    ``iter(ShuffleSplit(n_samples)).next()`` and application to input
+    ``next(iter(ShuffleSplit(n_samples)))`` and application to input
     data into a single call for splitting (and optionally subsampling)
     data in a oneliner.
 
@@ -1304,7 +1304,7 @@ def train_test_split(*arrays, **options):
                       train_size=train_size,
                       random_state=random_state,
                       indices=True)
-    train, test = iter(cv).next()
+    train, test = next(iter(cv))
     splitted = []
     for a in arrays:
         splitted.append(a[train])
diff --git a/sklearn/datasets/base.py b/sklearn/datasets/base.py
index 90b42fc024..82c1f21242 100644
--- a/sklearn/datasets/base.py
+++ b/sklearn/datasets/base.py
@@ -231,7 +231,7 @@ def load_iris():
     module_path = dirname(__file__)
     data_file = csv.reader(open(join(module_path, 'data', 'iris.csv')))
     fdescr = open(join(module_path, 'descr', 'iris.rst'))
-    temp = data_file.next()
+    temp = next(data_file)
     n_samples = int(temp[0])
     n_features = int(temp[1])
     target_names = np.array(temp[2:])
diff --git a/sklearn/grid_search.py b/sklearn/grid_search.py
index 79dc6610f9..77ff71adf8 100644
--- a/sklearn/grid_search.py
+++ b/sklearn/grid_search.py
@@ -389,7 +389,7 @@ class GridSearchCV(BaseEstimator, MetaEstimatorMixin):
 
         # Return early if there is only one grid point.
         if _has_one_grid_point(self.param_grid):
-            params = iter(grid).next()
+            params = next(iter(grid))
             base_clf.set_params(**params)
             base_clf.fit(X, y)
             self._best_estimator_ = base_clf
diff --git a/sklearn/tests/test_cross_validation.py b/sklearn/tests/test_cross_validation.py
index b20cc9f3fa..13ed2f298f 100644
--- a/sklearn/tests/test_cross_validation.py
+++ b/sklearn/tests/test_cross_validation.py
@@ -6,20 +6,20 @@ from scipy.sparse import coo_matrix
 
 from nose.tools import assert_true, assert_equal
 from nose.tools import assert_raises
-
-from ..utils.testing import assert_greater, assert_less
-from ..base import BaseEstimator
-from ..datasets import make_regression
-from ..datasets import load_iris
-from ..metrics import zero_one_score
-from ..metrics import f1_score
-from ..metrics import mean_squared_error
-from ..metrics import r2_score
-from ..metrics import explained_variance_score
-from ..svm import SVC
-from ..linear_model import Ridge
-from ..svm.sparse import SVC as SparseSVC
-from .. import cross_validation as cval
+from sklearn.utils.testing import assert_greater, assert_less
+
+from sklearn import cross_validation as cval
+from sklearn.base import BaseEstimator
+from sklearn.datasets import make_regression
+from sklearn.datasets import load_iris
+from sklearn.metrics import zero_one_score
+from sklearn.metrics import f1_score
+from sklearn.metrics import mean_squared_error
+from sklearn.metrics import r2_score
+from sklearn.metrics import explained_variance_score
+from sklearn.svm import SVC
+from sklearn.linear_model import Ridge
+from sklearn.svm.sparse import SVC as SparseSVC
 
 from numpy.testing import assert_array_almost_equal
 from numpy.testing import assert_array_equal
-- 
GitLab