We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[BUG] Warning has been seen to appear below OK checks in suite condition table
**Describe the bug**
In a certain case, the condition table has been seen to have a warning appear blow the OK checks

**Expected behavior**
Condition order in the table should be:
Fail with Display
Fail without Display
Warning with Display
Warning without Display
Pass with Display
Pass without Display

Other then that order should conform to order of checks in the check_result. 

**Screenshots**
![image](https://user-images.githubusercontent.com/17730502/159263773-6c2acb34-5648-44c8-8447-c6837f8840f0.png)
![image](https://user-images.githubusercontent.com/17730502/159263786-393647e8-d3ac-4b04-a8f8-51079b6da8a8.png)



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `deepchecks/core/display_pandas.py`
Content:
```
1 # ----------------------------------------------------------------------------
2 # Copyright (C) 2021-2022 Deepchecks (https://www.deepchecks.com)
3 #
4 # This file is part of Deepchecks.
5 # Deepchecks is distributed under the terms of the GNU Affero General
6 # Public License (version 3 or later).
7 # You should have received a copy of the GNU Affero General Public License
8 # along with Deepchecks.  If not, see <http://www.gnu.org/licenses/>.
9 # ----------------------------------------------------------------------------
10 #
11 """Handle displays of pandas objects."""
12 from deepchecks.utils.strings import get_docs_summary, get_ellipsis
13 
14 from typing import List, Union, TYPE_CHECKING
15 import warnings
16 
17 import pandas as pd
18 from pandas.io.formats.style import Styler
19 
20 
21 if TYPE_CHECKING:
22     from deepchecks.core.check_result import CheckResult
23 
24 
25 __all__ = ['dataframe_to_html', 'get_conditions_table']
26 
27 
28 def dataframe_to_html(df: Union[pd.DataFrame, Styler]):
29     """Convert dataframe to html.
30 
31     Parameters
32     ----------
33     df: Union[pd.DataFrame, Styler]
34         Dataframe to convert to html
35 
36     Returns
37     -------
38     pd.DataFrame:
39         dataframe with styling
40     """
41     try:
42         if isinstance(df, pd.DataFrame):
43             df_styler = df.style
44         else:
45             df_styler = df
46         # Using deprecated pandas method so hiding the warning
47         with warnings.catch_warnings():
48             warnings.simplefilter(action='ignore', category=FutureWarning)
49             df_styler.set_precision(2)
50 
51             table_css_props = [
52                 ('text-align', 'left'),  # Align everything to the left
53                 ('white-space', 'pre-wrap')  # Define how to handle white space characters (like \n)
54             ]
55             df_styler.set_table_styles([dict(selector='table,thead,tbody,th,td', props=table_css_props)])
56             return df_styler.render()
57     # Because of MLC-154. Dataframe with Multi-index or non unique indices does not have a style
58     # attribute, hence we need to display as a regular pd html format.
59     except ValueError:
60         return df.to_html()
61 
62 
63 def get_conditions_table(check_results: Union['CheckResult', List['CheckResult']],
64                          unique_id: str = None, max_info_len: int = 3000, icon_html: bool = True) -> Styler:
65     """Return the conditions table as DataFrame.
66 
67     Parameters
68     ----------
69     check_results : Union['CheckResult', List['CheckResult']]
70         check results to show conditions of.
71     unique_id : str
72         the unique id to append for the check names to create links (won't create links if None/empty).
73     max_info_len : int
74         max length of the additional info.
75     icon_html : bool , default: True
76         if to show the html condition result icon or the enum
77     Returns
78     -------
79     pd.Dataframe:
80         the condition table.
81     """
82     if not isinstance(check_results, List):
83         show_check_column = False
84         check_results = [check_results]
85     else:
86         show_check_column = True
87 
88     table = []
89     for check_result in check_results:
90         for cond_result in check_result.conditions_results:
91             sort_value = cond_result.priority
92             icon = cond_result.get_icon() if icon_html else cond_result.category.value
93             check_header = check_result.get_header()
94             if unique_id and check_result.have_display():
95                 check_id = f'{check_result.check.__class__.__name__}_{unique_id}'
96                 link = f'<a href=#{check_id}>{check_header}</a>'
97             else:
98                 link = check_header
99                 sort_value = 1 if sort_value == 1 else 5  # if it failed but has no display still show on top
100             table.append([icon, link, cond_result.name,
101                          cond_result.details, sort_value])
102 
103     conditions_table = pd.DataFrame(data=table,
104                                     columns=['Status', 'Check', 'Condition', 'More Info', 'sort'])
105     conditions_table.sort_values(by=['sort'], inplace=True)
106     conditions_table.drop('sort', axis=1, inplace=True)
107     if show_check_column is False:
108         conditions_table.drop('Check', axis=1, inplace=True)
109     conditions_table['More Info'] = conditions_table['More Info'].map(lambda x: get_ellipsis(x, max_info_len))
110     with warnings.catch_warnings():
111         warnings.simplefilter(action='ignore', category=FutureWarning)
112         return conditions_table.style.hide_index()
113 
114 
115 def get_result_navigation_display(check_results: List['CheckResult'], unique_id: str):
116     """Display the results as a table with links for navigation.
117 
118     Parameters
119     ----------
120     check_results : Union['CheckResult', List['CheckResult']]
121         check results to show navigation for.
122     unique_id : str
123         the unique id to append for the check names to create links.
124     Returns
125     -------
126     str
127         html representation of the navigation table.
128     """
129     table = []
130     for check_result in check_results:
131         if check_result.have_display():
132             check_header = check_result.get_header()
133             check_id = f'{check_result.check.__class__.__name__}_{unique_id}'
134             link = f'<a href=#{check_id}>{check_header}</a>'
135             summary = get_docs_summary(check_result.check)
136             table.append([link, summary])
137 
138     nav_table = pd.DataFrame(data=table,
139                              columns=['Check', 'Summary'])
140     with warnings.catch_warnings():
141         warnings.simplefilter(action='ignore', category=FutureWarning)
142         return dataframe_to_html(nav_table.style.hide_index())
143
```

Path: `deepchecks/utils/typing.py`
Content:
```
1 # ----------------------------------------------------------------------------
2 # Copyright (C) 2021-2022 Deepchecks (https://www.deepchecks.com)
3 #
4 # This file is part of Deepchecks.
5 # Deepchecks is distributed under the terms of the GNU Affero General
6 # Public License (version 3 or later).
7 # You should have received a copy of the GNU Affero General Public License
8 # along with Deepchecks.  If not, see <http://www.gnu.org/licenses/>.
9 # ----------------------------------------------------------------------------
10 #
11 """Type definitions."""
12 # pylint: disable=invalid-hash-returned,invalid-name
13 from typing_extensions import Protocol, runtime_checkable
14 from typing import List
15 
16 
17 __all__ = ['Hashable', 'BasicModel', 'ClassificationModel']
18 
19 
20 @runtime_checkable
21 class Hashable(Protocol):
22     """Trait for any hashable type that also defines comparison operators."""
23 
24     def __hash__(self) -> int:  # noqa: D105
25         ...
26 
27     def __le__(self, __value) -> bool:  # noqa: D105
28         ...
29 
30     def __lt__(self, __value) -> bool:  # noqa: D105
31         ...
32 
33     def __ge__(self, __value) -> bool:  # noqa: D105
34         ...
35 
36     def __gt__(self, __value) -> bool:  # noqa: D105
37         ...
38 
39     def __eq__(self, __value) -> bool:  # noqa: D105
40         ...
41 
42 
43 @runtime_checkable
44 class BasicModel(Protocol):
45     """Traits of a model that are necessary for deepchecks."""
46 
47     def predict(self, X) -> List[Hashable]:
48         """Predict on given X."""
49         ...
50 
51 
52 @runtime_checkable
53 class ClassificationModel(BasicModel, Protocol):
54     """Traits of a classification model that are used by deepchecks."""
55 
56     def predict_proba(self, X) -> List[Hashable]:
57         """Predict probabilities on given X."""
58         ...
59
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/deepchecks/core/display_pandas.py b/deepchecks/core/display_pandas.py
--- a/deepchecks/core/display_pandas.py
+++ b/deepchecks/core/display_pandas.py
@@ -96,7 +96,8 @@
                 link = f'<a href=#{check_id}>{check_header}</a>'
             else:
                 link = check_header
-                sort_value = 1 if sort_value == 1 else 5  # if it failed but has no display still show on top
+                # if it has no display show on bottom for the category (lower priority)
+                sort_value += 0.1
             table.append([icon, link, cond_result.name,
                          cond_result.details, sort_value])
 
diff --git a/deepchecks/utils/typing.py b/deepchecks/utils/typing.py
--- a/deepchecks/utils/typing.py
+++ b/deepchecks/utils/typing.py
@@ -46,7 +46,6 @@
 
     def predict(self, X) -> List[Hashable]:
         """Predict on given X."""
-        ...
 
 
 @runtime_checkable
@@ -55,4 +54,3 @@
 
     def predict_proba(self, X) -> List[Hashable]:
         """Predict probabilities on given X."""
-        ...

{"golden_diff": "diff --git a/deepchecks/core/display_pandas.py b/deepchecks/core/display_pandas.py\n--- a/deepchecks/core/display_pandas.py\n+++ b/deepchecks/core/display_pandas.py\n@@ -96,7 +96,8 @@\n                 link = f'<a href=#{check_id}>{check_header}</a>'\n             else:\n                 link = check_header\n-                sort_value = 1 if sort_value == 1 else 5  # if it failed but has no display still show on top\n+                # if it has no display show on bottom for the category (lower priority)\n+                sort_value += 0.1\n             table.append([icon, link, cond_result.name,\n                          cond_result.details, sort_value])\n \ndiff --git a/deepchecks/utils/typing.py b/deepchecks/utils/typing.py\n--- a/deepchecks/utils/typing.py\n+++ b/deepchecks/utils/typing.py\n@@ -46,7 +46,6 @@\n \n     def predict(self, X) -> List[Hashable]:\n         \"\"\"Predict on given X.\"\"\"\n-        ...\n \n \n @runtime_checkable\n@@ -55,4 +54,3 @@\n \n     def predict_proba(self, X) -> List[Hashable]:\n         \"\"\"Predict probabilities on given X.\"\"\"\n-        ...\n", "issue": "[BUG] Warning has been seen to appear below OK checks in suite condition table\n**Describe the bug**\r\nIn a certain case, the condition table has been seen to have a warning appear blow the OK checks\r\n\r\n**Expected behavior**\r\nCondition order in the table should be:\r\nFail with Display\r\nFail without Display\r\nWarning with Display\r\nWarning without Display\r\nPass with Display\r\nPass without Display\r\n\r\nOther then that order should conform to order of checks in the check_result. \r\n\r\n**Screenshots**\r\n![image](https://user-images.githubusercontent.com/17730502/159263773-6c2acb34-5648-44c8-8447-c6837f8840f0.png)\r\n![image](https://user-images.githubusercontent.com/17730502/159263786-393647e8-d3ac-4b04-a8f8-51079b6da8a8.png)\r\n\r\n\n", "before_files": [{"content": "# ----------------------------------------------------------------------------\n# Copyright (C) 2021-2022 Deepchecks (https://www.deepchecks.com)\n#\n# This file is part of Deepchecks.\n# Deepchecks is distributed under the terms of the GNU Affero General\n# Public License (version 3 or later).\n# You should have received a copy of the GNU Affero General Public License\n# along with Deepchecks.  If not, see <http://www.gnu.org/licenses/>.\n# ----------------------------------------------------------------------------\n#\n\"\"\"Handle displays of pandas objects.\"\"\"\nfrom deepchecks.utils.strings import get_docs_summary, get_ellipsis\n\nfrom typing import List, Union, TYPE_CHECKING\nimport warnings\n\nimport pandas as pd\nfrom pandas.io.formats.style import Styler\n\n\nif TYPE_CHECKING:\n    from deepchecks.core.check_result import CheckResult\n\n\n__all__ = ['dataframe_to_html', 'get_conditions_table']\n\n\ndef dataframe_to_html(df: Union[pd.DataFrame, Styler]):\n    \"\"\"Convert dataframe to html.\n\n    Parameters\n    ----------\n    df: Union[pd.DataFrame, Styler]\n        Dataframe to convert to html\n\n    Returns\n    -------\n    pd.DataFrame:\n        dataframe with styling\n    \"\"\"\n    try:\n        if isinstance(df, pd.DataFrame):\n            df_styler = df.style\n        else:\n            df_styler = df\n        # Using deprecated pandas method so hiding the warning\n        with warnings.catch_warnings():\n            warnings.simplefilter(action='ignore', category=FutureWarning)\n            df_styler.set_precision(2)\n\n            table_css_props = [\n                ('text-align', 'left'),  # Align everything to the left\n                ('white-space', 'pre-wrap')  # Define how to handle white space characters (like \\n)\n            ]\n            df_styler.set_table_styles([dict(selector='table,thead,tbody,th,td', props=table_css_props)])\n            return df_styler.render()\n    # Because of MLC-154. Dataframe with Multi-index or non unique indices does not have a style\n    # attribute, hence we need to display as a regular pd html format.\n    except ValueError:\n        return df.to_html()\n\n\ndef get_conditions_table(check_results: Union['CheckResult', List['CheckResult']],\n                         unique_id: str = None, max_info_len: int = 3000, icon_html: bool = True) -> Styler:\n    \"\"\"Return the conditions table as DataFrame.\n\n    Parameters\n    ----------\n    check_results : Union['CheckResult', List['CheckResult']]\n        check results to show conditions of.\n    unique_id : str\n        the unique id to append for the check names to create links (won't create links if None/empty).\n    max_info_len : int\n        max length of the additional info.\n    icon_html : bool , default: True\n        if to show the html condition result icon or the enum\n    Returns\n    -------\n    pd.Dataframe:\n        the condition table.\n    \"\"\"\n    if not isinstance(check_results, List):\n        show_check_column = False\n        check_results = [check_results]\n    else:\n        show_check_column = True\n\n    table = []\n    for check_result in check_results:\n        for cond_result in check_result.conditions_results:\n            sort_value = cond_result.priority\n            icon = cond_result.get_icon() if icon_html else cond_result.category.value\n            check_header = check_result.get_header()\n            if unique_id and check_result.have_display():\n                check_id = f'{check_result.check.__class__.__name__}_{unique_id}'\n                link = f'<a href=#{check_id}>{check_header}</a>'\n            else:\n                link = check_header\n                sort_value = 1 if sort_value == 1 else 5  # if it failed but has no display still show on top\n            table.append([icon, link, cond_result.name,\n                         cond_result.details, sort_value])\n\n    conditions_table = pd.DataFrame(data=table,\n                                    columns=['Status', 'Check', 'Condition', 'More Info', 'sort'])\n    conditions_table.sort_values(by=['sort'], inplace=True)\n    conditions_table.drop('sort', axis=1, inplace=True)\n    if show_check_column is False:\n        conditions_table.drop('Check', axis=1, inplace=True)\n    conditions_table['More Info'] = conditions_table['More Info'].map(lambda x: get_ellipsis(x, max_info_len))\n    with warnings.catch_warnings():\n        warnings.simplefilter(action='ignore', category=FutureWarning)\n        return conditions_table.style.hide_index()\n\n\ndef get_result_navigation_display(check_results: List['CheckResult'], unique_id: str):\n    \"\"\"Display the results as a table with links for navigation.\n\n    Parameters\n    ----------\n    check_results : Union['CheckResult', List['CheckResult']]\n        check results to show navigation for.\n    unique_id : str\n        the unique id to append for the check names to create links.\n    Returns\n    -------\n    str\n        html representation of the navigation table.\n    \"\"\"\n    table = []\n    for check_result in check_results:\n        if check_result.have_display():\n            check_header = check_result.get_header()\n            check_id = f'{check_result.check.__class__.__name__}_{unique_id}'\n            link = f'<a href=#{check_id}>{check_header}</a>'\n            summary = get_docs_summary(check_result.check)\n            table.append([link, summary])\n\n    nav_table = pd.DataFrame(data=table,\n                             columns=['Check', 'Summary'])\n    with warnings.catch_warnings():\n        warnings.simplefilter(action='ignore', category=FutureWarning)\n        return dataframe_to_html(nav_table.style.hide_index())\n", "path": "deepchecks/core/display_pandas.py"}, {"content": "# ----------------------------------------------------------------------------\n# Copyright (C) 2021-2022 Deepchecks (https://www.deepchecks.com)\n#\n# This file is part of Deepchecks.\n# Deepchecks is distributed under the terms of the GNU Affero General\n# Public License (version 3 or later).\n# You should have received a copy of the GNU Affero General Public License\n# along with Deepchecks.  If not, see <http://www.gnu.org/licenses/>.\n# ----------------------------------------------------------------------------\n#\n\"\"\"Type definitions.\"\"\"\n# pylint: disable=invalid-hash-returned,invalid-name\nfrom typing_extensions import Protocol, runtime_checkable\nfrom typing import List\n\n\n__all__ = ['Hashable', 'BasicModel', 'ClassificationModel']\n\n\n@runtime_checkable\nclass Hashable(Protocol):\n    \"\"\"Trait for any hashable type that also defines comparison operators.\"\"\"\n\n    def __hash__(self) -> int:  # noqa: D105\n        ...\n\n    def __le__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __lt__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __ge__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __gt__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __eq__(self, __value) -> bool:  # noqa: D105\n        ...\n\n\n@runtime_checkable\nclass BasicModel(Protocol):\n    \"\"\"Traits of a model that are necessary for deepchecks.\"\"\"\n\n    def predict(self, X) -> List[Hashable]:\n        \"\"\"Predict on given X.\"\"\"\n        ...\n\n\n@runtime_checkable\nclass ClassificationModel(BasicModel, Protocol):\n    \"\"\"Traits of a classification model that are used by deepchecks.\"\"\"\n\n    def predict_proba(self, X) -> List[Hashable]:\n        \"\"\"Predict probabilities on given X.\"\"\"\n        ...\n", "path": "deepchecks/utils/typing.py"}], "after_files": [{"content": "# ----------------------------------------------------------------------------\n# Copyright (C) 2021-2022 Deepchecks (https://www.deepchecks.com)\n#\n# This file is part of Deepchecks.\n# Deepchecks is distributed under the terms of the GNU Affero General\n# Public License (version 3 or later).\n# You should have received a copy of the GNU Affero General Public License\n# along with Deepchecks.  If not, see <http://www.gnu.org/licenses/>.\n# ----------------------------------------------------------------------------\n#\n\"\"\"Handle displays of pandas objects.\"\"\"\nfrom deepchecks.utils.strings import get_docs_summary, get_ellipsis\n\nfrom typing import List, Union, TYPE_CHECKING\nimport warnings\n\nimport pandas as pd\nfrom pandas.io.formats.style import Styler\n\n\nif TYPE_CHECKING:\n    from deepchecks.core.check_result import CheckResult\n\n\n__all__ = ['dataframe_to_html', 'get_conditions_table']\n\n\ndef dataframe_to_html(df: Union[pd.DataFrame, Styler]):\n    \"\"\"Convert dataframe to html.\n\n    Parameters\n    ----------\n    df: Union[pd.DataFrame, Styler]\n        Dataframe to convert to html\n\n    Returns\n    -------\n    pd.DataFrame:\n        dataframe with styling\n    \"\"\"\n    try:\n        if isinstance(df, pd.DataFrame):\n            df_styler = df.style\n        else:\n            df_styler = df\n        # Using deprecated pandas method so hiding the warning\n        with warnings.catch_warnings():\n            warnings.simplefilter(action='ignore', category=FutureWarning)\n            df_styler.set_precision(2)\n\n            table_css_props = [\n                ('text-align', 'left'),  # Align everything to the left\n                ('white-space', 'pre-wrap')  # Define how to handle white space characters (like \\n)\n            ]\n            df_styler.set_table_styles([dict(selector='table,thead,tbody,th,td', props=table_css_props)])\n            return df_styler.render()\n    # Because of MLC-154. Dataframe with Multi-index or non unique indices does not have a style\n    # attribute, hence we need to display as a regular pd html format.\n    except ValueError:\n        return df.to_html()\n\n\ndef get_conditions_table(check_results: Union['CheckResult', List['CheckResult']],\n                         unique_id: str = None, max_info_len: int = 3000, icon_html: bool = True) -> Styler:\n    \"\"\"Return the conditions table as DataFrame.\n\n    Parameters\n    ----------\n    check_results : Union['CheckResult', List['CheckResult']]\n        check results to show conditions of.\n    unique_id : str\n        the unique id to append for the check names to create links (won't create links if None/empty).\n    max_info_len : int\n        max length of the additional info.\n    icon_html : bool , default: True\n        if to show the html condition result icon or the enum\n    Returns\n    -------\n    pd.Dataframe:\n        the condition table.\n    \"\"\"\n    if not isinstance(check_results, List):\n        show_check_column = False\n        check_results = [check_results]\n    else:\n        show_check_column = True\n\n    table = []\n    for check_result in check_results:\n        for cond_result in check_result.conditions_results:\n            sort_value = cond_result.priority\n            icon = cond_result.get_icon() if icon_html else cond_result.category.value\n            check_header = check_result.get_header()\n            if unique_id and check_result.have_display():\n                check_id = f'{check_result.check.__class__.__name__}_{unique_id}'\n                link = f'<a href=#{check_id}>{check_header}</a>'\n            else:\n                link = check_header\n                # if it has no display show on bottom for the category (lower priority)\n                sort_value += 0.1\n            table.append([icon, link, cond_result.name,\n                         cond_result.details, sort_value])\n\n    conditions_table = pd.DataFrame(data=table,\n                                    columns=['Status', 'Check', 'Condition', 'More Info', 'sort'])\n    conditions_table.sort_values(by=['sort'], inplace=True)\n    conditions_table.drop('sort', axis=1, inplace=True)\n    if show_check_column is False:\n        conditions_table.drop('Check', axis=1, inplace=True)\n    conditions_table['More Info'] = conditions_table['More Info'].map(lambda x: get_ellipsis(x, max_info_len))\n    with warnings.catch_warnings():\n        warnings.simplefilter(action='ignore', category=FutureWarning)\n        return conditions_table.style.hide_index()\n\n\ndef get_result_navigation_display(check_results: List['CheckResult'], unique_id: str):\n    \"\"\"Display the results as a table with links for navigation.\n\n    Parameters\n    ----------\n    check_results : Union['CheckResult', List['CheckResult']]\n        check results to show navigation for.\n    unique_id : str\n        the unique id to append for the check names to create links.\n    Returns\n    -------\n    str\n        html representation of the navigation table.\n    \"\"\"\n    table = []\n    for check_result in check_results:\n        if check_result.have_display():\n            check_header = check_result.get_header()\n            check_id = f'{check_result.check.__class__.__name__}_{unique_id}'\n            link = f'<a href=#{check_id}>{check_header}</a>'\n            summary = get_docs_summary(check_result.check)\n            table.append([link, summary])\n\n    nav_table = pd.DataFrame(data=table,\n                             columns=['Check', 'Summary'])\n    with warnings.catch_warnings():\n        warnings.simplefilter(action='ignore', category=FutureWarning)\n        return dataframe_to_html(nav_table.style.hide_index())\n", "path": "deepchecks/core/display_pandas.py"}, {"content": "# ----------------------------------------------------------------------------\n# Copyright (C) 2021-2022 Deepchecks (https://www.deepchecks.com)\n#\n# This file is part of Deepchecks.\n# Deepchecks is distributed under the terms of the GNU Affero General\n# Public License (version 3 or later).\n# You should have received a copy of the GNU Affero General Public License\n# along with Deepchecks.  If not, see <http://www.gnu.org/licenses/>.\n# ----------------------------------------------------------------------------\n#\n\"\"\"Type definitions.\"\"\"\n# pylint: disable=invalid-hash-returned,invalid-name\nfrom typing_extensions import Protocol, runtime_checkable\nfrom typing import List\n\n\n__all__ = ['Hashable', 'BasicModel', 'ClassificationModel']\n\n\n@runtime_checkable\nclass Hashable(Protocol):\n    \"\"\"Trait for any hashable type that also defines comparison operators.\"\"\"\n\n    def __hash__(self) -> int:  # noqa: D105\n        ...\n\n    def __le__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __lt__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __ge__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __gt__(self, __value) -> bool:  # noqa: D105\n        ...\n\n    def __eq__(self, __value) -> bool:  # noqa: D105\n        ...\n\n\n@runtime_checkable\nclass BasicModel(Protocol):\n    \"\"\"Traits of a model that are necessary for deepchecks.\"\"\"\n\n    def predict(self, X) -> List[Hashable]:\n        \"\"\"Predict on given X.\"\"\"\n\n\n@runtime_checkable\nclass ClassificationModel(BasicModel, Protocol):\n    \"\"\"Traits of a classification model that are used by deepchecks.\"\"\"\n\n    def predict_proba(self, X) -> List[Hashable]:\n        \"\"\"Predict probabilities on given X.\"\"\"\n", "path": "deepchecks/utils/typing.py"}]}