Repository: modin-project/modin

Issue:
Add a mechanism that allows to install additional packages in a remote environment.

Discussion:
modin-bot: <h1 align="center"><img width=7% alt="" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Teamcity_Logo.png/600px-Teamcity_Logo.png">
    TeamCity Python test results bot</h1>

<h3 align="center">Tests PASSed</h3>

<details><summary>Tests Logs</summary>


```
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
collected 114 items

modin/pandas/test/test_io.py .................sX..........s............. [ 37%]
........s............................s..s.X.....s..................ss..  [100%]

----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml


=========== 104 passed, 8 skipped, 2 xpassed, 124 warnings in 35.08s ===========
Closing remaining open files:test_write_modin.hdf...donetest_write_pandas.hdf...done
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
gw0 [5406] / gw1 [5406] / gw2 [5406] / gw3 [5406] / gw4 [5406] / gw5 [5406] / gw6 [5406] / gw7 [5406] / gw8 [5406] / gw9 [5406] / gw10 [5406] / gw11 [5406] / gw12 [5406] / gw13 [5406] / gw14 [5406] / gw15 [5406] / gw16 [5406] / gw17 [5406] / gw18 [5406] / gw19 [5406] / gw20 [5406] / gw21 [5406] / gw22 [5406] / gw23 [5406] / gw24 [5406] / gw25 [5406] / gw26 [5406] / gw27 [5406] / gw28 [5406] / gw29 [5406] / gw30 [5406] / gw31 [5406] / gw32 [5406] / gw33 [5406] / gw34 [5406] / gw35 [5406] / gw36 [5406] / gw37 [5406] / gw38 [5406] / gw39 [5406] / gw40 [5406] / gw41 [5406] / gw42 [5406] / gw43 [5406] / gw44 [5406] / gw45 [5406] / gw46 [5406] / gw47 [5406]

........................................................................ [  1%]
........................................................................ [  2%]
........................................................................ [  3%]
........................................................................ [  5%]
........................................................................ [  6%]
........................................................................ [  7%]
....................s........................................s........... [  9%]
.............................................x.................X........ [ 10%]
........................................................................ [ 11%]
.xx..x.......XX..X.X.XXX......X...X...X...X........X...x...............X [ 13%]
...X...x.XX................X...X....X.....X......X..................X.X. [ 14%]
.......X..X...........X..X.....X...................x.............X...x.. [ 16%]
......X.X......................X...........X....X........x..x.x......... [ 17%]
X.....x...Xx....X.....xx.X.X....X........X........XX..X..X....xX.X...... [ 18%]
.........X.........X..X....X......X.X.........X..X.X...X.......Xx..X.... [ 19%]
................XX.....X...X.x.........X............x......xx...X....... [ 21%]
...........x...X.x.........x.........X.X...........xX..........x....X... [ 22%]
............x...XX......x....X...............xX.xX....................Xx [ 23%]
X........x.....xX....x.X..x....................................x......x. [ 25%]
.....X.XxX...........x......xx..s.........X........X.X........X......... [ 26%]
....Xx..XX.....................X..............X..X.....x................ [ 27%]
..........X...X................X........X.....x....s.......X.......x.... [ 29%]
..X.......X..................x.................X.......X......X......X.. [ 30%]
............x..............x...............x.............X...x.........x [ 31%]
...................x.......................................x............ [ 33%]
...........x........x...........x.....................x................. [ 34%]
....................x............................x..............x.x.x... [ 35%]
.......................x....x........Xx......................X....x..... [ 37%]
.....................x.x....x....X...................................x.X [ 38%]
.........XX.x............X........x..................................... [ 39%]
.X.X.....X......X.....................X..........XX..................... [ 41%]
......X....X..................X....................X......X....XX...X... [ 42%]
......................X.......X..........................X.............. [ 43%]
..X.X...............................X................................... [ 45%]
...................................................................X.... [ 46%]
.xx..........X......X.............................................x..... [ 47%]
.......xxxssssssssssss..s............................................... [ 49%]
................................ss...................................... [ 50%]
X............xx...........................................X............. [ 51%]
.........................................X..ssssssssssss................ [ 53%]
............................X...........ssssssss...s.........x.......... [ 54%]
........................................................................ [ 55%]
...........................x............................................ [ 57%]
.x...............s.....................s..................X............. [ 58%]
........X..s............................................................ [ 59%]
..................X................................X...........s........ [ 61%]
.............................xX...X.....................X..x............ [ 62%]
.x..x...........x.....x.....x.........x.x......xx.......xx....x....XX... [ 63%]
...X.X...X....X............X.....X.X..X..........X..X........x....x..... [ 65%]
.x............x.............x...................x........x........x..... [ 66%]
..X..X.................................................................. [ 67%]
.........s.............................................................. [ 69%]
........................................................................ [ 70%]
....................................................................x... [ 71%]
........................................................................ [ 73%]
........................................................................ [ 74%]
........................................................................ [ 75%]
s.............X........s................s.....s.......s.......s........s [ 77%]
........s....s.......sx...x..s....s..............s.s...........s....x... [ 78%]
.......s....x.........x....s....x..............s.......x................ [ 79%]
s..................x............s.....x..............XXX..........xX..s. [ 81%]
....X.x....X...s.....X.X...Xs....s...X.X...x...................X....X... [ 82%]
.....X..X...........XX...X....XXX......XX.....XXxX......X..X.x........... [ 83%]
......................X...X....................Xx..................X.... [ 85%]
.....X....X.................x........................................... [ 86%]
..........X............X.........................................X....... [ 87%]
................X..................x.x............X........x...xX....... [ 89%]
....XXx......Xxx...x..X......x...x.x...........x..x....X.........XX.XX.. [ 90%]
..................X......X..........xX........X.X..............xX....x.. [ 91%]
..........................................X............................. [ 93%]
..........................xxx.x..........x..............x...x........... [ 94%]
..x......x...........x....xx..........x......x...x..xx.................. [ 95%]
.........................x................................................. [ 97%]
......................................................XX................ [ 98%]
........................................................................ [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
fatal: bad object HEAD


----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml

= 4961 passed, 69 skipped, 156 xfailed, 220 xpassed, 11898 warnings in 73.57s (0:01:13) =
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
collected 114 items

modin/pandas/test/test_io.py .................sX..........s............. [ 37%]
........s............................s..s.X.....s..................ss..  [100%]

----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml


=========== 104 passed, 8 skipped, 2 xpassed, 124 warnings in 35.08s ===========
Closing remaining open files:test_write_modin.hdf...donetest_write_pandas.hdf...done
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
gw0 [5406] / gw1 [5406] / gw2 [5406] / gw3 [5406] / gw4 [5406] / gw5 [5406] / gw6 [5406] / gw7 [5406] / gw8 [5406] / gw9 [5406] / gw10 [5406] / gw11 [5406] / gw12 [5406] / gw13 [5406] / gw14 [5406] / gw15 [5406] / gw16 [5406] / gw17 [5406] / gw18 [5406] / gw19 [5406] / gw20 [5406] / gw21 [5406] / gw22 [5406] / gw23 [5406] / gw24 [5406] / gw25 [5406] / gw26 [5406] / gw27 [5406] / gw28 [5406] / gw29 [5406] / gw30 [5406] / gw31 [5406] / gw32 [5406] / gw33 [5406] / gw34 [5406] / gw35 [5406] / gw36 [5406] / gw37 [5406] / gw38 [5406] / gw39 [5406] / gw40 [5406] / gw41 [5406] / gw42 [5406] / gw43 [5406] / gw44 [5406] / gw45 [5406] / gw46 [5406] / gw47 [5406]

........................................................................ [  1%]
........................................................................ [  2%]
........................................................................ [  3%]
........................................................................ [  5%]
........................................................................ [  6%]
........................................................................ [  7%]
....................s........................................s........... [  9%]
.............................................x.................X........ [ 10%]
........................................................................ [ 11%]
.xx..x.......XX..X.X.XXX......X...X...X...X........X...x...............X [ 13%]
...X...x.XX................X...X....X.....X......X..................X.X. [ 14%]
.......X..X...........X..X.....X...................x.............X...x.. [ 16%]
......X.X......................X...........X....X........x..x.x......... [ 17%]
X.....x...Xx....X.....xx.X.X....X........X........XX..X..X....xX.X...... [ 18%]
.........X.........X..X....X......X.X.........X..X.X...X.......Xx..X.... [ 19%]
................XX.....X...X.x.........X............x......xx...X....... [ 21%]
...........x...X.x.........x.........X.X...........xX..........x....X... [ 22%]
............x...XX......x....X...............xX.xX....................Xx [ 23%]
X........x.....xX....x.X..x....................................x......x. [ 25%]
.....X.XxX...........x......xx..s.........X........X.X........X......... [ 26%]
....Xx..XX.....................X..............X..X.....x................ [ 27%]
..........X...X................X........X.....x....s.......X.......x.... [ 29%]
..X.......X..................x.................X.......X......X......X.. [ 30%]
............x..............x...............x.............X...x.........x [ 31%]
...................x.......................................x............ [ 33%]
...........x........x...........x.....................x................. [ 34%]
....................x............................x..............x.x.x... [ 35%]
.......................x....x........Xx......................X....x..... [ 37%]
.....................x.x....x....X...................................x.X [ 38%]
.........XX.x............X........x..................................... [ 39%]
.X.X.....X......X.....................X..........XX..................... [ 41%]
......X....X..................X....................X......X....XX...X... [ 42%]
......................X.......X..........................X.............. [ 43%]
..X.X...............................X................................... [ 45%]
...................................................................X.... [ 46%]
.xx..........X......X.............................................x..... [ 47%]
.......xxxssssssssssss..s............................................... [ 49%]
................................ss...................................... [ 50%]
X............xx...........................................X............. [ 51%]
.........................................X..ssssssssssss................ [ 53%]
............................X...........ssssssss...s.........x.......... [ 54%]
........................................................................ [ 55%]
...........................x............................................ [ 57%]
.x...............s.....................s..................X............. [ 58%]
........X..s............................................................ [ 59%]
..................X................................X...........s........ [ 61%]
.............................xX...X.....................X..x............ [ 62%]
.x..x...........x.....x.....x.........x.x......xx.......xx....x....XX... [ 63%]
...X.X...X....X............X.....X.X..X..........X..X........x....x..... [ 65%]
.x............x.............x...................x........x........x..... [ 66%]
..X..X.................................................................. [ 67%]
.........s.............................................................. [ 69%]
........................................................................ [ 70%]
....................................................................x... [ 71%]
........................................................................ [ 73%]
........................................................................ [ 74%]
........................................................................ [ 75%]
s.............X........s................s.....s.......s.......s........s [ 77%]
........s....s.......sx...x..s....s..............s.s...........s....x... [ 78%]
.......s....x.........x....s....x..............s.......x................ [ 79%]
s..................x............s.....x..............XXX..........xX..s. [ 81%]
....X.x....X...s.....X.X...Xs....s...X.X...x...................X....X... [ 82%]
.....X..X...........XX...X....XXX......XX.....XXxX......X..X.x........... [ 83%]
......................X...X....................Xx..................X.... [ 85%]
.....X....X.................x........................................... [ 86%]
..........X............X.........................................X....... [ 87%]
................X..................x.x............X........x...xX....... [ 89%]
....XXx......Xxx...x..X......x...x.x...........x..x....X.........XX.XX.. [ 90%]
..................X......X..........xX........X.X..............xX....x.. [ 91%]
..........................................X............................. [ 93%]
..........................xxx.x..........x..............x...x........... [ 94%]
..x......x...........x....xx..........x......x...x..xx.................. [ 95%]
.........................x................................................. [ 97%]
......................................................XX................ [ 98%]
........................................................................ [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
fatal: bad object HEAD


----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml

= 4961 passed, 69 skipped, 156 xfailed, 220 xpassed, 11898 warnings in 73.57s (0:01:13) =

```

</details>

codecov[bot]: # [Codecov](https://codecov.io/gh/modin-project/modin/pull/2117?src=pr&el=h1) Report
> Merging [#2117](https://codecov.io/gh/modin-project/modin/pull/2117?src=pr&el=desc) into [master](https://codecov.io/gh/modin-project/modin/commit/eaa77aa72fd9fc56435a286d269ebc3baca07282?el=desc) will **decrease** coverage by `12.44%`.
> The diff coverage is `0.00%`.

[![Impacted file tree graph](https://codecov.io/gh/modin-project/modin/pull/2117/graphs/tree.svg?width=650&height=150&src=pr&token=ynEaSfgM5H)](https://codecov.io/gh/modin-project/modin/pull/2117?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master    #2117       +/-   ##
===========================================
- Coverage   66.35%   53.91%   -12.45%     
===========================================
  Files         116      116               
  Lines       12972    12969        -3     
===========================================
- Hits         8608     6992     -1616     
- Misses       4364     5977     +1613     
```


| [Impacted Files](https://codecov.io/gh/modin-project/modin/pull/2117?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [modin/experimental/cloud/cluster.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZXhwZXJpbWVudGFsL2Nsb3VkL2NsdXN0ZXIucHk=) | `0.00% <0.00%> (-37.12%)` | :arrow_down: |
| [modin/experimental/cloud/rayscale.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZXhwZXJpbWVudGFsL2Nsb3VkL3JheXNjYWxlLnB5) | `0.00% <0.00%> (ø)` | |
| [modin/engines/ray/task\_wrapper.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZW5naW5lcy9yYXkvdGFza193cmFwcGVyLnB5) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [modin/engines/dask/task\_wrapper.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZW5naW5lcy9kYXNrL3Rhc2tfd3JhcHBlci5weQ==) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [modin/experimental/pandas/io\_exp.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZXhwZXJpbWVudGFsL3BhbmRhcy9pb19leHAucHk=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [modin/engines/ray/pandas\_on\_ray/io.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZW5naW5lcy9yYXkvcGFuZGFzX29uX3JheS9pby5weQ==) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [modin/experimental/pandas/\_\_init\_\_.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZXhwZXJpbWVudGFsL3BhbmRhcy9fX2luaXRfXy5weQ==) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [modin/engines/dask/pandas\_on\_dask/io.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZW5naW5lcy9kYXNrL3BhbmRhc19vbl9kYXNrL2lvLnB5) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [modin/engines/dask/pandas\_on\_dask/frame/data.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZW5naW5lcy9kYXNrL3BhbmRhc19vbl9kYXNrL2ZyYW1lL2RhdGEucHk=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [...din/engines/ray/generic/frame/partition\_manager.py](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree#diff-bW9kaW4vZW5naW5lcy9yYXkvZ2VuZXJpYy9mcmFtZS9wYXJ0aXRpb25fbWFuYWdlci5weQ==) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| ... and [47 more](https://codecov.io/gh/modin-project/modin/pull/2117/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/modin-project/modin/pull/2117?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/modin-project/modin/pull/2117?src=pr&el=footer). Last update [eaa77aa...dc73064](https://codecov.io/gh/modin-project/modin/pull/2117?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

modin-bot: <h1 align="center"><img width=7% alt="" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Teamcity_Logo.png/600px-Teamcity_Logo.png">
    TeamCity Dask test results bot</h1>

<h3 align="center">Tests PASSed</h3>

<details><summary>Tests Logs</summary>


```
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
collected 114 items

modin/pandas/test/test_io.py .................sx..........s............. [ 37%]
.....................................s..s.X.....s..................ss..  [100%]

----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml


= 105 passed, 7 skipped, 1 xfailed, 1 xpassed, 107 warnings in 78.19s (0:01:18) =
Closing remaining open files:test_write_modin.hdf...donetest_write_pandas.hdf...done
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
gw0 [5406] / gw1 [5406] / gw2 [5406] / gw3 [5406] / gw4 [5406] / gw5 [5406] / gw6 [5406] / gw7 [5406] / gw8 [5406] / gw9 [5406] / gw10 [5406] / gw11 [5406] / gw12 [5406] / gw13 [5406] / gw14 [5406] / gw15 [5406] / gw16 [5406] / gw17 [5406] / gw18 [5406] / gw19 [5406] / gw20 [5406] / gw21 [5406] / gw22 [5406] / gw23 [5406] / gw24 [5406] / gw25 [5406] / gw26 [5406] / gw27 [5406] / gw28 [5406] / gw29 [5406] / gw30 [5406] / gw31 [5406] / gw32 [5406] / gw33 [5406] / gw34 [5406] / gw35 [5406] / gw36 [5406] / gw37 [5406] / gw38 [5406] / gw39 [5406] / gw40 [5406] / gw41 [5406] / gw42 [5406] / gw43 [5406] / gw44 [5406] / gw45 [5406] / gw46 [5406] / gw47 [5406]

........................................................................ [  1%]
......................................................................... [  2%]
......................................................................... [  3%]
........................................................................ [  5%]
........................................................................ [  6%]
........................................................................ [  8%]
...................................s....x............................... [  9%]
.........X..............................................X............... [ 10%]
....X.............X..................x......X..X.........XXX...s........ [ 12%]
.................X.......X................X..............x....X.......XX [ 13%]
....X.....X.......X.......X.................x.......X.X......xX......... [ 14%]
.......X....X......x..........X..............X............x............. [ 15%]
xX......X..X.......x...........X..........X......X.........x.......X.... [ 17%]
...........X.............x........x..X.......X.......X.x.................X [ 18%]
Xx...............x........x..X.X.......X.......X.x...................... [ 20%]
x..XX.....X.........X.X.....X.........X...........X...Xx.............X.. [ 21%]
....x..............x.xx....X............................x............... [ 22%]
.xX.x........................x....xx......X..............X......X....... [ 24%]
...X....X......X..X......X................x................X............ [ 25%]
....x...................................X.....................x.....X... [ 26%]
x...................................................................x... [ 28%]
........................x.......................x.......x.............X. [ 29%]
..X........X.....X...................................................... [ 30%]
..........................................X...........X................. [ 32%]
...................................................X.............XX..... [ 33%]
.............................................................X.......... [ 34%]
..................X....X................................................ [ 36%]
.x.................X.................................................... [ 37%]
............X...............................x..................x........ [ 38%]
.........X.................x............x......X........................ [ 39%]
............................x.......X..........................x........ [ 41%]
...............................xx.....x................................. [ 42%]
...X..........x................X...........x.X....ss.ssss.s...ssssX.s... [ 43%]
.........X.....X..............X............X.X.........X.................. [ 45%]
........x...................x............x.......s.ssss..ss.sss.ss...... [ 46%]
......x..x...............x.........x..............X..............x....x. [ 48%]
......s......................sx..x..............x....X.......X....X..... [ 49%]
......X......X....X............................................ss....... [ 50%]
.......................................................X................ [ 52%]
......................................................................... [ 53%]
.....x....................................x............................. [ 54%]
...........................................x........Xx......X........... [ 56%]
.x......x............X.....X.......sssss.ssss.s.................X....... [ 57%]
.....................X............................ss.................... [ 58%]
........................................................................ [ 60%]
.......................................................................X [ 61%]
........................................................................ [ 62%]
........................................................X.X.....x..X.... [ 64%]
.........X..........x.....................xX.XXX.X.X..X....x....x.....x. [ 65%]
....Xx...........x.........s.x........x..X..X.X.....X....X.XX............ [ 66%]
...............................X..............X....x.................... [ 68%]
.................X................x..........X..XXX.........x......x.x.. [ 69%]
.......x.....x..xX.....X.X..X..X.X....................................... [ 70%]
.x...................................................................... [ 72%]
........................................................................ [ 73%]
........................................................................ [ 74%]
.................................................................x....s. [ 76%]
......s........x...ss.......s.....x.s......s..s......sx..s............s. [ 77%]
..x..x........x.xs...s.........s....ss.....s...x..x.......s..s.......X.. [ 78%]
.s.x....s....sX...s..X..X...XX.X.X......X.X...x.X..Xs.XX....X.........X. [ 80%]
...XX.X.XX.....X...xX......X.XXX.X....X.X..X.....xX..xX....X..X....XX.X. [ 81%]
..X.........XX...XX......x..........x...X.....XX......xX.......X........ [ 82%]
..............................................x......................... [ 84%]
..................................x..................................... [ 85%]
.......x.................X.............................................. [ 86%]
...............x.......x...........x........x..x.....x......Xxx....x.... [ 88%]
.....X.x.X..x................X...............................x.......... [ 89%]
..................X......................s.............................. [ 90%]
........................................................................ [ 92%]
...........................xx..xxx.x..x........x...X...............s.... [ 93%]
......x.....X..xxXx..xXx...x.x.X.XXXX..X.x....x.x..x.x.xXXXX...........x [ 94%]
.............x.x.................x....x..xx.XX.XXX.Xx.......x........x.. [ 96%]
x.x..x...x..x.XXX.XXX................................................... [ 97%]
.......................................................................... [ 98%]
...................................................................      [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
fatal: bad object HEAD
UserWarning: The Dask Engine for Modin is experimental.


----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml

= 4961 passed, 69 skipped, 156 xfailed, 220 xpassed, 11042 warnings in 142.27s (0:02:22) =
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
collected 114 items

modin/pandas/test/test_io.py .................sx..........s............. [ 37%]
.....................................s..s.X.....s..................ss..  [100%]

----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml


= 105 passed, 7 skipped, 1 xfailed, 1 xpassed, 107 warnings in 78.19s (0:01:18) =
Closing remaining open files:test_write_modin.hdf...donetest_write_pandas.hdf...done
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
gw0 [5406] / gw1 [5406] / gw2 [5406] / gw3 [5406] / gw4 [5406] / gw5 [5406] / gw6 [5406] / gw7 [5406] / gw8 [5406] / gw9 [5406] / gw10 [5406] / gw11 [5406] / gw12 [5406] / gw13 [5406] / gw14 [5406] / gw15 [5406] / gw16 [5406] / gw17 [5406] / gw18 [5406] / gw19 [5406] / gw20 [5406] / gw21 [5406] / gw22 [5406] / gw23 [5406] / gw24 [5406] / gw25 [5406] / gw26 [5406] / gw27 [5406] / gw28 [5406] / gw29 [5406] / gw30 [5406] / gw31 [5406] / gw32 [5406] / gw33 [5406] / gw34 [5406] / gw35 [5406] / gw36 [5406] / gw37 [5406] / gw38 [5406] / gw39 [5406] / gw40 [5406] / gw41 [5406] / gw42 [5406] / gw43 [5406] / gw44 [5406] / gw45 [5406] / gw46 [5406] / gw47 [5406]

........................................................................ [  1%]
......................................................................... [  2%]
......................................................................... [  3%]
........................................................................ [  5%]
........................................................................ [  6%]
........................................................................ [  8%]
...................................s....x............................... [  9%]
.........X..............................................X............... [ 10%]
....X.............X..................x......X..X.........XXX...s........ [ 12%]
.................X.......X................X..............x....X.......XX [ 13%]
....X.....X.......X.......X.................x.......X.X......xX......... [ 14%]
.......X....X......x..........X..............X............x............. [ 15%]
xX......X..X.......x...........X..........X......X.........x.......X.... [ 17%]
...........X.............x........x..X.......X.......X.x.................X [ 18%]
Xx...............x........x..X.X.......X.......X.x...................... [ 20%]
x..XX.....X.........X.X.....X.........X...........X...Xx.............X.. [ 21%]
....x..............x.xx....X............................x............... [ 22%]
.xX.x........................x....xx......X..............X......X....... [ 24%]
...X....X......X..X......X................x................X............ [ 25%]
....x...................................X.....................x.....X... [ 26%]
x...................................................................x... [ 28%]
........................x.......................x.......x.............X. [ 29%]
..X........X.....X...................................................... [ 30%]
..........................................X...........X................. [ 32%]
...................................................X.............XX..... [ 33%]
.............................................................X.......... [ 34%]
..................X....X................................................ [ 36%]
.x.................X.................................................... [ 37%]
............X...............................x..................x........ [ 38%]
.........X.................x............x......X........................ [ 39%]
............................x.......X..........................x........ [ 41%]
...............................xx.....x................................. [ 42%]
...X..........x................X...........x.X....ss.ssss.s...ssssX.s... [ 43%]
.........X.....X..............X............X.X.........X.................. [ 45%]
........x...................x............x.......s.ssss..ss.sss.ss...... [ 46%]
......x..x...............x.........x..............X..............x....x. [ 48%]
......s......................sx..x..............x....X.......X....X..... [ 49%]
......X......X....X............................................ss....... [ 50%]
.......................................................X................ [ 52%]
......................................................................... [ 53%]
.....x....................................x............................. [ 54%]
...........................................x........Xx......X........... [ 56%]
.x......x............X.....X.......sssss.ssss.s.................X....... [ 57%]
.....................X............................ss.................... [ 58%]
........................................................................ [ 60%]
.......................................................................X [ 61%]
........................................................................ [ 62%]
........................................................X.X.....x..X.... [ 64%]
.........X..........x.....................xX.XXX.X.X..X....x....x.....x. [ 65%]
....Xx...........x.........s.x........x..X..X.X.....X....X.XX............ [ 66%]
...............................X..............X....x.................... [ 68%]
.................X................x..........X..XXX.........x......x.x.. [ 69%]
.......x.....x..xX.....X.X..X..X.X....................................... [ 70%]
.x...................................................................... [ 72%]
........................................................................ [ 73%]
........................................................................ [ 74%]
.................................................................x....s. [ 76%]
......s........x...ss.......s.....x.s......s..s......sx..s............s. [ 77%]
..x..x........x.xs...s.........s....ss.....s...x..x.......s..s.......X.. [ 78%]
.s.x....s....sX...s..X..X...XX.X.X......X.X...x.X..Xs.XX....X.........X. [ 80%]
...XX.X.XX.....X...xX......X.XXX.X....X.X..X.....xX..xX....X..X....XX.X. [ 81%]
..X.........XX...XX......x..........x...X.....XX......xX.......X........ [ 82%]
..............................................x......................... [ 84%]
..................................x..................................... [ 85%]
.......x.................X.............................................. [ 86%]
...............x.......x...........x........x..x.....x......Xxx....x.... [ 88%]
.....X.x.X..x................X...............................x.......... [ 89%]
..................X......................s.............................. [ 90%]
........................................................................ [ 92%]
...........................xx..xxx.x..x........x...X...............s.... [ 93%]
......x.....X..xxXx..xXx...x.x.X.XXXX..X.x....x.x..x.x.xXXXX...........x [ 94%]
.............x.x.................x....x..xx.XX.XXX.Xx.......x........x.. [ 96%]
x.x..x...x..x.XXX.XXX................................................... [ 97%]
.......................................................................... [ 98%]
...................................................................      [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
fatal: bad object HEAD
UserWarning: The Dask Engine for Modin is experimental.


----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml

= 4961 passed, 69 skipped, 156 xfailed, 220 xpassed, 11042 warnings in 142.27s (0:02:22) =

```

</details>

modin-bot: <h1 align="center"><img width=7% alt="" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Teamcity_Logo.png/600px-Teamcity_Logo.png">
    TeamCity Ray test results bot</h1>

<h3 align="center">Tests PASSed</h3>

<details><summary>Tests Logs</summary>


```
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
collected 114 items

modin/pandas/test/test_io.py .................sx..........s............. [ 37%]
.....................................s..s.X.....s..................ss..  [100%]

----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml


= 105 passed, 7 skipped, 1 xfailed, 1 xpassed, 96 warnings in 84.53s (0:01:24) =
Closing remaining open files:test_write_pandas.hdf...donetest_write_modin.hdf...done
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
[gw23] node down: Not properly terminated

replacing crashed worker gw23
gw0 [5406] / gw1 [5406] / gw2 [5406] / gw3 [5406] / gw4 [5406] / gw5 [5406] / gw6 [5406] / gw7 [5406] / gw8 [5406] / gw9 [5406] / gw10 [5406] / gw11 [5406] / gw12 [5406] / gw13 [5406] / gw14 [5406] / gw15 [5406] / gw16 [5406] / gw17 [5406] / gw18 [5406] / gw19 [5406] / gw20 [5406] / gw21 [5406] / gw22 [5406] / gw48 [5406] / gw24 [5406] / gw25 [5406] / gw26 [5406] / gw27 [5406] / gw28 [5406] / gw29 [5406] / gw30 [5406] / gw31 [5406] / gw32 [5406] / gw33 [5406] / gw34 [5406] / gw35 [5406] / gw36 [5406] / gw37 [5406] / gw38 [5406] / gw39 [5406] / gw40 [5406] / gw41 [5406] / gw42 [5406] / gw43 [5406] / gw44 [5406] / gw45 [5406] / gw46 [5406] / gw47 [5406]

........................................................................ [  1%]
........................................................................ [  2%]
........................................................................ [  3%]
......................................................................... [  5%]
........................................................................ [  6%]
........................................................................ [  8%]
................x.........s...........................................X. [  9%]
..............................................X.........X..X........s.... [ 10%]
........X....................X................x..............X....X...... [ 12%]
..x.X.........X...........X.......X.......X...............xX..X......... [ 13%]
...................X...X.X..x........X........................X.......... [ 14%]
................X..X..X.X............X.........x.........X.Xx..X......X. [ 16%]
....X.x..X..x..X......X.....x...X.X..........x...........X.............. [ 17%]
.X..X.........Xx....X..X................xx.....x.............x....x.x.X. [ 18%]
.x.......x.......x.....x........Xx.X......X..X..xx..x..X.Xx......xX.X... [ 20%]
XxX......XxX...X...X..........Xx..X.x....X....x.X...XX..X...xX...xx...X. [ 21%]
...x.x....X..........sxX......x..XXx.......X.....X...................... [ 22%]
...x....xX......................x........X.......XX...........X......... [ 24%]
..............................................x.............X.....XXX... [ 25%]
......[2m[36m(pid=5638)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5638)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5638)[0m 
[2m[36m(pid=5638)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5638)[0m 
[2m[36m(pid=5638)[0m becomes:
[2m[36m(pid=5638)[0m 
[2m[36m(pid=5638)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5638)[0m 
.......X...X...................................................... [ 26%]
....x................................................X...X............... [ 28%]
.....................X................X...X........................X.X.. [ 29%]
........................................................................ [ 30%]
........................................................................ [ 32%]
.X......................................................X................ [ 33%]
...................................X.................................... [ 34%]
.....................X...X.....x...................................X.... [ 36%]
......................................................X................. [ 37%]
..................................x........X............................ [ 38%]
.............................x.X........................................ [ 40%]
...........................................X............................ [ 41%]
..................X..................................................... [ 42%]
...................s........X...X....................................... [ 44%]
.................x.........................x...................x........ [ 45%]
.............x............................x...........x..X......XX.X.... [ 46%]
.....X........X......................................................... [ 48%]
...ss....s.sssss..ss..sssss.......ss.s..ss[2m[36m(pid=6123)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=6123)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m becomes:
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=6123)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m becomes:
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=6123)[0m 
ss....ss...ssssssss.s.......[2m[36m(pid=5624)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5624)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m becomes:
[2m[36m(pid=5624)[0m 
.[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5624)[0m 
. [ 49%]
.X.................................s.s...............s................... [ 50%]
................[2m[36m(pid=5189)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5189)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5189)[0m 
[2m[36m(pid=5189)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5189)[0m 
[2m[36m(pid=5189)[0m becomes:
[2m[36m(pid=5189)[0m 
[2m[36m(pid=5189)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5189)[0m 
....x.x.....................x.x......................... [ 52%]
.......[2m[36m(pid=5624)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5624)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m becomes:.[2m[36m(pid=5624)[0m .
[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5624)[0m 
................x.x............................................ [ 53%]
........................................................................ [ 54%]
..s.................................................x..........x........ [ 56%]
..................X................................X.................... [ 57%]
.......................................................................... [ 58%]
.............ss......................................................... [ 60%]
........................................................................ [ 61%]
....................x........X...X...................................XX. [ 62%]
.....................X.......X...........X...............x.....X........ [ 64%]
..x...x..X.X.X....X..X.X.....x........................................... [ 65%]
...........................X............................................ [ 66%]
...............................x........................................ [ 68%]
...................X.................................................... [ 69%]
............X........................................................... [ 70%]
.....................................................x.................. [ 72%]
........................................................................ [ 73%]
...........x................................s...s..s......s............. [ 74%]
...s.....s......s.s.....s......x......s.s..s..s....xx..s..xxs........... [ 76%]
.s...s.......x.s.x.s.........s......s.........x....x....s........s........ [ 77%]
.x........s...............X......x.X....X........X........X..X.X...X...X. [ 78%]
....xX.X....X..X....X..X.x.....X...XX........XxXX....x....Xx.X...X.x.... [ 80%]
.X..x...X......X.X....X....X......XX.....X.X.xX....X...X..XX..x...X..X.. [ 81%]
............X..................x........................................ [ 82%]
....X........................x.......................................... [ 84%]
..............X.....X.........X..X...................................... [ 85%]
.........X.xX...................Xx.....x.................X..........X... [ 86%]
.............XX...x..X.......x.x....X.....x..X...x...x..x..x......x.x... [ 88%]
...................X.................................................... [ 89%]
............................................s............................ [ 90%]
.....................................................xx....x............ [ 92%]
......x.......X..............................X.....x..xx..x.[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.x.xXXXXXXxx [ 93%]
x.x..x...s..xXX.X.X.[2m[36m(pid=6244)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..[2m[36m(pid=5964)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5964)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..[2m[36m(pid=5618)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5618)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..x...[2m[36m(pid=6570)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..x........[2m[36m(pid=1034)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=6983)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.x.X[2m[36m(pid=5189)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5189)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
....xX..[2m[36m(pid=4365)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.[2m[36m(pid=6550)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=6550)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
....xx[2m[36m(pid=4002)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..xx... [ 94%]
....x..[2m[36m(pid=2936)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=2936)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.......x........x....x..x....x....x....x.Xx.X.XX.XX.x.x..x.x.....x [ 96%]
x.xX..XxX.X.X.X.[2m[36m(pid=6116)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
x..[2m[36m(pid=5644)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
xx...xx..XXXx....x..x[2m[36m(pid=5637)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5637)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.x.X.XX.XX.....[2m[36m(pid=6149)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=5927)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..........[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.[2m[36m(pid=1717)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=1717)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=2987)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
 [ 97%]
......[2m[36m(pid=5189)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
................[2m[36m(pid=3157)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.................................................. [ 98%]
..........[2m[36m(pid=884)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=884)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=884)[0m 
[2m[36m(pid=884)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=884)[0m 
[2m[36m(pid=884)[0m becomes:
[2m[36m(pid=884)[0m 
[2m[36m(pid=884)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=884)[0m 
..........................[2m[36m(pid=5623)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..........................           [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
fatal: bad object HEAD
[2m[36m(pid=382)[0m error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
[2m[36m(pid=382)[0m fatal: bad object HEAD


----------- coverage: platform linux, python 3.8.5-final-0 -----------
---------------------- coverage: failed workers ----------------------
The following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
gw23
Coverage XML written to file coverage.xml

= 4961 passed, 69 skipped, 156 xfailed, 220 xpassed, 11141 warnings in 100.64s (0:01:40) =
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
collected 114 items

modin/pandas/test/test_io.py .................sx..........s............. [ 37%]
.....................................s..s.X.....s..................ss..  [100%]

----------- coverage: platform linux, python 3.8.5-final-0 -----------
Coverage XML written to file coverage.xml


= 105 passed, 7 skipped, 1 xfailed, 1 xpassed, 96 warnings in 84.53s (0:01:24) =
Closing remaining open files:test_write_pandas.hdf...donetest_write_modin.hdf...done
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /modin, configfile: setup.cfg
plugins: cov-2.10.1, forked-1.2.0, xdist-2.1.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
[gw23] node down: Not properly terminated

replacing crashed worker gw23
gw0 [5406] / gw1 [5406] / gw2 [5406] / gw3 [5406] / gw4 [5406] / gw5 [5406] / gw6 [5406] / gw7 [5406] / gw8 [5406] / gw9 [5406] / gw10 [5406] / gw11 [5406] / gw12 [5406] / gw13 [5406] / gw14 [5406] / gw15 [5406] / gw16 [5406] / gw17 [5406] / gw18 [5406] / gw19 [5406] / gw20 [5406] / gw21 [5406] / gw22 [5406] / gw48 [5406] / gw24 [5406] / gw25 [5406] / gw26 [5406] / gw27 [5406] / gw28 [5406] / gw29 [5406] / gw30 [5406] / gw31 [5406] / gw32 [5406] / gw33 [5406] / gw34 [5406] / gw35 [5406] / gw36 [5406] / gw37 [5406] / gw38 [5406] / gw39 [5406] / gw40 [5406] / gw41 [5406] / gw42 [5406] / gw43 [5406] / gw44 [5406] / gw45 [5406] / gw46 [5406] / gw47 [5406]

........................................................................ [  1%]
........................................................................ [  2%]
........................................................................ [  3%]
......................................................................... [  5%]
........................................................................ [  6%]
........................................................................ [  8%]
................x.........s...........................................X. [  9%]
..............................................X.........X..X........s.... [ 10%]
........X....................X................x..............X....X...... [ 12%]
..x.X.........X...........X.......X.......X...............xX..X......... [ 13%]
...................X...X.X..x........X........................X.......... [ 14%]
................X..X..X.X............X.........x.........X.Xx..X......X. [ 16%]
....X.x..X..x..X......X.....x...X.X..........x...........X.............. [ 17%]
.X..X.........Xx....X..X................xx.....x.............x....x.x.X. [ 18%]
.x.......x.......x.....x........Xx.X......X..X..xx..x..X.Xx......xX.X... [ 20%]
XxX......XxX...X...X..........Xx..X.x....X....x.X...XX..X...xX...xx...X. [ 21%]
...x.x....X..........sxX......x..XXx.......X.....X...................... [ 22%]
...x....xX......................x........X.......XX...........X......... [ 24%]
..............................................x.............X.....XXX... [ 25%]
......[2m[36m(pid=5638)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5638)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5638)[0m 
[2m[36m(pid=5638)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5638)[0m 
[2m[36m(pid=5638)[0m becomes:
[2m[36m(pid=5638)[0m 
[2m[36m(pid=5638)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5638)[0m 
.......X...X...................................................... [ 26%]
....x................................................X...X............... [ 28%]
.....................X................X...X........................X.X.. [ 29%]
........................................................................ [ 30%]
........................................................................ [ 32%]
.X......................................................X................ [ 33%]
...................................X.................................... [ 34%]
.....................X...X.....x...................................X.... [ 36%]
......................................................X................. [ 37%]
..................................x........X............................ [ 38%]
.............................x.X........................................ [ 40%]
...........................................X............................ [ 41%]
..................X..................................................... [ 42%]
...................s........X...X....................................... [ 44%]
.................x.........................x...................x........ [ 45%]
.............x............................x...........x..X......XX.X.... [ 46%]
.....X........X......................................................... [ 48%]
...ss....s.sssss..ss..sssss.......ss.s..ss[2m[36m(pid=6123)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=6123)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m becomes:
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=6123)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m becomes:
[2m[36m(pid=6123)[0m 
[2m[36m(pid=6123)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=6123)[0m 
ss....ss...ssssssss.s.......[2m[36m(pid=5624)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5624)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m becomes:
[2m[36m(pid=5624)[0m 
.[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5624)[0m 
. [ 49%]
.X.................................s.s...............s................... [ 50%]
................[2m[36m(pid=5189)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5189)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5189)[0m 
[2m[36m(pid=5189)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5189)[0m 
[2m[36m(pid=5189)[0m becomes:
[2m[36m(pid=5189)[0m 
[2m[36m(pid=5189)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5189)[0m 
....x.x.....................x.x......................... [ 52%]
.......[2m[36m(pid=5624)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=5624)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=5624)[0m 
[2m[36m(pid=5624)[0m becomes:.[2m[36m(pid=5624)[0m .
[2m[36m(pid=5624)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=5624)[0m 
................x.x............................................ [ 53%]
........................................................................ [ 54%]
..s.................................................x..........x........ [ 56%]
..................X................................X.................... [ 57%]
.......................................................................... [ 58%]
.............ss......................................................... [ 60%]
........................................................................ [ 61%]
....................x........X...X...................................XX. [ 62%]
.....................X.......X...........X...............x.....X........ [ 64%]
..x...x..X.X.X....X..X.X.....x........................................... [ 65%]
...........................X............................................ [ 66%]
...............................x........................................ [ 68%]
...................X.................................................... [ 69%]
............X........................................................... [ 70%]
.....................................................x.................. [ 72%]
........................................................................ [ 73%]
...........x................................s...s..s......s............. [ 74%]
...s.....s......s.s.....s......x......s.s..s..s....xx..s..xxs........... [ 76%]
.s...s.......x.s.x.s.........s......s.........x....x....s........s........ [ 77%]
.x........s...............X......x.X....X........X........X..X.X...X...X. [ 78%]
....xX.X....X..X....X..X.x.....X...XX........XxXX....x....Xx.X...X.x.... [ 80%]
.X..x...X......X.X....X....X......XX.....X.X.xX....X...X..XX..x...X..X.. [ 81%]
............X..................x........................................ [ 82%]
....X........................x.......................................... [ 84%]
..............X.....X.........X..X...................................... [ 85%]
.........X.xX...................Xx.....x.................X..........X... [ 86%]
.............XX...x..X.......x.x....X.....x..X...x...x..x..x......x.x... [ 88%]
...................X.................................................... [ 89%]
............................................s............................ [ 90%]
.....................................................xx....x............ [ 92%]
......x.......X..............................X.....x..xx..x.[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.x.xXXXXXXxx [ 93%]
x.x..x...s..xXX.X.X.[2m[36m(pid=6244)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..[2m[36m(pid=5964)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5964)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..[2m[36m(pid=5618)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5618)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..x...[2m[36m(pid=6570)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..x........[2m[36m(pid=1034)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=6983)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.x.X[2m[36m(pid=5189)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5189)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
....xX..[2m[36m(pid=4365)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.[2m[36m(pid=6550)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=6550)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
....xx[2m[36m(pid=4002)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..xx... [ 94%]
....x..[2m[36m(pid=2936)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=2936)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.......x........x....x..x....x....x....x.Xx.X.XX.XX.x.x..x.x.....x [ 96%]
x.xX..XxX.X.X.X.[2m[36m(pid=6116)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
x..[2m[36m(pid=5644)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
xx...xx..XXXx....x..x[2m[36m(pid=5637)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5637)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.x.X.XX.XX.....[2m[36m(pid=6149)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=5927)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..........[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=5625)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.[2m[36m(pid=1717)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
[2m[36m(pid=1717)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
...[2m[36m(pid=2987)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
 [ 97%]
......[2m[36m(pid=5189)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
................[2m[36m(pid=3157)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
.................................................. [ 98%]
..........[2m[36m(pid=884)[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
[2m[36m(pid=884)[0m The new arguments that you should use are 'offset' or 'origin'.
[2m[36m(pid=884)[0m 
[2m[36m(pid=884)[0m >>> df.resample(freq="3s", base=2)
[2m[36m(pid=884)[0m 
[2m[36m(pid=884)[0m becomes:
[2m[36m(pid=884)[0m 
[2m[36m(pid=884)[0m >>> df.resample(freq="3s", offset="2s")
[2m[36m(pid=884)[0m 
..........................[2m[36m(pid=5623)[0m FutureWarning: The `squeeze` parameter is deprecated and will be removed in a future version.
..........................           [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
fatal: bad object HEAD
[2m[36m(pid=382)[0m error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates.
[2m[36m(pid=382)[0m fatal: bad object HEAD


----------- coverage: platform linux, python 3.8.5-final-0 -----------
---------------------- coverage: failed workers ----------------------
The following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
gw23
Coverage XML written to file coverage.xml

= 4961 passed, 69 skipped, 156 xfailed, 220 xpassed, 11141 warnings in 100.64s (0:01:40) =

```

</details>


Patch:
diff --git a/docs/supported_apis/dataframe_supported.rst b/docs/supported_apis/dataframe_supported.rst
index 45dc27ea..54704dbb 100644
--- a/docs/supported_apis/dataframe_supported.rst
+++ b/docs/supported_apis/dataframe_supported.rst
@@ -438,6 +438,8 @@ default to pandas.
 +----------------------------+---------------------------+------------------------+----------------------------------------------------+
 | ``values``                 | `values`_                 | Y                      |                                                    |
 +----------------------------+---------------------------+------------------------+----------------------------------------------------+
+| ``value_counts``           | `value_counts`_           | D                      |                                                    |
++----------------------------+---------------------------+------------------------+----------------------------------------------------+
 | ``var``                    | `var`_                    | Y                      |                                                    |
 +----------------------------+---------------------------+------------------------+----------------------------------------------------+
 | ``where``                  | `where`_                  | Y                      |                                                    |
diff --git a/modin/backends/__init__.py b/modin/backends/__init__.py
index 07329c8b..b3bca8a6 100644
--- a/modin/backends/__init__.py
+++ b/modin/backends/__init__.py
@@ -13,6 +13,11 @@
 
 from .base import BaseQueryCompiler
 from .pandas import PandasQueryCompiler
-from .pyarrow import PyarrowQueryCompiler
 
-__all__ = ["BaseQueryCompiler", "PandasQueryCompiler", "PyarrowQueryCompiler"]
+__all__ = ["BaseQueryCompiler", "PandasQueryCompiler"]
+try:
+    from .pyarrow import PyarrowQueryCompiler  # noqa: F401
+except ImportError:
+    pass
+else:
+    __all__.append("PyarrowQueryCompiler")
diff --git a/modin/experimental/cloud/cluster.py b/modin/experimental/cloud/cluster.py
index cabaf129..abcbaf96 100644
--- a/modin/experimental/cloud/cluster.py
+++ b/modin/experimental/cloud/cluster.py
@@ -110,6 +110,7 @@ class BaseCluster:
         worker_count: int = 4,
         head_node_type: str = None,
         worker_node_type: str = None,
+        add_conda_packages: list = None,
     ):
         """
         Prepare the cluster manager. It needs to know a few things:
@@ -118,6 +119,7 @@ class BaseCluster:
             * cluster name
             * worker count
             * head and worker node instance types (can be omitted to default to provider-defined)
+            * custom conda packages for remote environment
         """
 
         self.provider = provider
@@ -126,6 +128,7 @@ class BaseCluster:
         self.worker_count = worker_count
         self.head_node_type = head_node_type or provider.default_head_type
         self.worker_node_type = worker_node_type or provider.default_worker_type
+        self.add_conda_packages = add_conda_packages
 
         self.old_backends = None
         self.connection: Connection = None
@@ -211,6 +214,7 @@ def create(
     workers: int = 4,
     head_node: str = None,
     worker_node: str = None,
+    add_conda_packages: list = None,
     cluster_type: str = "rayscale",
 ) -> BaseCluster:
     """
@@ -246,6 +250,8 @@ def create(
         What machine type to use for head node in the cluster.
     worker_node : str, optional
         What machine type to use for worker nodes in the cluster.
+    add_conda_packages : list, optional
+        Custom conda packages for remote environments.
     cluster_type : str, optional
         How to spawn the cluster.
         Currently spawning by Ray autoscaler ("rayscale" for general and "omnisci" for Omnisci-based) is supported
@@ -294,6 +300,7 @@ def create(
         worker_count=workers,
         head_node_type=head_node,
         worker_node_type=worker_node,
+        add_conda_packages=add_conda_packages,
     )
     instance.spawn(wait=False)
     return instance
diff --git a/modin/experimental/cloud/local_cluster.py b/modin/experimental/cloud/local_cluster.py
index da316d58..d023d9da 100644
--- a/modin/experimental/cloud/local_cluster.py
+++ b/modin/experimental/cloud/local_cluster.py
@@ -83,6 +83,7 @@ class LocalCluster(BaseCluster):
         worker_count=_UNUSED,
         head_node_type=_UNUSED,
         worker_node_type=_UNUSED,
+        add_conda_packages=_UNUSED,
     ):
         assert (
             provider == "local"
@@ -95,6 +96,7 @@ class LocalCluster(BaseCluster):
                 worker_count,
                 head_node_type,
                 worker_node_type,
+                add_conda_packages,
             )
         ):
             warnings.warn(
diff --git a/modin/experimental/cloud/rayscale.py b/modin/experimental/cloud/rayscale.py
index 00712c41..e17af01f 100644
--- a/modin/experimental/cloud/rayscale.py
+++ b/modin/experimental/cloud/rayscale.py
@@ -141,18 +141,25 @@ class RayCluster(BaseCluster):
 
         return _bootstrap_config(config)
 
-    @classmethod
-    def _conda_requirements(cls):
+    def _conda_requirements(self):
+        import shlex
+
         reqs = []
 
-        reqs.append(f"python=={cls._get_python_version()}")
+        reqs.append(f"python=={self._get_python_version()}")
+
+        if self.add_conda_packages:
+            reqs.extend(self.add_conda_packages)
+
+        # this is needed, for example, for dependencies that
+        # looks like: "scikit-learn>=0.23"
+        reqs_with_quotes = [shlex.quote(req) for req in reqs]
 
-        return reqs
+        return reqs_with_quotes
 
-    @classmethod
-    def _update_conda_requirements(cls, setup_commands: str):
+    def _update_conda_requirements(self, setup_commands: str):
         return setup_commands.replace(
-            "{{CONDA_PACKAGES}}", " ".join(cls._conda_requirements())
+            "{{CONDA_PACKAGES}}", " ".join(self._conda_requirements())
         )
 
     @staticmethod
diff --git a/modin/experimental/cloud/rpyc_proxy.py b/modin/experimental/cloud/rpyc_proxy.py
index 7d60fe82..12050c77 100644
--- a/modin/experimental/cloud/rpyc_proxy.py
+++ b/modin/experimental/cloud/rpyc_proxy.py
@@ -631,7 +631,17 @@ def make_dataframe_wrapper(DataFrame):
 
     DeliveringDataFrame = _deliveringWrapper(
         DataFrame,
-        ["groupby", "agg", "aggregate", "__getitem__", "astype", "drop", "merge"],
+        [
+            "groupby",
+            "agg",
+            "aggregate",
+            "__getitem__",
+            "astype",
+            "drop",
+            "merge",
+            "apply",
+            "applymap",
+        ],
         DataFrameOverrides,
         "DataFrame",
     )
@@ -672,4 +682,4 @@ def make_series_wrapper(Series):
     are overridded here, so what it mostly does is it produces a wrapper class
     inherited from normal Series but wrapping all access to remote end transparently.
     """
-    return _deliveringWrapper(Series, target_name="Series")
+    return _deliveringWrapper(Series, ["apply"], target_name="Series")


Test patch:
diff --git a/modin/experimental/cloud/test/test_cloud.py b/modin/experimental/cloud/test/test_cloud.py
index 3103a7c7..30398a2b 100644
--- a/modin/experimental/cloud/test/test_cloud.py
+++ b/modin/experimental/cloud/test/test_cloud.py
@@ -12,8 +12,10 @@
 # governing permissions and limitations under the License.
 
 import sys
+import unittest.mock as mock
 import pytest
 from modin.experimental.cloud.rayscale import RayCluster
+from modin.experimental.cloud.cluster import Provider
 
 
 @pytest.mark.parametrize(
@@ -33,7 +35,17 @@ def test_update_conda_requirements(setup_commands_source):
     micro = sys.version_info.micro
     python_version = f"python=={major}.{minor}.{micro}"
 
-    setup_commands_result = RayCluster._update_conda_requirements(setup_commands_source)
+    with mock.patch(
+        "modin.experimental.cloud.rayscale._bootstrap_config", lambda config: config
+    ):
+        ray_cluster = RayCluster(
+            Provider(name="aws"), add_conda_packages=["scikit-learn>=0.23"]
+        )
+
+    setup_commands_result = ray_cluster._update_conda_requirements(
+        setup_commands_source
+    )
 
     assert python_version in setup_commands_result
+    assert "scikit-learn>=0.23" in setup_commands_result
     assert "{{CONDA_PACKAGES}}" not in setup_commands_result