# 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) }} MLFLOW_ALLOW_FILE_STORE: "true" 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 ffmpeg - name: Install dependencies run: | python --version pip --version pip install uv uv pip install --system torch==2.12.0 torchvision==0.27.0 torchaudio==2.11.0 torchcodec --extra-index-url https://download.pytorch.org/whl/cpu uv pip install --system '.[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/