prompt: 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()
  
  ```
  
golden_diff: 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
  
verification_info: {"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"}]}