Repository: modin-project/modin

Issue:
Enable test_window test on the HDK engine and add to ci
### Modin version checks

- [X] I have checked that this issue has not already been reported.

- [X] I have confirmed this bug exists on the latest released version of Modin.

- [X] I have confirmed this bug exists on the main branch of Modin. (In order to do this you can follow [this guide](https://modin.readthedocs.io/en/stable/getting_started/installation.html#installing-from-the-github-master-branch).)


### Reproducible Example

```python
Run test_window on the HDK engine.
```


### Issue Description

There are 4 failures, when the test is running on the HDK engine.

### Expected Behavior

All these failures should be fixed and the test added to CI.

### Error Logs

<details>

```python-traceback

Replace this line with the error backtrace (if applicable).

```

</details>


### Installed Versions

<details>

Replace this line with the output of pd.show_versions()

</details>



Discussion:

Resolving patch:
diff --git a/modin/experimental/core/execution/native/implementations/hdk_on_native/calcite_serializer.py b/modin/experimental/core/execution/native/implementations/hdk_on_native/calcite_serializer.py
--- a/modin/experimental/core/execution/native/implementations/hdk_on_native/calcite_serializer.py
+++ b/modin/experimental/core/execution/native/implementations/hdk_on_native/calcite_serializer.py
@@ -256,7 +256,8 @@ def serialize_literal(self, literal):
         dict
             Serialized literal.
         """
-        if literal.val is None:
+        val = literal.val
+        if val is None:
             return {
                 "literal": None,
                 "type": "BIGINT",
@@ -266,29 +267,40 @@ def serialize_literal(self, literal):
                 "type_scale": 0,
                 "type_precision": 19,
             }
-        if type(literal.val) is str:
+        if type(val) is str:
             return {
-                "literal": literal.val,
+                "literal": val,
                 "type": "CHAR",
                 "target_type": "CHAR",
                 "scale": -2147483648,
-                "precision": len(literal.val),
+                "precision": len(val),
                 "type_scale": -2147483648,
-                "type_precision": len(literal.val),
+                "type_precision": len(val),
             }
-        if type(literal.val) in self._INT_OPTS.keys():
-            target_type, precision = self.opts_for_int_type(type(literal.val))
+        if type(val) in self._INT_OPTS.keys():
+            target_type, precision = self.opts_for_int_type(type(val))
             return {
-                "literal": int(literal.val),
+                "literal": int(val),
                 "type": "DECIMAL",
                 "target_type": target_type,
                 "scale": 0,
-                "precision": len(str(literal.val)),
+                "precision": len(str(val)),
                 "type_scale": 0,
                 "type_precision": precision,
             }
-        if type(literal.val) in (float, np.float64):
-            str_val = f"{literal.val:f}"
+        if type(val) in (float, np.float64):
+            if np.isnan(val):
+                return {
+                    "literal": None,
+                    "type": "DOUBLE",
+                    "target_type": "DOUBLE",
+                    "scale": 0,
+                    "precision": 19,
+                    "type_scale": 0,
+                    "type_precision": 19,
+                }
+
+            str_val = f"{val:f}"
             precision = len(str_val) - 1
             scale = precision - str_val.index(".")
             return {
@@ -300,9 +312,9 @@ def serialize_literal(self, literal):
                 "type_scale": -2147483648,
                 "type_precision": 15,
             }
-        if type(literal.val) is bool:
+        if type(val) is bool:
             return {
-                "literal": literal.val,
+                "literal": val,
                 "type": "BOOLEAN",
                 "target_type": "BOOLEAN",
                 "scale": -2147483648,
@@ -310,7 +322,7 @@ def serialize_literal(self, literal):
                 "type_scale": -2147483648,
                 "type_precision": 1,
             }
-        raise NotImplementedError(f"Can not serialize {type(literal.val).__name__}")
+        raise NotImplementedError(f"Can not serialize {type(val).__name__}")
 
     def opts_for_int_type(self, int_type):
         """
diff --git a/modin/experimental/core/execution/native/implementations/hdk_on_native/expr.py b/modin/experimental/core/execution/native/implementations/hdk_on_native/expr.py
--- a/modin/experimental/core/execution/native/implementations/hdk_on_native/expr.py
+++ b/modin/experimental/core/execution/native/implementations/hdk_on_native/expr.py
@@ -670,7 +670,7 @@ class LiteralExpr(BaseExpr):
     """
 
     def __init__(self, val):
-        assert val is None or isinstance(
+        if val is not None and not isinstance(
             val,
             (
                 int,
@@ -686,7 +686,8 @@ def __init__(self, val):
                 np.uint32,
                 np.uint64,
             ),
-        ), f"unsupported literal value {val} of type {type(val)}"
+        ):
+            raise NotImplementedError(f"Literal value {val} of type {type(val)}")
         self.val = val
         if val is None:
             self._dtype = get_dtype(float)


Test patch:
diff --git a/modin/pandas/test/dataframe/test_map_metadata.py b/modin/pandas/test/dataframe/test_map_metadata.py
--- a/modin/pandas/test/dataframe/test_map_metadata.py
+++ b/modin/pandas/test/dataframe/test_map_metadata.py
@@ -505,7 +505,19 @@ def test_astype_errors(errors):
     eval_general(modin_df, pandas_df, lambda df: df.astype("int", errors=errors))
 
 
-@pytest.mark.parametrize("has_dtypes", [False, True])
+@pytest.mark.parametrize(
+    "has_dtypes",
+    [
+        pytest.param(
+            False,
+            marks=pytest.mark.xfail(
+                StorageFormat.get() == "Hdk",
+                reason="HDK does not support cases when `.dtypes` is None",
+            ),
+        ),
+        True,
+    ],
+)
 def test_astype_copy(has_dtypes):
     data = [1]
     modin_df, pandas_df = pd.DataFrame(data), pandas.DataFrame(data)
diff --git a/modin/pandas/test/dataframe/test_window.py b/modin/pandas/test/dataframe/test_window.py
--- a/modin/pandas/test/dataframe/test_window.py
+++ b/modin/pandas/test/dataframe/test_window.py
@@ -39,8 +39,9 @@
     eval_general,
     create_test_dfs,
     test_data_diff_dtype,
+    default_to_pandas_ignore_string,
 )
-from modin.config import NPartitions
+from modin.config import NPartitions, StorageFormat
 from modin.test.test_utils import warns_that_defaulting_to_pandas
 
 NPartitions.put(4)
@@ -48,6 +49,9 @@
 # Force matplotlib to not use any Xwindows backend.
 matplotlib.use("Agg")
 
+if StorageFormat.get() == "Hdk":
+    pytestmark = pytest.mark.filterwarnings(default_to_pandas_ignore_string)
+
 
 @pytest.mark.parametrize("axis", [0, 1])
 @pytest.mark.parametrize(