Skip to content

Commit

Permalink
Remove six, Remove __future__, update cython compiler directives, set…
Browse files Browse the repository at this point in the history
… python_requires=">=3.7" (#417)
  • Loading branch information
NicolasHug committed Aug 14, 2022
1 parent a6b84d7 commit 4b7446c
Show file tree
Hide file tree
Showing 44 changed files with 95 additions and 131 deletions.
3 changes: 0 additions & 3 deletions examples/baselines_conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
computation.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)

from surprise import BaselineOnly
from surprise import KNNBasic
from surprise import Dataset
Expand Down
1 change: 0 additions & 1 deletion examples/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import random

import numpy as np
import six
from tabulate import tabulate

from surprise import Dataset
Expand Down
3 changes: 1 addition & 2 deletions examples/generate_grid_search_cv_results_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
unicode_literals)

from tabulate import tabulate
from six import iteritems

from surprise import SVD
from surprise import Dataset
Expand All @@ -32,7 +31,7 @@

print()

for key, val in iteritems(gs.cv_results):
for key, val in gs.cv_results.items():
print('{:<20}'.format("'" + key + "':"), end='')
if isinstance(val[0], float):
print([float('{:.2f}'.format(f)) for f in val])
Expand Down
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
joblib>=0.11
numpy>=1.11.2
scipy>=1.0.0
six>=1.10.0
1 change: 0 additions & 1 deletion requirements_dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ numpy>=1.11.2
pandas
pytest>=3.0.3
scipy>=1.0.0
six>=1.10.0
sphinx>=1.4.9
sphinx_rtd_theme
sphinxcontrib-bibtex
Expand Down
1 change: 0 additions & 1 deletion requirements_travis.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ numpy>=1.11.2
pandas
pytest>=3.0.3
scipy>=1.0.0
six>=1.10.0
sphinx>=1.4.9
sphinx_rtd_theme
sphinxcontrib-bibtex
17 changes: 14 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,16 @@
]

if USE_CYTHON:
ext_modules = cythonize(extensions)
ext_modules = cythonize(
extensions,
compiler_directives={
"language_level": 3,
"boundscheck": False,
"wraparound": False,
"initializedcheck": False,
"nonecheck": False,
},
)
cmdclass.update({'build_ext': build_ext})
else:
ext_modules = extensions
Expand All @@ -125,12 +134,14 @@
'Intended Audience :: Science/Research',
'Topic :: Scientific/Engineering',
'License :: OSI Approved :: BSD License',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
],
keywords='recommender recommendation system',

packages=find_packages(exclude=['tests*']),
python_requires=">=3.7",
include_package_data=True,
ext_modules=ext_modules,
cmdclass=cmdclass,
Expand Down
2 changes: 0 additions & 2 deletions surprise/__main__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#!/usr/bin/env python

from __future__ import (absolute_import, division, print_function,
unicode_literals)
import random as rd
import sys
import shutil
Expand Down
5 changes: 1 addition & 4 deletions surprise/accuracy.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@
fcp
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)
from collections import defaultdict
import numpy as np
from six import iteritems


def rmse(predictions, verbose=True):
Expand Down Expand Up @@ -155,7 +152,7 @@ def fcp(predictions, verbose=True):
for u0, _, r0, est, _ in predictions:
predictions_u[u0].append((r0, est))

for u0, preds in iteritems(predictions_u):
for u0, preds in predictions_u.items():
for r0i, esti in preds:
for r0j, estj in preds:
if esti > estj and r0i > r0j:
Expand Down
5 changes: 1 addition & 4 deletions surprise/builtin_datasets.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
"""This module contains built-in datasets that can be automatically
downloaded."""

from __future__ import (absolute_import, division, print_function,
unicode_literals)

import zipfile
import os
import errno

from os.path import join
from collections import namedtuple
from six.moves.urllib.request import urlretrieve
from urllib.request import urlretrieve


def get_dataset_dir():
Expand Down
4 changes: 0 additions & 4 deletions surprise/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,11 @@
"""


from __future__ import (absolute_import, division, print_function,
unicode_literals)
from collections import defaultdict
import sys
import os
import itertools

from six.moves import input

from .reader import Reader
from .builtin_datasets import download_builtin_dataset
from .builtin_datasets import BUILTIN_DATASETS
Expand Down
11 changes: 4 additions & 7 deletions surprise/model_selection/search.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
from __future__ import (absolute_import, division, print_function,
unicode_literals)

from abc import ABCMeta, abstractmethod
from abc import ABC, abstractmethod
from itertools import product
import numpy as np
from joblib import Parallel
from joblib import delayed
from six import moves, string_types, with_metaclass

from .split import get_cv
from .validation import fit_and_score
from ..dataset import DatasetUserFolds
from ..utils import get_rng


class BaseSearchCV(with_metaclass(ABCMeta)):
class BaseSearchCV(ABC):
"""Base class for hyper parameter search with cross-validation."""

@abstractmethod
Expand All @@ -26,7 +23,7 @@ def __init__(self, algo_class, measures=['rmse', 'mae'], cv=None,
self.measures = [measure.lower() for measure in measures]
self.cv = cv

if isinstance(refit, string_types):
if isinstance(refit, str):
if refit.lower() not in self.measures:
raise ValueError('It looks like the measure you want to use '
'with refit ({}) is not in the measures '
Expand Down Expand Up @@ -482,7 +479,7 @@ def _sample_parameters(param_distributions, n_iter, random_state=None):

else:
combos = []
for _ in moves.range(n_iter):
for _ in range(n_iter):
params = dict()
for k, v in items:
if hasattr(v, 'rvs'):
Expand Down
9 changes: 2 additions & 7 deletions surprise/model_selection/split.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,11 @@
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)
from itertools import chain
from math import ceil, floor
import numbers
from collections import defaultdict

from six import iteritems
from six import string_types

import numpy as np

from ..utils import get_rng
Expand All @@ -46,7 +41,7 @@ def get_cv(cv):
return KFold(n_splits=5)
if isinstance(cv, numbers.Integral):
return KFold(n_splits=cv)
if hasattr(cv, 'split') and not isinstance(cv, string_types):
if hasattr(cv, 'split') and not isinstance(cv, str):
return cv # str have split

raise ValueError('Wrong CV object. Expecting None, an int or CV iterator, '
Expand Down Expand Up @@ -389,7 +384,7 @@ def split(self, data):
# for each user, randomly choose a rating and put it in the
# testset.
raw_trainset, raw_testset = [], []
for uid, ratings in iteritems(user_ratings):
for uid, ratings in user_ratings.items():
if len(ratings) > self.min_n_ratings:
i = rng.randint(0, len(ratings))
raw_testset.append(ratings[i])
Expand Down
7 changes: 2 additions & 5 deletions surprise/model_selection/validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
the mighty scikit learn.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)
import time

import numpy as np
from joblib import Parallel
from joblib import delayed
from six import iteritems

from .split import get_cv
from .. import accuracy
Expand Down Expand Up @@ -203,15 +200,15 @@ def print_summary(algo, measures, test_measures, train_measures, fit_times,
*['{:1.4f}'.format(v) for v in vals] +
['{:1.4f}'.format(np.mean(vals))] +
['{:1.4f}'.format(np.std(vals))])
for (key, vals) in iteritems(test_measures))
for (key, vals) in test_measures.items())
if train_measures:
s += '\n'
s += '\n'.join(row_format.format(
key.upper() + ' (trainset)',
*['{:1.4f}'.format(v) for v in vals] +
['{:1.4f}'.format(np.mean(vals))] +
['{:1.4f}'.format(np.std(vals))])
for (key, vals) in iteritems(train_measures))
for (key, vals) in train_measures.items())
s += '\n'
s += row_format.format('Fit time',
*['{:.2f}'.format(t) for t in fit_times] +
Expand Down
4 changes: 2 additions & 2 deletions surprise/prediction_algorithms/algo_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ class :class:`AlgoBase` from which every single prediction algorithm has to
inherit.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)



from .. import similarities as sims
from .predictions import PredictionImpossible
Expand Down
3 changes: 0 additions & 3 deletions surprise/prediction_algorithms/baseline_only.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@
This class implements the baseline estimation.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)

from .algo_base import AlgoBase


Expand Down
4 changes: 2 additions & 2 deletions surprise/prediction_algorithms/co_clustering.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
the :mod:`co_clustering` module includes the :class:`CoClustering` algorithm.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)



cimport numpy as np # noqa
import numpy as np
Expand Down
7 changes: 2 additions & 5 deletions surprise/prediction_algorithms/knns.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
the :mod:`knns` module includes some k-NN inspired algorithms.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)
import numpy as np
from six import iteritems
import heapq

from .predictions import PredictionImpossible
Expand Down Expand Up @@ -178,7 +175,7 @@ def fit(self, trainset):
self.sim = self.compute_similarities()

self.means = np.zeros(self.n_x)
for x, ratings in iteritems(self.xr):
for x, ratings in self.xr.items():
self.means[x] = np.mean([r for (_, r) in ratings])

return self
Expand Down Expand Up @@ -375,7 +372,7 @@ def fit(self, trainset):
self.overall_sigma = np.std([r for (_, _, r)
in self.trainset.all_ratings()])

for x, ratings in iteritems(self.xr):
for x, ratings in self.xr.items():
self.means[x] = np.mean([r for (_, r) in ratings])
sigma = np.std([r for (_, r) in ratings])
self.sigmas[x] = self.overall_sigma if sigma == 0.0 else sigma
Expand Down
5 changes: 2 additions & 3 deletions surprise/prediction_algorithms/matrix_factorization.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@ the :mod:`matrix_factorization` module includes some algorithms using matrix
factorization.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)



cimport numpy as np # noqa
import numpy as np
from six.moves import range

from .algo_base import AlgoBase
from .predictions import PredictionImpossible
Expand Down
5 changes: 2 additions & 3 deletions surprise/prediction_algorithms/optimize_baselines.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@ This module includes the two methods for baseline computation: stochastic
gradient descent and alternating least squares.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)



cimport numpy as np # noqa
import numpy as np
from six.moves import range


def baseline_als(self):
Expand Down
4 changes: 2 additions & 2 deletions surprise/prediction_algorithms/predictions.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
exception.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)



from collections import namedtuple

Expand Down
4 changes: 2 additions & 2 deletions surprise/prediction_algorithms/random_pred.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
""" Algorithm predicting a random rating.
"""

from __future__ import (absolute_import, division, print_function,
unicode_literals)



import numpy as np

Expand Down

0 comments on commit 4b7446c

Please sign in to comment.