Repository: modin-project/modin

Issue:
Series.array and Series.attrs produces wrong outputs
### System information
- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**: Linux Ubuntu 18.04
- **Modin version** (`modin.__version__`): 0.7.3+197.g8602fc0
- **Python version**: 3.8.3
- **Code we can use to reproduce**:
```
import modin.pandas as pd
import pandas

data = [1, 2, 3]
s_pandas = pandas.Series(data)
s_modin = pd.Series(data)

print("s_pandas.array\n", s_pandas.array)
print("s_modin.array\n", s_modin.array)

print("s_pandas.attrs\n", s_pandas.attrs)
print("s_modin.attrs\n", s_modin.attrs)
```
Output:
```
UserWarning: Distributing <class 'list'> object. This may take some time.
s_pandas.array
 <PandasArray>
[1, 2, 3]
Length: 3, dtype: int64
s_modin.array
 <bound method Series.array of 0    1
1    2
2    3
dtype: int64>
s_pandas.attrs
 {}
UserWarning: `Series.attrs` defaulting to pandas implementation.
To request implementation, send an email to feature_requests@modin.org.
UserWarning: `Series.attrs` defaulting to pandas implementation.
s_modin.attrs
 None
```

<!--
You can obtain the Modin version with

python -c "import modin; print(modin.__version__)"
-->

### Describe the problem
<!-- Describe the problem clearly here. -->

### Source code / logs
<!-- Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Try to provide a reproducible test case that is the bare minimum necessary to generate the problem. -->



Discussion:

Resolving patch:
diff --git a/modin/pandas/series.py b/modin/pandas/series.py
--- a/modin/pandas/series.py
+++ b/modin/pandas/series.py
@@ -542,9 +542,6 @@ def argsort(self, axis=0, kind="quicksort", order=None):
             pandas.Series.argsort, axis=axis, kind=kind, order=order
         )
 
-    def array(self):
-        return self._default_to_pandas(pandas.Series.array)
-
     def autocorr(self, lag=1):
         """
         Compute the lag-N autocorrelation.
@@ -1603,7 +1600,14 @@ def attrs(self):
         def attrs(df):
             return df.attrs
 
-        self._default_to_pandas(attrs)
+        return self._default_to_pandas(attrs)
+
+    @property
+    def array(self):
+        def array(df):
+            return df.array
+
+        return self._default_to_pandas(array)
 
     @property
     def axes(self):


Test patch:
diff --git a/modin/pandas/test/test_series.py b/modin/pandas/test/test_series.py
--- a/modin/pandas/test/test_series.py
+++ b/modin/pandas/test/test_series.py
@@ -895,6 +895,18 @@ def test_axes(data):
     assert len(modin_series.axes) == len(pandas_series.axes)
 
 
+@pytest.mark.parametrize("data", test_data_values, ids=test_data_keys)
+def test_attrs(data):
+    modin_series, pandas_series = create_test_series(data)
+    eval_general(modin_series, pandas_series, lambda df: df.attrs)
+
+
+@pytest.mark.parametrize("data", test_data_values, ids=test_data_keys)
+def test_array(data):
+    modin_series, pandas_series = create_test_series(data)
+    eval_general(modin_series, pandas_series, lambda df: df.array)
+
+
 @pytest.mark.skip(reason="Using pandas Series.")
 def test_between():
     modin_series = create_test_series()
diff --git a/modin/pandas/test/utils.py b/modin/pandas/test/utils.py
--- a/modin/pandas/test/utils.py
+++ b/modin/pandas/test/utils.py
@@ -493,6 +493,9 @@ def df_equals(df1, df2):
     ):
         assert all(df1.index == df2.index)
         assert df1.dtypes == df2.dtypes
+    elif isinstance(df1, pandas.core.arrays.numpy_.PandasArray):
+        assert isinstance(df2, pandas.core.arrays.numpy_.PandasArray)
+        assert df1 == df2
     else:
         if df1 != df2:
             np.testing.assert_almost_equal(df1, df2)