Repository: modin-project/modin

Issue:
Pandas `read_gbq` unable to process `progress_bar_type` kwarg
### System information
- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**:
- **Modin version** (`modin.__version__`): latest (05754d9)
- **Python version**: 3.6.8
- **Code we can use to reproduce**:
```
from modin.engines.ray.pandas_on_ray.io import PandasOnRayIO
help(PandasOnRayIO.read_gbq)
```
### Describe the problem
Calling read_gbq with any engine raises this error

```
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/app/modin-project-modin-05754d9/modin/pandas/io.py", line 186, in read_gbq
    return DataFrame(query_compiler=BaseFactory.read_gbq(**kwargs))
  File "/app/modin-project-modin-05754d9/modin/data_management/factories.py", line 81, in read_gbq
    return cls._determine_engine()._read_gbq(**kwargs)
  File "/app/modin-project-modin-05754d9/modin/data_management/factories.py", line 87, in _read_gbq
    return cls.io_cls.read_gbq(**kwargs)
TypeError: read_gbq() got an unexpected keyword argument 'progress_bar_type'
```

calling `help(PandasOnRayIO.read_gbq)` shows the following signature

```
read_gbq(query, project_id=None, index_col=None, col_order=None, reauth=False, auth_local_webserver=False, dialect=None, location=None, configuration=None, credentials=None, private_key=None, verbose=None)
```

which misses support for `progress_bar_type` while current pandas `read_gbq` expects that.

### Source code / logs
https://github.com/modin-project/modin/blob/05754d98d95cef53654a8aeee112cf986519654d/modin/pandas/io.py#L165


Discussion:
Thanks @yxue-kabam for the report!

Testing locally, there is another missing keyword from the internal API: `use_bqstorage_api`. 

Resolving patch:
diff --git a/modin/engines/base/io/io.py b/modin/engines/base/io/io.py
--- a/modin/engines/base/io/io.py
+++ b/modin/engines/base/io/io.py
@@ -213,7 +213,7 @@ def read_json(
     @classmethod
     def read_gbq(
         cls,
-        query,
+        query: str,
         project_id=None,
         index_col=None,
         col_order=None,
@@ -223,8 +223,10 @@ def read_gbq(
         location=None,
         configuration=None,
         credentials=None,
+        use_bqstorage_api=None,
         private_key=None,
         verbose=None,
+        progress_bar_type=None,
     ):
         ErrorMessage.default_to_pandas("`read_gbq`")
         return cls.from_pandas(
@@ -239,8 +241,10 @@ def read_gbq(
                 location=location,
                 configuration=configuration,
                 credentials=credentials,
+                use_bqstorage_api=use_bqstorage_api,
                 private_key=private_key,
                 verbose=verbose,
+                progress_bar_type=progress_bar_type,
             )
         )
 


Test patch:
diff --git a/df_test_requires.txt b/df_test_requires.txt
--- a/df_test_requires.txt
+++ b/df_test_requires.txt
@@ -10,3 +10,4 @@ xarray
 scipy
 Jinja2
 msgpack<1.0
+pandas_gbq
diff --git a/modin/pandas/test/test_io.py b/modin/pandas/test/test_io.py
--- a/modin/pandas/test/test_io.py
+++ b/modin/pandas/test/test_io.py
@@ -1076,13 +1076,6 @@ def test_to_feather():
     teardown_test_file(TEST_FEATHER_DF_FILENAME)
 
 
-def test_to_gbq():
-    modin_df = create_test_ray_dataframe()
-    pandas_df = create_test_pandas_dataframe()
-    # Because we default to pandas, we can just test the equality of the two frames.
-    assert to_pandas(modin_df).equals(pandas_df)
-
-
 def test_to_html():
     modin_df = create_test_ray_dataframe()
     pandas_df = create_test_pandas_dataframe()
@@ -1340,6 +1333,25 @@ def test_fwf_file_kwargs():
     teardown_fwf_file()
 
 
+@pytest.mark.skip(reason="Need to verify GBQ access")
+def test_from_gbq():
+    # Test API, but do not supply credentials until credits can be secured.
+    with pytest.raises(
+        ValueError, match="Could not determine project ID and one was not supplied."
+    ):
+        pd.read_gbq("SELECT 1")
+
+
+@pytest.mark.skip(reason="Need to verify GBQ access")
+def test_to_gbq():
+    modin_df = create_test_ray_dataframe()
+    # Test API, but do not supply credentials until credits can be secured.
+    with pytest.raises(
+        ValueError, match="Could not determine project ID and one was not supplied."
+    ):
+        modin_df.to_gbq("modin.table")
+
+
 def test_cleanup():
     filenames = [
         TEST_PARQUET_FILENAME,