name: ci on: push: branches: - main pull_request: jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] python-version: ['3.9'] PYTEST_QT_API: [pyqt5, pyside2] steps: - uses: actions/checkout@v2 with: submodules: true - uses: conda-incubator/setup-miniconda@v2 with: auto-update-conda: true python-version: ${{ matrix.python-version }} # - name: Install system dependencies # shell: bash -l {0} # run: | # if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then # sudo apt-get install -y coreutils # sudo apt-get install -y xvfb herbstluftwm # elif [ "${{ matrix.os }}" = "macos-latest" ]; then # brew install coreutils # brew install --cask xquartz # fi - name: Set up Python shell: bash -l {0} run: | conda install -q -y python=${{ matrix.python-version }} which python python --version pip --version - name: Install dependencies shell: bash -l {0} run: | if [ "${{ matrix.PYTEST_QT_API }}" = "pyside2" ]; then conda install -q -y pyside2 -c conda-forge else conda install -q -y pyqt=5 fi pip install pytest 'pytest-qt<4' - name: Install main shell: bash -l {0} run: | pip install . - name: Lint with flake8 shell: bash -l {0} if: matrix.os != 'windows-latest' run: | pip install hacking==4.1.0 flake8 . - name: Black shell: bash -l {0} if: matrix.os != 'windows-latest' run: | pip install black==22.8.0 black --line-length 79 --check --diff labelme/ - name: Test with pytest shell: bash -l {0} if: matrix.os != 'windows-latest' && !(matrix.os == 'macos-latest' && matrix.PYTEST_QT_API == 'pyside2') env: PYTEST_QT_API: ${{ matrix.PYTEST_QT_API }} MPLBACKEND: 'agg' run: | # # open virtual display # if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then # export DISPLAY=:99.0 # /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX +render -noreset # (herbstluftwm )& # else # (sudo Xvfb :99 -ac -screen 0 1024x768x8 )& # fi pytest -vs -m 'not gui' tests/ - name: Run examples shell: bash -l {0} if: matrix.os != 'windows-latest' env: MPLBACKEND: agg run: | labelme --help labelme --version (cd examples/primitives && labelme_json_to_dataset primitives.json && rm -rf primitives_json) (cd examples/tutorial && rm -rf apc2016_obj3_json && labelme_json_to_dataset apc2016_obj3.json && python load_label_png.py && git checkout -- .) (cd examples/semantic_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .) (cd examples/instance_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .) (cd examples/video_annotation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .) pip install lxml # for bbox_detection/labelme2voc.py (cd examples/bbox_detection && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .) pip install cython && pip install pycocotools # for instance_segmentation/labelme2coco.py (cd examples/instance_segmentation && rm -rf data_dataset_coco && ./labelme2coco.py data_annotated data_dataset_coco --labels labels.txt && git checkout -- .) - name: Run pyinstaller shell: bash -l {0} if: matrix.PYTEST_QT_API == 'pyqt5' run: | # Build the standalone executable pip install PyQt5 -I --use-feature=2020-resolver # https://stackoverflow.com/a/68784578 pip install pyinstaller pyinstaller labelme.spec dist/labelme --version