Code-Analysis #399
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Code-Analysis | |
on: | |
push: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 5 * * 1' # Every Monday at 5:00 AM UTC (7:00 AM CEST) | |
jobs: | |
pylint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install $(find . -name "requirement*" -type f -printf ' -r %p') | |
pip install pylint | |
- name: Analysing the code with pylint | |
run: | | |
pylint -d C0301,R0913,W1202 $(git ls-files '*.py') --ignored-modules "rdkit" --max-positional-arguments 10 | |
mypy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install mypy | |
mypy . || exit_code=$? | |
mypy --install-types --non-interactive | |
- name: Analysing the code with mypy | |
run: | | |
mypy --ignore-missing-imports --disallow-any-generics --disallow-untyped-defs --no-implicit-optional --disallow-incomplete-defs . | |
pydocstyle: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pydocstyle | |
- name: Analysing the code with pydocstyle | |
run: | | |
pydocstyle . | |
docsig: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install docsig | |
- name: Analysing the code with docsig | |
run: | | |
docsig --check-class-constructor --check-dunders --check-protected-class-methods --check-nested --check-overridden --check-protected . | |
black: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install black[jupyter] | |
- name: Analysing the code with black | |
run: | | |
black --check . | |
flake8: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install flake8 | |
- name: Analysing the code with flake8 | |
run: | | |
flake8 --extend-ignore=D203,E203,E501,W503 . | |
interrogate: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install interrogate | |
- name: Analysing the code with interrogate | |
run: | | |
interrogate --ignore-overloaded-functions -vv . | |
bandit: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install bandit | |
- name: Analysing the code with bandit | |
run: | | |
bandit -r --skip=B404,B603,B602 . | |
isort: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install isort | |
- name: Analysing the code with isort | |
run: | | |
isort --profile black --check-only . | |
test_basis: | |
needs: | |
- pylint | |
- mypy | |
- pydocstyle | |
- docsig | |
- black | |
- flake8 | |
- interrogate | |
- bandit | |
- isort | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install package | |
run: | | |
python -m pip install --upgrade pip | |
pip install coverage | |
pip install . | |
- name: Run unit-tests | |
run: | | |
# Run only the core test suite in the tests directory. | |
coverage run --source=molpipeline,tests -m unittest discover tests | |
# Create a coverage report. Fail if the coverage is below 85%. Exclude extra packages from the report. | |
coverage report --fail-under=85 --omit="*chemprop*","*/*chemprop*/*" | |
test_chemprop: | |
needs: | |
- test_basis | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install package | |
run: | | |
python -m pip install --upgrade pip | |
pip install coverage | |
pip install torch | |
pip install .[chemprop] | |
- name: Run unit-tests for chemprop | |
run: | | |
# Run only the chemprop test suite. | |
coverage run --source=molpipeline,tests -m unittest discover test_extras/test_chemprop | |
# Create a coverage report. Fail if the coverage is below 85%. Include only chemprop files in the report. | |
coverage report --fail-under=85 --include="*chemprop*","*/*chemprop*/*" | |
test_notebooks: | |
needs: | |
- test_basis | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install package | |
run: | | |
python -m pip install --upgrade pip | |
pip install .[notebooks] | |
- name: Run unit-tests for notebooks | |
run: | | |
python test_extras/test_notebooks/test_notebooks.py --continue-on-failure |