Skip to content

Commit

Permalink
[ci] [python-package] enforce flake8 checks (fixes #5566)
Browse files Browse the repository at this point in the history
  • Loading branch information
jameslamb committed Jan 3, 2023
1 parent 80f5666 commit 706e341
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 13 deletions.
9 changes: 6 additions & 3 deletions .ci/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,16 @@ if [[ $TASK == "lint" ]]; then
conda install -q -y -n $CONDA_ENV \
cmakelint \
cpplint \
flake8 \
isort \
mypy \
pycodestyle \
pydocstyle \
"r-lintr>=3.0"
echo "Linting Python code"
pycodestyle --ignore=E501,W503 --exclude=./.nuget,./external_libs . || exit -1
echo "Linting Pythone code"
flake8 \
--ignore=E501,W503 \
--exclude=./.nuget,./external_libs,./python-package/build \
. || exit -1
pydocstyle --convention=numpy --add-ignore=D105 --match-dir="^(?!^external_libs|test|example).*" --match="(?!^test_|setup).*\.py" . || exit -1
isort . --check-only || exit -1
mypy --ignore-missing-imports python-package/ || true
Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def run(self) -> List:
'scipy.sparse',
]
try:
import sklearn
import sklearn # noqa: F401
except ImportError:
autodoc_mock_imports.append('sklearn')
# hide type hints in API docs
Expand Down
4 changes: 2 additions & 2 deletions python-package/lightgbm/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ def __init__(self, *args, **kwargs):

"""matplotlib"""
try:
import matplotlib
import matplotlib # noqa: F401
MATPLOTLIB_INSTALLED = True
except ImportError:
MATPLOTLIB_INSTALLED = False

"""graphviz"""
try:
import graphviz
import graphviz # noqa: F401
GRAPHVIZ_INSTALLED = True
except ImportError:
GRAPHVIZ_INSTALLED = False
Expand Down
2 changes: 1 addition & 1 deletion python-package/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ def silent_call(cmd: List[str], raise_error: bool = False, error_msg: str = '')
with open(LOG_PATH, "ab") as log:
subprocess.check_call(cmd, stderr=log, stdout=log)
return 0
except Exception as err:
except Exception:
if raise_error:
raise Exception("\n".join((error_msg, LOG_NOTICE)))
return 1
Expand Down
5 changes: 3 additions & 2 deletions tests/distributed/_test_distributed.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import subprocess
from concurrent.futures import ThreadPoolExecutor
from pathlib import Path
from typing import Any, Dict, Generator, List
from typing import Any, Dict, Generator, List, Optional

import numpy as np
import pytest
Expand Down Expand Up @@ -106,7 +106,7 @@ def _write_data(self, partitions: List[np.ndarray]) -> None:
for i, partition in enumerate(partitions):
np.savetxt(str(TESTS_DIR / f'train{i}.txt'), partition, delimiter=',')

def fit(self, partitions: List[np.ndarray], train_config: Dict = {}) -> None:
def fit(self, partitions: List[np.ndarray], train_config: Optional[Dict] = None) -> None:
"""Run the distributed training process on a single machine.
For each worker i:
Expand All @@ -117,6 +117,7 @@ def fit(self, partitions: List[np.ndarray], train_config: Dict = {}) -> None:
5. The trained model is saved as model{i}.txt. Each model file only differs in data and local_listen_port.
The whole training set is saved as train.txt.
"""
train_config = train_config or {}
self.train_config = copy.deepcopy(self.default_train_config)
self.train_config.update(train_config)
self.n_workers = self.train_config['num_machines']
Expand Down
2 changes: 1 addition & 1 deletion tests/python_package_test/test_callback.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import lightgbm as lgb

from .utils import SERIALIZERS, pickle_and_unpickle_object, pickle_obj, unpickle_obj
from .utils import SERIALIZERS, pickle_and_unpickle_object


def reset_feature_fraction(boosting_round):
Expand Down
4 changes: 2 additions & 2 deletions tests/python_package_test/test_dask.py
Original file line number Diff line number Diff line change
Expand Up @@ -1724,7 +1724,7 @@ def test_dask_methods_and_sklearn_equivalents_have_similar_signatures(methods):

@pytest.mark.parametrize('task', tasks)
def test_training_succeeds_when_data_is_dataframe_and_label_is_column_array(task, cluster):
with Client(cluster) as client:
with Client(cluster):
_, _, _, _, dX, dy, dw, dg = _create_data(
objective=task,
output='dataframe',
Expand Down Expand Up @@ -1803,7 +1803,7 @@ def _tested_estimators():
@pytest.mark.parametrize("estimator", _tested_estimators())
@pytest.mark.parametrize("check", sklearn_checks_to_run())
def test_sklearn_integration(estimator, check, cluster):
with Client(cluster) as client:
with Client(cluster):
estimator.set_params(local_listen_port=18000, time_out=5)
name = type(estimator).__name__
check(name, estimator)
Expand Down
2 changes: 1 addition & 1 deletion tests/python_package_test/test_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -2903,7 +2903,7 @@ def test_forced_split_feature_indices(tmp_path):
"forcedsplits_filename": tmp_split_file
}
with pytest.raises(lgb.basic.LightGBMError, match="Forced splits file includes feature index"):
bst = lgb.train(params, lgb_train)
lgb.train(params, lgb_train)


def test_forced_bins():
Expand Down
2 changes: 2 additions & 0 deletions tests/python_package_test/test_sklearn.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,9 @@ def test_clone_and_property():

gbm_clone = clone(gbm)
assert isinstance(gbm.booster_, lgb.Booster)
assert isinstance(gbm_clone.booster_, lgb.Booster)
assert isinstance(gbm.feature_importances_, np.ndarray)
assert isinstance(gbm_clone.feature_importances_, np.ndarray)

X, y = load_digits(n_class=2, return_X_y=True)
clf = lgb.LGBMClassifier(n_estimators=10, verbose=-1)
Expand Down

0 comments on commit 706e341

Please sign in to comment.