mirror of
https://github.com/luxfi/torus-ml.git
synced 2026-10-30 15:15:23 +00:00
103 lines
3.4 KiB
Bash
Executable File
103 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Remove "SC2086: Double quote to prevent globbing and word splitting." since it doesn't understand
|
|
# that sometimes, you want the word splitting
|
|
# shellcheck disable=SC2086
|
|
|
|
function nbqa_ize()
|
|
{
|
|
NB="$1"
|
|
PYLINT_EXTRA_OPTIONS="$2"
|
|
|
|
OPTIONS=""
|
|
|
|
if [ ${CHECK} -eq 1 ]
|
|
then
|
|
OPTIONS="$OPTIONS --check"
|
|
fi
|
|
|
|
# Tools which may change or check the notebooks
|
|
poetry run nbqa isort "${NB}" ${OPTIONS} -l 100 --profile black
|
|
poetry run nbqa black "${NB}" ${OPTIONS} -l 100
|
|
|
|
# Tools which just checks the notebooks
|
|
if [ ${CHECK} -eq 1 ]
|
|
then
|
|
# Ignore E402 module level import not at top of file, because it fails with
|
|
# %matplotlib inline
|
|
# --extend-ignore=DAR is because we don't want to run darglint
|
|
poetry run nbqa flake8 "${NB}" --max-line-length 100 --per-file-ignores="__init__.py:F401" \
|
|
--ignore=E402,W503,E226,E203 --extend-ignore=DAR
|
|
|
|
# With some ignored errors, since we don't care:
|
|
# that the notebook filename is capitalized (invalid-name)
|
|
# that there are no docstring for the file since we have '\# comments' in
|
|
# the noteook (missing-module-docstring)
|
|
# that imports are done in a certain order to be more readable, or in sync with
|
|
# '\# comments' (wrong-import-position, ungrouped-imports, wrong-import-order)
|
|
# that the functions are not docstringed (missing-function-docstring)
|
|
# that the classes are not docstringed (missing-class-docstring)
|
|
# that some variable names are reused (redefined-outer-name)
|
|
#
|
|
# Also, --extension-pkg-whitelist=numpy is because of
|
|
# https://github.com/PyCQA/pylint/issues/1975
|
|
poetry run nbqa pylint "${NB}" --rcfile=pylintrc --disable=invalid-name \
|
|
--disable=missing-module-docstring --disable=missing-class-docstring \
|
|
--disable=missing-function-docstring \
|
|
--disable=wrong-import-position --disable=ungrouped-imports \
|
|
--disable=wrong-import-order \
|
|
--extension-pkg-whitelist=numpy --disable=redefined-outer-name \
|
|
--disable=line-too-long \
|
|
${PYLINT_EXTRA_OPTIONS}
|
|
fi
|
|
}
|
|
|
|
WHAT_TO_DO="all"
|
|
CHECK=0
|
|
|
|
while [ -n "$1" ]
|
|
do
|
|
case "$1" in
|
|
"--all_notebooks" )
|
|
WHAT_TO_DO="all"
|
|
;;
|
|
|
|
"--notebook" )
|
|
WHAT_TO_DO="one"
|
|
shift
|
|
NOTEBOOK="$1"
|
|
;;
|
|
|
|
"--check" )
|
|
CHECK=1
|
|
;;
|
|
|
|
*)
|
|
echo "Unknown param : $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ "$WHAT_TO_DO" == "all" ]
|
|
then
|
|
echo "Running nbqa on docs"
|
|
|
|
# We disable code-duplication check since we don't care that some tutorials share some code, we
|
|
# want them to be as self-contained as possible
|
|
PYLINT_EXTRA_OPTIONS="--disable duplicate-code"
|
|
nbqa_ize docs "${PYLINT_EXTRA_OPTIONS}"
|
|
|
|
# In addition, we disable import-error, because we may have packages which are just for
|
|
# use_case_examples, ie not available in `make sync_env`
|
|
PYLINT_EXTRA_OPTIONS="$PYLINT_EXTRA_OPTIONS --disable import-error"
|
|
nbqa_ize use_case_examples "${PYLINT_EXTRA_OPTIONS}"
|
|
|
|
elif [ "$WHAT_TO_DO" == "one" ]
|
|
then
|
|
echo "Running nbqa on ${NOTEBOOK}"
|
|
PYLINT_EXTRA_OPTIONS=""
|
|
nbqa_ize "${NOTEBOOK}" "${PYLINT_EXTRA_OPTIONS}"
|
|
fi |