Add per-call callbacks to train(), harden hyperopt for ray-free envir… #926
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
| # This workflow will install Python dependencies and run all tests marked as `slow` on a single Python version. | |
| name: pytest (slow) | |
| on: | |
| push: | |
| branches: ["main", "release-*"] | |
| jobs: | |
| slow-pytest: | |
| name: py-slow | |
| runs-on: ubuntu-latest | |
| env: | |
| # Use Minio credentials for all S3 operations in tests. | |
| # PyArrow/Ray S3 clients use these env vars directly, so they must point to Minio. | |
| AWS_ACCESS_KEY_ID: minio | |
| AWS_SECRET_ACCESS_KEY: minio123 | |
| AWS_ENDPOINT_URL: http://localhost:9000 | |
| KAGGLE_USERNAME: ${{ secrets.KAGGLE_USERNAME }} | |
| KAGGLE_KEY: ${{ secrets.KAGGLE_KEY }} | |
| IS_NOT_FORK: ${{ !(github.event.pull_request.base.repo.full_name == 'ludwig-ai/ludwig' && github.event.pull_request.head.repo.fork) }} | |
| services: | |
| minio: | |
| image: fclairamb/minio-github-actions | |
| env: | |
| MINIO_ACCESS_KEY: minio | |
| MINIO_SECRET_KEY: minio123 | |
| ports: | |
| - 9000:9000 | |
| timeout-minutes: 150 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Setup Linux | |
| if: runner.os == 'linux' | |
| run: | | |
| sudo apt-get update && sudo apt-get install -y cmake libsndfile1 libsox-dev | |
| - name: Install dependencies | |
| run: | | |
| python --version | |
| pip --version | |
| pip install uv | |
| uv pip install --system torch==2.7.1 torchvision==0.22.1 torchaudio==2.7.1 | |
| pip install '.[test]' | |
| pip list | |
| shell: bash | |
| - name: Create Minio test bucket | |
| run: | | |
| python -c " | |
| import boto3 | |
| s3 = boto3.client('s3', endpoint_url='http://localhost:9000', | |
| aws_access_key_id='minio', aws_secret_access_key='minio123') | |
| try: | |
| s3.create_bucket(Bucket='ludwig-tests') | |
| except s3.exceptions.BucketAlreadyOwnedByYou: | |
| pass | |
| " | |
| shell: bash | |
| - name: Tests | |
| run: | | |
| RUN_PRIVATE=$IS_NOT_FORK LUDWIG_TEST_SUITE_TIMEOUT_S=7200 pytest -v --timeout 600 --durations 100 -m "slow" --junitxml pytest.xml tests/integration_tests/ |