2626 MODIN_GITHUB_CI : true
2727
2828jobs :
29- lint-black :
30- name : lint (black)
31- runs-on : ubuntu-latest
32- steps :
33- - uses : actions/checkout@v3
34- - uses : ./.github/actions/python-only
35- - run : pip install black
36- # NOTE: keep the black command here in sync with the pre-commit hook in
37- # /contributing/pre-commit
38- - run : black --check --diff modin/ asv_bench/benchmarks scripts/doc_checker.py
39-
4029 lint-mypy :
4130 name : lint (mypy)
4231 runs-on : ubuntu-latest
7766 - uses : ./.github/actions/upload-coverage
7867
7968 test-clean-install :
80- needs : [lint-flake8, lint-black ]
69+ needs : [lint-flake8]
8170 strategy :
8271 matrix :
8372 os :
@@ -92,14 +81,20 @@ jobs:
9281 - uses : actions/checkout@v3
9382 - uses : ./.github/actions/python-only
9483 - run : python -m pip install -e ".[all]"
95- - name : Ensure all engines start up
84+ - name : Ensure Ray and Dask engines start up
9685 run : |
9786 MODIN_ENGINE=dask python -c "import modin.pandas as pd; print(pd.DataFrame([1,2,3]))"
9887 MODIN_ENGINE=ray python -c "import modin.pandas as pd; print(pd.DataFrame([1,2,3]))"
88+ - name : Ensure MPI engine start up
89+ # Install a working MPI implementation beforehand so mpi4py can link to it
90+ run : |
91+ sudo apt install libmpich-dev
92+ python -m pip install -e ".[mpi]"
9993 MODIN_ENGINE=unidist UNIDIST_BACKEND=mpi mpiexec -n 1 python -c "import modin.pandas as pd; print(pd.DataFrame([1,2,3]))"
94+ if : matrix.os == 'ubuntu'
10095
10196 test-internals :
102- needs : [lint-flake8, lint-black ]
97+ needs : [lint-flake8]
10398 runs-on : ubuntu-latest
10499 defaults :
105100 run :
@@ -124,7 +119,7 @@ jobs:
124119 - uses : ./.github/actions/upload-coverage
125120
126121 test-defaults :
127- needs : [lint-flake8, lint-black ]
122+ needs : [lint-flake8]
128123 runs-on : ubuntu-latest
129124 defaults :
130125 run :
@@ -155,7 +150,7 @@ jobs:
155150 - uses : ./.github/actions/upload-coverage
156151
157152 test-hdk :
158- needs : [lint-flake8, lint-black ]
153+ needs : [lint-flake8]
159154 runs-on : ubuntu-latest
160155 defaults :
161156 run :
@@ -193,6 +188,7 @@ jobs:
193188 - run : python -m pytest modin/pandas/test/dataframe/test_binary.py
194189 - run : python -m pytest modin/pandas/test/dataframe/test_reduce.py
195190 - run : python -m pytest modin/pandas/test/dataframe/test_join_sort.py
191+ - run : MODIN_RANGE_PARTITIONING=1 python -m pytest modin/pandas/test/dataframe/test_join_sort.py -k "merge"
196192 - run : python -m pytest modin/pandas/test/test_general.py
197193 - run : python -m pytest modin/pandas/test/dataframe/test_indexing.py
198194 - run : python -m pytest modin/pandas/test/test_series.py
@@ -212,7 +208,7 @@ jobs:
212208
213209 test-asv-benchmarks :
214210 if : github.event_name == 'pull_request'
215- needs : [lint-flake8, lint-black ]
211+ needs : [lint-flake8]
216212 runs-on : ubuntu-latest
217213 defaults :
218214 run :
@@ -256,11 +252,6 @@ jobs:
256252 MODIN_ASV_USE_IMPL=pandas asv run --quick --strict --show-stderr --launch-method=spawn \
257253 -b ^benchmarks -b ^io | tee benchmarks.log
258254
259- # HDK: ERR_OUT_OF_CPU_MEM: Not enough host memory to execute the query (MODIN#4270)
260- # just disable test for testing - it works well in a machine with more memory
261- sed -i 's/def time_groupby_agg_nunique(self, \*args, \*\*kwargs):/# def time_groupby_agg_nunique(self, *args, **kwargs):/g' benchmarks/hdk/benchmarks.py
262- sed -i 's/execute(self.df.groupby(by=self.groupby_columns).agg("nunique"))/# execute(self.df.groupby(by=self.groupby_columns).agg("nunique"))/g' benchmarks/hdk/benchmarks.py
263-
264255 # Otherwise, ASV considers that the environment has already been created, although ASV command is run for another config,
265256 # which requires the creation of a completely new environment. This step will be required after removing the manual environment setup step.
266257 rm -f -R .asv/env/
@@ -322,7 +313,7 @@ jobs:
322313 "${{ steps.filter.outputs.ray }}" "${{ steps.filter.outputs.dask }}" >> $GITHUB_OUTPUT
323314
324315 test-all-unidist :
325- needs : [lint-flake8, lint-black, execution-filter]
316+ needs : [lint-flake8, execution-filter]
326317 if : github.event_name == 'push' || needs.execution-filter.outputs.unidist == 'true'
327318 runs-on : ubuntu-latest
328319 defaults :
@@ -353,7 +344,7 @@ jobs:
353344 - uses : actions/checkout@v3
354345 - uses : ./.github/actions/mamba-env
355346 with :
356- environment-file : requirements/env_unidist .yml
347+ environment-file : requirements/env_unidist_linux .yml
357348 activate-environment : modin_on_unidist
358349 python-version : ${{matrix.python-version}}
359350 - name : Install HDF5
@@ -376,8 +367,18 @@ jobs:
376367 - run : ./.github/workflows/sql_server/set_up_sql_server.sh
377368 # need an extra argument "genv" to set environment variables for mpiexec. We need
378369 # these variables to test writing to the mock s3 filesystem.
379- - run : mpiexec -n 1 -genv AWS_ACCESS_KEY_ID foobar_key -genv AWS_SECRET_ACCESS_KEY foobar_secret python -m pytest modin/pandas/test/test_io.py --verbose
380- - run : mpiexec -n 1 python -m pytest modin/experimental/pandas/test/test_io_exp.py
370+ - uses : nick-fields/retry@v2
371+ # to avoid issues with non-stable `to_csv` tests for unidist on MPI backend.
372+ # for details see: https://github.com/modin-project/modin/pull/6776
373+ with :
374+ timeout_minutes : 15
375+ max_attempts : 3
376+ command : |
377+ conda run --no-capture-output -n modin_on_unidist mpiexec -n 1 -genv AWS_ACCESS_KEY_ID foobar_key \
378+ -genv AWS_SECRET_ACCESS_KEY foobar_secret python -m pytest modin/pandas/test/test_io.py --verbose
379+ - run : |
380+ mpiexec -n 1 -genv AWS_ACCESS_KEY_ID foobar_key -genv AWS_SECRET_ACCESS_KEY foobar_secret \
381+ python -m pytest modin/experimental/pandas/test/test_io_exp.py
381382 - run : mpiexec -n 1 python -m pytest modin/experimental/sql/test/test_sql.py
382383 - run : mpiexec -n 1 python -m pytest modin/test/interchange/dataframe_protocol/test_general.py
383384 - run : mpiexec -n 1 python -m pytest modin/test/interchange/dataframe_protocol/pandas/test_protocol.py
@@ -387,7 +388,7 @@ jobs:
387388 - uses : ./.github/actions/upload-coverage
388389
389390 test-all :
390- needs : [lint-flake8, lint-black, execution-filter]
391+ needs : [lint-flake8, execution-filter]
391392 strategy :
392393 matrix :
393394 os :
@@ -521,7 +522,7 @@ jobs:
521522 if : matrix.os == 'windows'
522523
523524 test-sanity :
524- needs : [lint-flake8, lint-black, execution-filter]
525+ needs : [lint-flake8, execution-filter]
525526 if : github.event_name == 'pull_request'
526527 strategy :
527528 matrix :
@@ -560,7 +561,7 @@ jobs:
560561 - uses : actions/checkout@v3
561562 - uses : ./.github/actions/mamba-env
562563 with :
563- environment-file : ${{ matrix.execution.name == 'unidist' && 'requirements/env_unidist .yml' || 'environment-dev.yml' }}
564+ environment-file : ${{ matrix.os == 'ubuntu' && matrix. execution.name == 'unidist' && 'requirements/env_unidist_linux.yml' || matrix.os == 'windows' && matrix.execution.name == 'unidist' && 'requirements/env_unidist_win .yml' || 'environment-dev.yml' }}
564565 activate-environment : ${{ matrix.execution.name == 'unidist' && 'modin_on_unidist' || 'modin' }}
565566 python-version : ${{matrix.python-version}}
566567 - name : Install HDF5
@@ -584,6 +585,7 @@ jobs:
584585 - run : MODIN_BENCHMARK_MODE=True ${{ matrix.execution.shell-ex }} modin/pandas/test/internals/test_benchmark_mode.py
585586 - run : ${{ matrix.execution.shell-ex }} $PARALLEL modin/pandas/test/internals/test_repartition.py
586587 - run : ${{ matrix.execution.shell-ex }} $PARALLEL modin/test/test_partition_api.py
588+ - run : ${{ matrix.execution.shell-ex }} modin/pandas/api/extensions/test
587589 - name : xgboost tests
588590 run : |
589591 # TODO(https://github.com/modin-project/modin/issues/5194): Uncap xgboost
@@ -630,6 +632,15 @@ jobs:
630632 if : matrix.os != 'windows'
631633 - run : ${{ matrix.execution.shell-ex }} $PARALLEL modin/numpy/test
632634 - run : ${{ matrix.execution.shell-ex }} -m "not exclude_in_sanity" modin/pandas/test/test_io.py --verbose
635+ if : matrix.execution.name != 'unidist'
636+ - uses : nick-fields/retry@v2
637+ # to avoid issues with non-stable `to_csv` tests for unidist on MPI backend.
638+ # for details see: https://github.com/modin-project/modin/pull/6776
639+ with :
640+ timeout_minutes : 15
641+ max_attempts : 3
642+ command : conda run --no-capture-output -n modin_on_unidist ${{ matrix.execution.shell-ex }} -m "not exclude_in_sanity" modin/pandas/test/test_io.py --verbose
643+ if : matrix.execution.name == 'unidist'
633644 - run : ${{ matrix.execution.shell-ex }} modin/experimental/pandas/test/test_io_exp.py
634645 - run : ${{ matrix.execution.shell-ex }} $PARALLEL modin/test/interchange/dataframe_protocol/test_general.py
635646 - run : ${{ matrix.execution.shell-ex }} $PARALLEL modin/test/interchange/dataframe_protocol/pandas/test_protocol.py
@@ -644,7 +655,7 @@ jobs:
644655 - uses : ./.github/actions/upload-coverage
645656
646657 test-experimental :
647- needs : [lint-flake8, lint-black ]
658+ needs : [lint-flake8]
648659 runs-on : ubuntu-latest
649660 defaults :
650661 run :
@@ -672,38 +683,8 @@ jobs:
672683 - run : python -m pytest modin/pandas/test/test_io.py --verbose
673684 - uses : ./.github/actions/upload-coverage
674685
675- test-pyarrow :
676- needs : [lint-flake8, lint-black]
677- runs-on : ubuntu-latest
678- defaults :
679- run :
680- shell : bash -l {0}
681- strategy :
682- matrix :
683- python-version : ["3.9"]
684- env :
685- MODIN_STORAGE_FORMAT : pyarrow
686- MODIN_EXPERIMENTAL : " True"
687- name : test (pyarrow, python ${{matrix.python-version}})
688- services :
689- moto :
690- image : motoserver/moto
691- ports :
692- - 5000:5000
693- env :
694- AWS_ACCESS_KEY_ID : foobar_key
695- AWS_SECRET_ACCESS_KEY : foobar_secret
696- steps :
697- - uses : actions/checkout@v3
698- - uses : ./.github/actions/mamba-env
699- with :
700- environment-file : environment-dev.yml
701- python-version : ${{matrix.python-version}}
702- - run : sudo apt update && sudo apt install -y libhdf5-dev
703- - run : python -m pytest modin/pandas/test/test_io.py::TestCsv --verbose
704-
705686 test-spreadsheet :
706- needs : [lint-flake8, lint-black ]
687+ needs : [lint-flake8]
707688 runs-on : ubuntu-latest
708689 defaults :
709690 run :
0 commit comments