We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Star imports from `mlserver.codecs` not working
For example:

```python
from mlserver.codecs import *
```
Throws an error:
```python
Traceback (most recent call last):
  File "/home/janis/.conda/envs/py310/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3460, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-2-b8cc62508f29>", line 1, in <module>
    from mlserver.codecs import *
AttributeError: module 'mlserver.codecs' has no attribute 'StringRequestCodec'
```

This is likely because `__all__` is out-of-date with the actual imports. I haven't tested other sub-packages, but it might be worth looking at these.

P.S. I'm not a big fan of  `__all__` and star imports in particular, the main issue is that the existence of `__all__` gives rise to two public APIs which may diverge (as it has in this case).

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `mlserver/codecs/__init__.py`
Content:
```
1 from .numpy import NumpyCodec, NumpyRequestCodec
2 from .pandas import PandasCodec
3 from .string import StringCodec
4 from .base64 import Base64Codec
5 from .datetime import DatetimeCodec
6 from .errors import CodecError
7 from .decorator import decode_args
8 from .base import (
9     InputCodec,
10     RequestCodec,
11     register_input_codec,
12     register_request_codec,
13     InputCodecLike,
14     RequestCodecLike,
15 )
16 from .utils import (
17     DecodedParameterName,
18     has_decoded,
19     get_decoded,
20     get_decoded_or_raw,
21     encode_inference_response,
22     encode_response_output,
23     decode_request_input,
24     decode_inference_request,
25 )
26 
27 __all__ = [
28     "CodecError",
29     "NumpyCodec",
30     "NumpyRequestCodec",
31     "StringCodec",
32     "StringRequestCodec",
33     "Base64Codec",
34     "DatetimeCodec",
35     "PandasCodec",
36     "InputCodec",
37     "InputCodecLike",
38     "RequestCodec",
39     "RequestCodecLike",
40     "DecodedParameterName",
41     "register_input_codec",
42     "register_request_codec",
43     "has_decoded",
44     "get_decoded",
45     "get_decoded_or_raw",
46     "encode_inference_response",
47     "encode_response_output",
48     "decode_request_input",
49     "decode_inference_request",
50     "decode_args",
51 ]
52
```
--- 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/mlserver/codecs/__init__.py b/mlserver/codecs/__init__.py
--- a/mlserver/codecs/__init__.py
+++ b/mlserver/codecs/__init__.py
@@ -1,6 +1,6 @@
 from .numpy import NumpyCodec, NumpyRequestCodec
 from .pandas import PandasCodec
-from .string import StringCodec
+from .string import StringCodec, StringRequestCodec
 from .base64 import Base64Codec
 from .datetime import DatetimeCodec
 from .errors import CodecError

{"golden_diff": "diff --git a/mlserver/codecs/__init__.py b/mlserver/codecs/__init__.py\n--- a/mlserver/codecs/__init__.py\n+++ b/mlserver/codecs/__init__.py\n@@ -1,6 +1,6 @@\n from .numpy import NumpyCodec, NumpyRequestCodec\n from .pandas import PandasCodec\n-from .string import StringCodec\n+from .string import StringCodec, StringRequestCodec\n from .base64 import Base64Codec\n from .datetime import DatetimeCodec\n from .errors import CodecError\n", "issue": "Star imports from `mlserver.codecs` not working\nFor example:\r\n\r\n```python\r\nfrom mlserver.codecs import *\r\n```\r\nThrows an error:\r\n```python\r\nTraceback (most recent call last):\r\n  File \"/home/janis/.conda/envs/py310/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3460, in run_code\r\n    exec(code_obj, self.user_global_ns, self.user_ns)\r\n  File \"<ipython-input-2-b8cc62508f29>\", line 1, in <module>\r\n    from mlserver.codecs import *\r\nAttributeError: module 'mlserver.codecs' has no attribute 'StringRequestCodec'\r\n```\r\n\r\nThis is likely because `__all__` is out-of-date with the actual imports. I haven't tested other sub-packages, but it might be worth looking at these.\r\n\r\nP.S. I'm not a big fan of  `__all__` and star imports in particular, the main issue is that the existence of `__all__` gives rise to two public APIs which may diverge (as it has in this case).\n", "before_files": [{"content": "from .numpy import NumpyCodec, NumpyRequestCodec\nfrom .pandas import PandasCodec\nfrom .string import StringCodec\nfrom .base64 import Base64Codec\nfrom .datetime import DatetimeCodec\nfrom .errors import CodecError\nfrom .decorator import decode_args\nfrom .base import (\n    InputCodec,\n    RequestCodec,\n    register_input_codec,\n    register_request_codec,\n    InputCodecLike,\n    RequestCodecLike,\n)\nfrom .utils import (\n    DecodedParameterName,\n    has_decoded,\n    get_decoded,\n    get_decoded_or_raw,\n    encode_inference_response,\n    encode_response_output,\n    decode_request_input,\n    decode_inference_request,\n)\n\n__all__ = [\n    \"CodecError\",\n    \"NumpyCodec\",\n    \"NumpyRequestCodec\",\n    \"StringCodec\",\n    \"StringRequestCodec\",\n    \"Base64Codec\",\n    \"DatetimeCodec\",\n    \"PandasCodec\",\n    \"InputCodec\",\n    \"InputCodecLike\",\n    \"RequestCodec\",\n    \"RequestCodecLike\",\n    \"DecodedParameterName\",\n    \"register_input_codec\",\n    \"register_request_codec\",\n    \"has_decoded\",\n    \"get_decoded\",\n    \"get_decoded_or_raw\",\n    \"encode_inference_response\",\n    \"encode_response_output\",\n    \"decode_request_input\",\n    \"decode_inference_request\",\n    \"decode_args\",\n]\n", "path": "mlserver/codecs/__init__.py"}], "after_files": [{"content": "from .numpy import NumpyCodec, NumpyRequestCodec\nfrom .pandas import PandasCodec\nfrom .string import StringCodec, StringRequestCodec\nfrom .base64 import Base64Codec\nfrom .datetime import DatetimeCodec\nfrom .errors import CodecError\nfrom .decorator import decode_args\nfrom .base import (\n    InputCodec,\n    RequestCodec,\n    register_input_codec,\n    register_request_codec,\n    InputCodecLike,\n    RequestCodecLike,\n)\nfrom .utils import (\n    DecodedParameterName,\n    has_decoded,\n    get_decoded,\n    get_decoded_or_raw,\n    encode_inference_response,\n    encode_response_output,\n    decode_request_input,\n    decode_inference_request,\n)\n\n__all__ = [\n    \"CodecError\",\n    \"NumpyCodec\",\n    \"NumpyRequestCodec\",\n    \"StringCodec\",\n    \"StringRequestCodec\",\n    \"Base64Codec\",\n    \"DatetimeCodec\",\n    \"PandasCodec\",\n    \"InputCodec\",\n    \"InputCodecLike\",\n    \"RequestCodec\",\n    \"RequestCodecLike\",\n    \"DecodedParameterName\",\n    \"register_input_codec\",\n    \"register_request_codec\",\n    \"has_decoded\",\n    \"get_decoded\",\n    \"get_decoded_or_raw\",\n    \"encode_inference_response\",\n    \"encode_response_output\",\n    \"decode_request_input\",\n    \"decode_inference_request\",\n    \"decode_args\",\n]\n", "path": "mlserver/codecs/__init__.py"}]}