diff --git a/.github/workflows/matplotlib-tests.yml b/.github/workflows/matplotlib-tests.yml new file mode 100644 index 0000000000..a69c83e986 --- /dev/null +++ b/.github/workflows/matplotlib-tests.yml @@ -0,0 +1,62 @@ +name: matplotlib-tests + +on: + pull_request: + paths: + - .github/workflows/matplotlib-tests.yml + - optuna/visualization/**.py + - tests/visualization_tests/** + +concurrency: + group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.run_number || github.ref }} + cancel-in-progress: true + +jobs: + matplotlib-tests: + runs-on: ubuntu-latest + + # Scheduled Tests are disabled for forks. + if: (github.event_name == 'schedule' && github.repository == 'optuna/optuna') || (github.event_name != 'schedule') + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Python3.8 + uses: actions/setup-python@v4 + with: + python-version: 3.8 + + - name: Setup cache + uses: actions/cache@v3 + env: + cache-name: test-matplotlib + with: + path: ~/.cache/pip + key: ${{ runner.os }}-3.8-${{ env.cache-name }}-${{ hashFiles('**/pyproject.toml') }}-v1 + restore-keys: | + ${{ runner.os }}-3.8-${{ env.cache-name }}-${{ hashFiles('**/pyproject.toml') }} + + - name: Install + run: | + python -m pip install --upgrade pip + pip install --progress-bar off -U setuptools + # Install minimal dependencies and confirm that `import optuna` is successful. + pip install --progress-bar off . + python -c 'import optuna' + optuna --version + pip install --progress-bar off .[test] + pip install --progress-bar off .[optional] + + - name: Output installed packages + run: | + pip freeze --all + - name: Output dependency tree + run: | + pip install pipdeptree + pipdeptree + - name: Tests without Plotly + if: ${{ github.event_name != 'schedule' && github.event_name != 'workflow_dispatch' }} + run: | + pip uninstall -y plotly + pytest tests/visualization_tests/matplotlib_tests + diff --git a/tests/visualization_tests/test_timeline.py b/tests/visualization_tests/test_timeline.py index 42feb15cd9..43d38bd489 100644 --- a/tests/visualization_tests/test_timeline.py +++ b/tests/visualization_tests/test_timeline.py @@ -12,7 +12,12 @@ from optuna.samplers._base import _CONSTRAINTS_KEY from optuna.study.study import Study from optuna.trial import TrialState -from optuna.visualization._plotly_imports import go +from optuna.visualization._plotly_imports import _imports as plotly_imports + + +if plotly_imports.is_successful(): + from optuna.visualization._plotly_imports import go + from optuna.visualization._timeline import _get_timeline_info from optuna.visualization._timeline import plot_timeline