Sort import #1235
Workflow file for this run
This file contains hidden or 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
| # SPDX-FileCopyrightText: 2016-2026 PyThaiNLP Project | |
| # SPDX-License-Identifier: CC0-1.0 | |
| name: Unit test | |
| on: | |
| push: | |
| paths: | |
| - ".github/workflows/unittest.yml" | |
| - "bin/**" | |
| - "build_tools/**" | |
| - "pythainlp/**" | |
| - "tests/**" | |
| - "Makefile" | |
| - "MANIFEST.in" | |
| - "pyproject.toml" | |
| pull_request: | |
| branches: | |
| - dev | |
| paths: | |
| - ".github/workflows/unittest.yml" | |
| - "bin/**" | |
| - "build_tools/**" | |
| - "pythainlp/**" | |
| - "tests/**" | |
| - "Makefile" | |
| - "MANIFEST.in" | |
| - "pyproject.toml" | |
| jobs: | |
| unittest: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Test latest and earliest versions of Python on every OSes | |
| os: ["ubuntu-latest", "windows-latest", "macos-latest"] | |
| python-version: ["3.13", "3.9"] # Latest and earliest | |
| include: | |
| # Test the rest of Python versions only on Ubuntu | |
| - os: "ubuntu-latest" | |
| python-version: "3.12" | |
| - os: "ubuntu-latest" | |
| python-version: "3.11" | |
| - os: "ubuntu-latest" | |
| python-version: "3.10" | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| PYICU_WIN_VER: 2.14 | |
| INSTALL_TORCH: false | |
| INSTALL_FULL_DEPS: false | |
| PYTHON_VERSION_LATEST: "3.13" | |
| PYTHON_VERSION_LATEST_2: "3.12" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: "pip" | |
| - name: Install build tools | |
| run: | | |
| pip install --upgrade "pip<24.1" "setuptools>=69.0.0,<=73.0.1" | |
| pip install coverage coveralls | |
| # pip<24.1 because https://github.com/omry/omegaconf/pull/1195 | |
| # setuptools>=65.0.2 because https://github.com/pypa/setuptools/commit/d03da04e024ad4289342077eef6de40013630a44#diff-9ea6e1e3dde6d4a7e08c7c88eceed69ca745d0d2c779f8f85219b22266efff7fR1 | |
| # setuptools<=73.0.1 because https://github.com/pypa/setuptools/issues/4620 | |
| - name: Install ICU (macOS) | |
| if: startsWith(matrix.os, 'macos-') | |
| run: | | |
| brew install icu4c | |
| PKG_CONFIG_PATH=$(brew --prefix)/opt/icu4c/lib/pkgconfig | |
| echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> "${GITHUB_ENV}" | |
| ICU_VER=$(pkg-config --modversion icu-i18n) | |
| echo "ICU_VER=${ICU_VER}" | |
| echo "ICU_VER=${ICU_VER}" >> "${GITHUB_ENV}" | |
| - name: Install PyICU (Windows) | |
| if: startsWith(matrix.os, 'windows-') && (matrix.python-version == '3.12' || matrix.python-version == '3.13') | |
| shell: powershell | |
| run: | | |
| $PYTHON_WIN_VER = "${{ matrix.python-version }}" | |
| $CP_VER = "cp" + $PYTHON_WIN_VER.Replace(".", "") | |
| $WHEEL_URL = "https://github.com/cgohlke/pyicu-build/releases/download/v${{ env.PYICU_WIN_VER }}/PyICU-${{ env.PYICU_WIN_VER }}-${CP_VER}-${CP_VER}-win_amd64.whl" | |
| pip install "$WHEEL_URL" | |
| # Get wheel URL from https://github.com/cgohlke/pyicu-build/releases | |
| - name: Install PyTorch | |
| if: env.INSTALL_TORCH == 'true' | |
| run: pip install torch | |
| # If torch for the platform is not available in PyPI, use this command: | |
| # pip install "<torch_wheel_url>" | |
| # Get wheel URL from http://download.pytorch.org/whl/torch/ | |
| - name: Install testing dependencies | |
| if: env.INSTALL_FULL_DEPS == 'true' | |
| env: | |
| SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL: True | |
| run: pip install ".[testing]" | |
| - name: Install PyThaiNLP + dependencies (minimum) | |
| if: matrix.python-version != env.PYTHON_VERSION_LATEST && matrix.python-version != env.PYTHON_VERSION_LATEST_2 | |
| run: pip install . | |
| - name: Install PyThaiNLP + dependencies (compact) | |
| if: matrix.python-version == env.PYTHON_VERSION_LATEST || matrix.python-version == env.PYTHON_VERSION_LATEST_2 | |
| run: pip install ".[compact]" | |
| # If you want to install a safe small set of optional dependencies, use: | |
| # pip install ".[compact]" | |
| # We can gradually run more test cases by installing more optional | |
| # dependencies. But we should also consider to reduce the number | |
| # of dependencies to avoid the conflict between dependencies. | |
| # See: https://github.com/PyThaiNLP/pythainlp/issues/935 | |
| - name: Unit test (core) | |
| if: matrix.python-version != env.PYTHON_VERSION_LATEST && matrix.python-version != env.PYTHON_VERSION_LATEST_2 | |
| env: | |
| PYTHONIOENCODING: utf-8 | |
| run: coverage run -m unittest tests.core | |
| - name: Unit test (core + compact) | |
| if: matrix.python-version == env.PYTHON_VERSION_LATEST || matrix.python-version == env.PYTHON_VERSION_LATEST_2 | |
| env: | |
| PYTHONIOENCODING: utf-8 | |
| run: coverage run -m unittest tests.core tests.compact | |
| # Only test "compact" set with the latest two stable Python versions. | |
| # Use 'unittest <test_module>' instead of 'unittest discover' to avoid | |
| # loading tests with dependencies more than expected. | |
| # Test cases loaded is defined in __init__.py in the tests directory. | |
| # See also tests/README.md | |
| - name: Coverage report | |
| if: matrix.os == 'ubuntu-latest' && matrix.python-version == env.PYTHON_VERSION_LATEST | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| COVERALLS_SERVICE_NAME: github | |
| run: coveralls | |
| # Only submit a report from the latest Python version on ubuntu-latest. |