Skip to content

Commit

Permalink
Remove f-string, since it's not supported by Python 3.5 (#5330)
Browse files Browse the repository at this point in the history
* Remove f-string, since it's not supported by Python 3.5

* Add Python 3.5 to CI, to ensure compatibility

* Remove duplicated matplotlib

* Show deprecation notice for Python 3.5

* Fix lint

* Fix lint
  • Loading branch information
hcho3 authored Feb 21, 2020
1 parent d90e7b3 commit bf1b2cb
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 20 deletions.
1 change: 1 addition & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ def TestPythonCPU() {
def docker_binary = "docker"
sh """
${dockerRun} ${container_type} ${docker_binary} tests/ci_build/test_python.sh cpu
${dockerRun} ${container_type} ${docker_binary} tests/ci_build/test_python.sh cpu-py35
"""
deleteDir()
}
Expand Down
8 changes: 8 additions & 0 deletions python-package/xgboost/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
"""

import os
import sys
import warnings

from .core import DMatrix, Booster
from .training import train, cv
Expand All @@ -19,6 +21,12 @@
except ImportError:
pass

if sys.version_info[:2] == (3, 5):
warnings.warn(
'Python 3.5 support is deprecated; XGBoost will require Python 3.6+ in the near future. ' +
'Consider upgrading to Python 3.6+.',
FutureWarning)

VERSION_FILE = os.path.join(os.path.dirname(__file__), 'VERSION')
with open(VERSION_FILE) as f:
__version__ = f.read().strip()
Expand Down
4 changes: 2 additions & 2 deletions python-package/xgboost/sklearn.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,8 +434,8 @@ def load_model(self, fname):
self.classes_ = np.array(v)
continue
if k == 'type' and type(self).__name__ != v:
msg = f'Current model type: {type(self).__name__}, ' + \
f'type of model in file: {v}'
msg = 'Current model type: {}, '.format(type(self).__name__) + \
'type of model in file: {}'.format(v)
raise TypeError(msg)
if k == 'type':
continue
Expand Down
11 changes: 9 additions & 2 deletions tests/ci_build/Dockerfile.cpu
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ ARG CMAKE_VERSION=3.12

# Environment
ENV DEBIAN_FRONTEND noninteractive
SHELL ["/bin/bash", "-c"] # Use Bash as shell

# Install all basic requirements
RUN \
Expand All @@ -19,10 +20,16 @@ ENV PATH=/opt/python/bin:$PATH

ENV GOSU_VERSION 1.10

# Install Python packages
# Create new Conda environment with Python 3.5
RUN conda create -n py35 python=3.5 && \
source activate py35 && \
pip install numpy pytest scipy scikit-learn pandas matplotlib wheel kubernetes urllib3 graphviz && \
source deactivate

# Install Python packages in default env
RUN \
pip install pyyaml cpplint pylint astroid sphinx numpy scipy pandas matplotlib sh \
recommonmark guzzle_sphinx_theme mock breathe matplotlib graphviz \
recommonmark guzzle_sphinx_theme mock breathe graphviz \
pytest scikit-learn wheel kubernetes urllib3 jsonschema boto3 && \
pip install https://h2o-release.s3.amazonaws.com/datatable/stable/datatable-0.7.0/datatable-0.7.0-cp37-cp37m-linux_x86_64.whl && \
pip install "dask[complete]"
Expand Down
44 changes: 28 additions & 16 deletions tests/ci_build/test_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,35 @@ set -x
suite=$1

# Install XGBoost Python package
wheel_found=0
for file in python-package/dist/*.whl
do
if [ -e "${file}" ]
function install_xgboost {
wheel_found=0
for file in python-package/dist/*.whl
do
if [ -e "${file}" ]
then
pip install --user "${file}"
wheel_found=1
break # need just one
fi
done
if [ "$wheel_found" -eq 0 ]
then
pip install --user "${file}"
wheel_found=1
break # need just one
pushd .
cd python-package
python setup.py install --user
popd
fi
done
if [ "$wheel_found" -eq 0 ]
then
pushd .
cd python-package
python setup.py install --user
popd
fi
}

# Run specified test suite
case "$suite" in
gpu)
install_xgboost
pytest -v -s --fulltrace -m "not mgpu" tests/python-gpu
;;

mgpu)
install_xgboost
pytest -v -s --fulltrace -m "mgpu" tests/python-gpu
cd tests/distributed
./runtests-gpu.sh
Expand All @@ -39,17 +43,25 @@ case "$suite" in

cudf)
source activate cudf_test
install_xgboost
pytest -v -s --fulltrace -m "not mgpu" tests/python-gpu/test_from_columnar.py tests/python-gpu/test_from_cupy.py
;;

cpu)
install_xgboost
pytest -v -s --fulltrace tests/python
cd tests/distributed
./runtests.sh
;;

cpu-py35)
source activate py35
install_xgboost
pytest -v -s --fulltrace tests/python
;;

*)
echo "Usage: $0 {gpu|mgpu|cudf|cpu}"
echo "Usage: $0 {gpu|mgpu|cudf|cpu|cpu-py35}"
exit 1
;;
esac

0 comments on commit bf1b2cb

Please sign in to comment.