prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  `from starlite import *` broken if `testing` extra not installed
  This is only an issue on main, not in any release.
  
  When I want to try a library out, I'll install it into a fresh env, run python repl and do `from lib import *` and have a play around. If just doing that raised an error it would freak me out a little about the lib.
  
  Possible solution:
  - remove `.testing` imports from `starlite.__all__`
  - add deprecation warning for top-level `.testing` imports
  - remove `if TYPE_CHECKING` too? May as well if we are doing the above, I think?
  
  Refs: #174 #130 
  
  </issue>
  <code>
  [start of starlite/__init__.py]
  1 from typing import TYPE_CHECKING, Any
  2 
  3 from starlite.datastructures import File, Redirect, State, Stream, Template
  4 
  5 from .app import Starlite
  6 from .config import (
  7     CacheConfig,
  8     CORSConfig,
  9     OpenAPIConfig,
  10     StaticFilesConfig,
  11     TemplateConfig,
  12 )
  13 from .connection import Request, WebSocket
  14 from .controller import Controller
  15 from .dto import DTOFactory
  16 from .enums import (
  17     HttpMethod,
  18     MediaType,
  19     OpenAPIMediaType,
  20     RequestEncodingType,
  21     ScopeType,
  22 )
  23 from .exceptions import (
  24     HTTPException,
  25     ImproperlyConfiguredException,
  26     InternalServerException,
  27     MissingDependencyException,
  28     NotAuthorizedException,
  29     NotFoundException,
  30     PermissionDeniedException,
  31     ServiceUnavailableException,
  32     StarLiteException,
  33     ValidationException,
  34 )
  35 from .handlers import (
  36     ASGIRouteHandler,
  37     BaseRouteHandler,
  38     HTTPRouteHandler,
  39     WebsocketRouteHandler,
  40     asgi,
  41     delete,
  42     get,
  43     patch,
  44     post,
  45     put,
  46     route,
  47     websocket,
  48 )
  49 from .logging import LoggingConfig, QueueListenerHandler
  50 from .middleware import AbstractAuthenticationMiddleware, AuthenticationResult
  51 from .openapi.controller import OpenAPIController
  52 from .params import Body, Dependency, Parameter
  53 from .plugins import PluginProtocol
  54 from .provide import Provide
  55 from .response import Response
  56 from .router import Router
  57 from .routes import BaseRoute, HTTPRoute, WebSocketRoute
  58 from .types import MiddlewareProtocol, Partial, ResponseHeader
  59 
  60 if TYPE_CHECKING:
  61     from .testing import TestClient, create_test_client, create_test_request
  62 
  63 
  64 __all__ = [
  65     "ASGIRouteHandler",
  66     "AbstractAuthenticationMiddleware",
  67     "AuthenticationResult",
  68     "BaseRoute",
  69     "BaseRouteHandler",
  70     "Body",
  71     "CORSConfig",
  72     "CacheConfig",
  73     "Controller",
  74     "Dependency",
  75     "DTOFactory",
  76     "File",
  77     "HTTPException",
  78     "HTTPRoute",
  79     "HTTPRouteHandler",
  80     "HttpMethod",
  81     "ImproperlyConfiguredException",
  82     "InternalServerException",
  83     "LoggingConfig",
  84     "MediaType",
  85     "MiddlewareProtocol",
  86     "MissingDependencyException",
  87     "NotAuthorizedException",
  88     "NotFoundException",
  89     "OpenAPIConfig",
  90     "OpenAPIController",
  91     "OpenAPIMediaType",
  92     "Parameter",
  93     "Partial",
  94     "PermissionDeniedException",
  95     "PluginProtocol",
  96     "Provide",
  97     "QueueListenerHandler",
  98     "Redirect",
  99     "Request",
  100     "RequestEncodingType",
  101     "Response",
  102     "ResponseHeader",
  103     "Router",
  104     "ScopeType",
  105     "ServiceUnavailableException",
  106     "StarLiteException",
  107     "Starlite",
  108     "State",
  109     "StaticFilesConfig",
  110     "Stream",
  111     "Template",
  112     "TemplateConfig",
  113     "TestClient",
  114     "ValidationException",
  115     "WebSocket",
  116     "WebSocketRoute",
  117     "WebsocketRouteHandler",
  118     "asgi",
  119     "create_test_client",
  120     "create_test_request",
  121     "delete",
  122     "get",
  123     "patch",
  124     "post",
  125     "put",
  126     "route",
  127     "websocket",
  128 ]
  129 
  130 _dynamic_imports = {"TestClient", "create_test_client", "create_test_request"}
  131 
  132 
  133 # pylint: disable=import-outside-toplevel
  134 def __getattr__(name: str) -> Any:
  135     """Provide lazy importing as per https://peps.python.org/pep-0562/"""
  136     if name not in _dynamic_imports:
  137         raise AttributeError(f"Module {__package__} has no attribute {name}")
  138 
  139     from . import testing
  140 
  141     attr = globals()[name] = getattr(testing, name)
  142     return attr
  143
  [end of starlite/__init__.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/starlite/__init__.py b/starlite/__init__.py
  --- a/starlite/__init__.py
  +++ b/starlite/__init__.py
  @@ -1,4 +1,4 @@
  -from typing import TYPE_CHECKING, Any
  +from typing import Any
   
   from starlite.datastructures import File, Redirect, State, Stream, Template
   
  @@ -57,10 +57,6 @@
   from .routes import BaseRoute, HTTPRoute, WebSocketRoute
   from .types import MiddlewareProtocol, Partial, ResponseHeader
   
  -if TYPE_CHECKING:
  -    from .testing import TestClient, create_test_client, create_test_request
  -
  -
   __all__ = [
       "ASGIRouteHandler",
       "AbstractAuthenticationMiddleware",
  @@ -110,14 +106,11 @@
       "Stream",
       "Template",
       "TemplateConfig",
  -    "TestClient",
       "ValidationException",
       "WebSocket",
       "WebSocketRoute",
       "WebsocketRouteHandler",
       "asgi",
  -    "create_test_client",
  -    "create_test_request",
       "delete",
       "get",
       "patch",
  @@ -127,15 +120,24 @@
       "websocket",
   ]
   
  -_dynamic_imports = {"TestClient", "create_test_client", "create_test_request"}
  +
  +_deprecated_imports = {"TestClient", "create_test_client", "create_test_request"}
   
   
   # pylint: disable=import-outside-toplevel
   def __getattr__(name: str) -> Any:
       """Provide lazy importing as per https://peps.python.org/pep-0562/"""
  -    if name not in _dynamic_imports:
  +    if name not in _deprecated_imports:
           raise AttributeError(f"Module {__package__} has no attribute {name}")
   
  +    import warnings
  +
  +    warnings.warn(
  +        f"Importing {name} from {__package__} is deprecated, use `from startlite.testing import {name}` instead",
  +        DeprecationWarning,
  +        stacklevel=2,
  +    )
  +
       from . import testing
   
       attr = globals()[name] = getattr(testing, name)
  
verification_info: {"golden_diff": "diff --git a/starlite/__init__.py b/starlite/__init__.py\n--- a/starlite/__init__.py\n+++ b/starlite/__init__.py\n@@ -1,4 +1,4 @@\n-from typing import TYPE_CHECKING, Any\n+from typing import Any\n \n from starlite.datastructures import File, Redirect, State, Stream, Template\n \n@@ -57,10 +57,6 @@\n from .routes import BaseRoute, HTTPRoute, WebSocketRoute\n from .types import MiddlewareProtocol, Partial, ResponseHeader\n \n-if TYPE_CHECKING:\n-    from .testing import TestClient, create_test_client, create_test_request\n-\n-\n __all__ = [\n     \"ASGIRouteHandler\",\n     \"AbstractAuthenticationMiddleware\",\n@@ -110,14 +106,11 @@\n     \"Stream\",\n     \"Template\",\n     \"TemplateConfig\",\n-    \"TestClient\",\n     \"ValidationException\",\n     \"WebSocket\",\n     \"WebSocketRoute\",\n     \"WebsocketRouteHandler\",\n     \"asgi\",\n-    \"create_test_client\",\n-    \"create_test_request\",\n     \"delete\",\n     \"get\",\n     \"patch\",\n@@ -127,15 +120,24 @@\n     \"websocket\",\n ]\n \n-_dynamic_imports = {\"TestClient\", \"create_test_client\", \"create_test_request\"}\n+\n+_deprecated_imports = {\"TestClient\", \"create_test_client\", \"create_test_request\"}\n \n \n # pylint: disable=import-outside-toplevel\n def __getattr__(name: str) -> Any:\n     \"\"\"Provide lazy importing as per https://peps.python.org/pep-0562/\"\"\"\n-    if name not in _dynamic_imports:\n+    if name not in _deprecated_imports:\n         raise AttributeError(f\"Module {__package__} has no attribute {name}\")\n \n+    import warnings\n+\n+    warnings.warn(\n+        f\"Importing {name} from {__package__} is deprecated, use `from startlite.testing import {name}` instead\",\n+        DeprecationWarning,\n+        stacklevel=2,\n+    )\n+\n     from . import testing\n \n     attr = globals()[name] = getattr(testing, name)\n", "issue": "`from starlite import *` broken if `testing` extra not installed\nThis is only an issue on main, not in any release.\r\n\r\nWhen I want to try a library out, I'll install it into a fresh env, run python repl and do `from lib import *` and have a play around. If just doing that raised an error it would freak me out a little about the lib.\r\n\r\nPossible solution:\r\n- remove `.testing` imports from `starlite.__all__`\r\n- add deprecation warning for top-level `.testing` imports\r\n- remove `if TYPE_CHECKING` too? May as well if we are doing the above, I think?\r\n\r\nRefs: #174 #130 \n", "before_files": [{"content": "from typing import TYPE_CHECKING, Any\n\nfrom starlite.datastructures import File, Redirect, State, Stream, Template\n\nfrom .app import Starlite\nfrom .config import (\n    CacheConfig,\n    CORSConfig,\n    OpenAPIConfig,\n    StaticFilesConfig,\n    TemplateConfig,\n)\nfrom .connection import Request, WebSocket\nfrom .controller import Controller\nfrom .dto import DTOFactory\nfrom .enums import (\n    HttpMethod,\n    MediaType,\n    OpenAPIMediaType,\n    RequestEncodingType,\n    ScopeType,\n)\nfrom .exceptions import (\n    HTTPException,\n    ImproperlyConfiguredException,\n    InternalServerException,\n    MissingDependencyException,\n    NotAuthorizedException,\n    NotFoundException,\n    PermissionDeniedException,\n    ServiceUnavailableException,\n    StarLiteException,\n    ValidationException,\n)\nfrom .handlers import (\n    ASGIRouteHandler,\n    BaseRouteHandler,\n    HTTPRouteHandler,\n    WebsocketRouteHandler,\n    asgi,\n    delete,\n    get,\n    patch,\n    post,\n    put,\n    route,\n    websocket,\n)\nfrom .logging import LoggingConfig, QueueListenerHandler\nfrom .middleware import AbstractAuthenticationMiddleware, AuthenticationResult\nfrom .openapi.controller import OpenAPIController\nfrom .params import Body, Dependency, Parameter\nfrom .plugins import PluginProtocol\nfrom .provide import Provide\nfrom .response import Response\nfrom .router import Router\nfrom .routes import BaseRoute, HTTPRoute, WebSocketRoute\nfrom .types import MiddlewareProtocol, Partial, ResponseHeader\n\nif TYPE_CHECKING:\n    from .testing import TestClient, create_test_client, create_test_request\n\n\n__all__ = [\n    \"ASGIRouteHandler\",\n    \"AbstractAuthenticationMiddleware\",\n    \"AuthenticationResult\",\n    \"BaseRoute\",\n    \"BaseRouteHandler\",\n    \"Body\",\n    \"CORSConfig\",\n    \"CacheConfig\",\n    \"Controller\",\n    \"Dependency\",\n    \"DTOFactory\",\n    \"File\",\n    \"HTTPException\",\n    \"HTTPRoute\",\n    \"HTTPRouteHandler\",\n    \"HttpMethod\",\n    \"ImproperlyConfiguredException\",\n    \"InternalServerException\",\n    \"LoggingConfig\",\n    \"MediaType\",\n    \"MiddlewareProtocol\",\n    \"MissingDependencyException\",\n    \"NotAuthorizedException\",\n    \"NotFoundException\",\n    \"OpenAPIConfig\",\n    \"OpenAPIController\",\n    \"OpenAPIMediaType\",\n    \"Parameter\",\n    \"Partial\",\n    \"PermissionDeniedException\",\n    \"PluginProtocol\",\n    \"Provide\",\n    \"QueueListenerHandler\",\n    \"Redirect\",\n    \"Request\",\n    \"RequestEncodingType\",\n    \"Response\",\n    \"ResponseHeader\",\n    \"Router\",\n    \"ScopeType\",\n    \"ServiceUnavailableException\",\n    \"StarLiteException\",\n    \"Starlite\",\n    \"State\",\n    \"StaticFilesConfig\",\n    \"Stream\",\n    \"Template\",\n    \"TemplateConfig\",\n    \"TestClient\",\n    \"ValidationException\",\n    \"WebSocket\",\n    \"WebSocketRoute\",\n    \"WebsocketRouteHandler\",\n    \"asgi\",\n    \"create_test_client\",\n    \"create_test_request\",\n    \"delete\",\n    \"get\",\n    \"patch\",\n    \"post\",\n    \"put\",\n    \"route\",\n    \"websocket\",\n]\n\n_dynamic_imports = {\"TestClient\", \"create_test_client\", \"create_test_request\"}\n\n\n# pylint: disable=import-outside-toplevel\ndef __getattr__(name: str) -> Any:\n    \"\"\"Provide lazy importing as per https://peps.python.org/pep-0562/\"\"\"\n    if name not in _dynamic_imports:\n        raise AttributeError(f\"Module {__package__} has no attribute {name}\")\n\n    from . import testing\n\n    attr = globals()[name] = getattr(testing, name)\n    return attr\n", "path": "starlite/__init__.py"}]}