diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1bad8ff85..4a731bda3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,9 +6,6 @@ name: XGBoost-CI # events but only for the master branch on: [push, pull_request] -env: - R_PACKAGES: c('XML', 'igraph', 'data.table', 'magrittr', 'ggplot2', 'DiagrammeR', 'Ckmeans.1d.dp', 'vcd', 'testthat', 'lintr', 'knitr', 'rmarkdown', 'e1071', 'cplm', 'devtools', 'float', 'titanic') - # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: gtest-cpu: @@ -161,6 +158,24 @@ jobs: run: | make lint + mypy: + runs-on: ubuntu-latest + name: Type checking for Python + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + - uses: actions/setup-python@v2 + with: + python-version: '3.7' + architecture: 'x64' + - name: Install Python packages + run: | + python -m pip install wheel setuptools mypy + - name: Run mypy + run: | + cd python-package && mypy . || true + doxygen: runs-on: ubuntu-latest name: Generate C/C++ API doc using Doxygen @@ -224,133 +239,3 @@ jobs: make -C doc html env: SPHINX_GIT_BRANCH: ${{ steps.extract_branch.outputs.branch }} - - lintr: - runs-on: ${{ matrix.config.os }} - name: Run R linters on OS ${{ matrix.config.os }}, R ${{ matrix.config.r }}, Compiler ${{ matrix.config.compiler }}, Build ${{ matrix.config.build }} - strategy: - matrix: - config: - - {os: windows-latest, r: 'release', compiler: 'mingw', build: 'autotools'} - env: - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - RSPM: ${{ matrix.config.rspm }} - - steps: - - uses: actions/checkout@v2 - with: - submodules: 'true' - - - uses: r-lib/actions/setup-r@master - with: - r-version: ${{ matrix.config.r }} - - - name: Cache R packages - uses: actions/cache@v2 - with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }} - restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2- - - - name: Install dependencies - shell: Rscript {0} - run: | - install.packages(${{ env.R_PACKAGES }}, - repos = 'http://cloud.r-project.org', - dependencies = c('Depends', 'Imports', 'LinkingTo')) - - - name: Run lintr - run: | - cd R-package - R.exe CMD INSTALL . - Rscript.exe tests/helper_scripts/run_lint.R - - test-with-R: - runs-on: ${{ matrix.config.os }} - name: Test R on OS ${{ matrix.config.os }}, R ${{ matrix.config.r }}, Compiler ${{ matrix.config.compiler }}, Build ${{ matrix.config.build }} - strategy: - fail-fast: false - matrix: - config: - - {os: windows-2016, r: 'release', compiler: 'mingw', build: 'autotools'} - - {os: windows-2016, r: 'release', compiler: 'msvc', build: 'cmake'} - - {os: windows-2016, r: 'release', compiler: 'mingw', build: 'cmake'} - env: - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - RSPM: ${{ matrix.config.rspm }} - - steps: - - uses: actions/checkout@v2 - with: - submodules: 'true' - - - uses: r-lib/actions/setup-r@master - with: - r-version: ${{ matrix.config.r }} - - - name: Cache R packages - uses: actions/cache@v2 - with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }} - restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2- - - - name: Install dependencies - shell: Rscript {0} - run: | - install.packages(${{ env.R_PACKAGES }}, - repos = 'http://cloud.r-project.org', - dependencies = c('Depends', 'Imports', 'LinkingTo')) - - - uses: actions/setup-python@v2 - with: - python-version: '3.7' - architecture: 'x64' - - - name: Test R - run: | - python tests/ci_build/test_r_package.py --compiler="${{ matrix.config.compiler }}" --build-tool="${{ matrix.config.build }}" - - test-R-CRAN: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - config: - - {r: 'release'} - - steps: - - uses: actions/checkout@v2 - with: - submodules: 'true' - - - uses: r-lib/actions/setup-r@master - with: - r-version: ${{ matrix.config.r }} - - - uses: r-lib/actions/setup-tinytex@master - - - name: Cache R packages - uses: actions/cache@v2 - with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }} - restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2- - - - name: Install system packages - run: | - sudo apt-get update && sudo apt-get install libcurl4-openssl-dev libssl-dev libssh2-1-dev libgit2-dev - - - name: Install dependencies - shell: Rscript {0} - run: | - install.packages(${{ env.R_PACKAGES }}, - repos = 'http://cloud.r-project.org', - dependencies = c('Depends', 'Imports', 'LinkingTo')) - - - name: Check R Package - run: | - # Print stacktrace upon success of failure - make Rcheck || tests/ci_build/print_r_stacktrace.sh fail - tests/ci_build/print_r_stacktrace.sh success diff --git a/.github/workflows/r_tests.yml b/.github/workflows/r_tests.yml new file mode 100644 index 000000000..6900fd655 --- /dev/null +++ b/.github/workflows/r_tests.yml @@ -0,0 +1,137 @@ +name: XGBoost-R-Tests + +on: [push, pull_request] + +env: + R_PACKAGES: c('XML', 'igraph', 'data.table', 'magrittr', 'ggplot2', 'DiagrammeR', 'Ckmeans.1d.dp', 'vcd', 'testthat', 'lintr', 'knitr', 'rmarkdown', 'e1071', 'cplm', 'devtools', 'float', 'titanic') + +jobs: + lintr: + runs-on: ${{ matrix.config.os }} + name: Run R linters on OS ${{ matrix.config.os }}, R ${{ matrix.config.r }}, Compiler ${{ matrix.config.compiler }}, Build ${{ matrix.config.build }} + strategy: + matrix: + config: + - {os: windows-latest, r: 'release', compiler: 'mingw', build: 'autotools'} + env: + R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + RSPM: ${{ matrix.config.rspm }} + + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + + - uses: r-lib/actions/setup-r@master + with: + r-version: ${{ matrix.config.r }} + + - name: Cache R packages + uses: actions/cache@v2 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }} + restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2- + + - name: Install dependencies + shell: Rscript {0} + run: | + install.packages(${{ env.R_PACKAGES }}, + repos = 'http://cloud.r-project.org', + dependencies = c('Depends', 'Imports', 'LinkingTo')) + + - name: Run lintr + run: | + cd R-package + R.exe CMD INSTALL . + Rscript.exe tests/helper_scripts/run_lint.R + + test-with-R: + runs-on: ${{ matrix.config.os }} + name: Test R on OS ${{ matrix.config.os }}, R ${{ matrix.config.r }}, Compiler ${{ matrix.config.compiler }}, Build ${{ matrix.config.build }} + strategy: + fail-fast: false + matrix: + config: + - {os: windows-2016, r: 'release', compiler: 'mingw', build: 'autotools'} + - {os: windows-2016, r: 'release', compiler: 'msvc', build: 'cmake'} + - {os: windows-2016, r: 'release', compiler: 'mingw', build: 'cmake'} + env: + R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + RSPM: ${{ matrix.config.rspm }} + + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + + - uses: r-lib/actions/setup-r@master + with: + r-version: ${{ matrix.config.r }} + + - name: Cache R packages + uses: actions/cache@v2 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }} + restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2- + + - name: Install dependencies + shell: Rscript {0} + run: | + install.packages(${{ env.R_PACKAGES }}, + repos = 'http://cloud.r-project.org', + dependencies = c('Depends', 'Imports', 'LinkingTo')) + + - uses: actions/setup-python@v2 + with: + python-version: '3.7' + architecture: 'x64' + + - name: Test R + run: | + python tests/ci_build/test_r_package.py --compiler='${{ matrix.config.compiler }}' --build-tool='${{ matrix.config.build }}' + + test-R-CRAN: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + config: + - {r: 'release'} + + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + + - uses: r-lib/actions/setup-r@master + with: + r-version: ${{ matrix.config.r }} + + - uses: r-lib/actions/setup-tinytex@master + + - name: Cache R packages + uses: actions/cache@v2 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }} + restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2- + + - name: Install system packages + run: | + sudo apt-get update && sudo apt-get install libcurl4-openssl-dev libssl-dev libssh2-1-dev libgit2-dev + + - name: Install dependencies + shell: Rscript {0} + run: | + install.packages(${{ env.R_PACKAGES }}, + repos = 'http://cloud.r-project.org', + dependencies = c('Depends', 'Imports', 'LinkingTo')) + + - name: Check R Package + run: | + # Print stacktrace upon success of failure + make Rcheck || tests/ci_build/print_r_stacktrace.sh fail + tests/ci_build/print_r_stacktrace.sh success diff --git a/python-package/setup.cfg b/python-package/setup.cfg index 5aef279b9..0edf1e560 100644 --- a/python-package/setup.cfg +++ b/python-package/setup.cfg @@ -1,2 +1,6 @@ [metadata] description-file = README.rst + +[mypy] +ignore_missing_imports = True +disallow_untyped_defs = True \ No newline at end of file