prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  twisted.web.pages.errorPage docstring has a typo
  > Use [IResource.putChild()](https://docs.twisted.org/en/stable/api/twisted.web.resource.IResource.html#putChild) override specific path.
  
  Should be:
  
  > Use [IResource.putChild()](https://docs.twisted.org/en/stable/api/twisted.web.resource.IResource.html#putChild) override **a** specific path.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `src/twisted/web/pages.py`
  Content:
  ```
  1 # -*- test-case-name: twisted.web.test.test_pages -*-
  2 # Copyright (c) Twisted Matrix Laboratories.
  3 # See LICENSE for details.
  4 
  5 """
  6 Utility implementations of L{IResource}.
  7 """
  8 
  9 __all__ = (
  10     "errorPage",
  11     "notFound",
  12     "forbidden",
  13 )
  14 
  15 from typing import cast
  16 
  17 from twisted.web import http
  18 from twisted.web.iweb import IRenderable, IRequest
  19 from twisted.web.resource import IResource, Resource
  20 from twisted.web.template import renderElement, tags
  21 
  22 
  23 class _ErrorPage(Resource):
  24     """
  25     L{_ErrorPage} is a resource that responds to all requests with a particular
  26     (parameterized) HTTP status code and an HTML body containing some
  27     descriptive text. This is useful for rendering simple error pages.
  28 
  29     @see: L{twisted.web.pages.errorPage}
  30 
  31     @ivar _code: An integer HTTP status code which will be used for the
  32         response.
  33 
  34     @ivar _brief: A short string which will be included in the response body as
  35         the page title.
  36 
  37     @ivar _detail: A longer string which will be included in the response body.
  38     """
  39 
  40     def __init__(self, code: int, brief: str, detail: str) -> None:
  41         super().__init__()
  42         self._code: int = code
  43         self._brief: str = brief
  44         self._detail: str = detail
  45 
  46     def render(self, request: IRequest) -> object:
  47         """
  48         Respond to all requests with the given HTTP status code and an HTML
  49         document containing the explanatory strings.
  50         """
  51         request.setResponseCode(self._code)
  52         request.setHeader(b"content-type", b"text/html; charset=utf-8")
  53         return renderElement(
  54             request,
  55             # cast because the type annotations here seem off; Tag isn't an
  56             # IRenderable but also probably should be? See
  57             # https://github.com/twisted/twisted/issues/4982
  58             cast(
  59                 IRenderable,
  60                 tags.html(
  61                     tags.head(tags.title(f"{self._code} - {self._brief}")),
  62                     tags.body(tags.h1(self._brief), tags.p(self._detail)),
  63                 ),
  64             ),
  65         )
  66 
  67     def getChild(self, path: bytes, request: IRequest) -> Resource:
  68         """
  69         Handle all requests for which L{_ErrorPage} lacks a child by returning
  70         this error page.
  71 
  72         @param path: A path segment.
  73 
  74         @param request: HTTP request
  75         """
  76         return self
  77 
  78 
  79 def errorPage(code: int, brief: str, detail: str) -> IResource:
  80     """
  81     Build a resource that responds to all requests with a particular HTTP
  82     status code and an HTML body containing some descriptive text. This is
  83     useful for rendering simple error pages.
  84 
  85     The resource dynamically handles all paths below it. Use
  86     L{IResource.putChild()} override specific path.
  87 
  88     @param code: An integer HTTP status code which will be used for the
  89         response.
  90 
  91     @param brief: A short string which will be included in the response
  92         body as the page title.
  93 
  94     @param detail: A longer string which will be included in the
  95         response body.
  96 
  97     @returns: An L{IResource}
  98     """
  99     return _ErrorPage(code, brief, detail)
  100 
  101 
  102 def notFound(
  103     brief: str = "No Such Resource",
  104     message: str = "Sorry. No luck finding that resource.",
  105 ) -> IResource:
  106     """
  107     Generate an L{IResource} with a 404 Not Found status code.
  108 
  109     @see: L{twisted.web.pages.errorPage}
  110 
  111     @param brief: A short string displayed as the page title.
  112 
  113     @param brief: A longer string displayed in the page body.
  114 
  115     @returns: An L{IResource}
  116     """
  117     return _ErrorPage(http.NOT_FOUND, brief, message)
  118 
  119 
  120 def forbidden(
  121     brief: str = "Forbidden Resource", message: str = "Sorry, resource is forbidden."
  122 ) -> IResource:
  123     """
  124     Generate an L{IResource} with a 403 Forbidden status code.
  125 
  126     @see: L{twisted.web.pages.errorPage}
  127 
  128     @param brief: A short string displayed as the page title.
  129 
  130     @param brief: A longer string displayed in the page body.
  131 
  132     @returns: An L{IResource}
  133     """
  134     return _ErrorPage(http.FORBIDDEN, brief, message)
  135
  ```
  --- 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/src/twisted/web/pages.py b/src/twisted/web/pages.py
  --- a/src/twisted/web/pages.py
  +++ b/src/twisted/web/pages.py
  @@ -83,7 +83,7 @@
       useful for rendering simple error pages.
   
       The resource dynamically handles all paths below it. Use
  -    L{IResource.putChild()} override specific path.
  +    L{IResource.putChild()} to override a specific path.
   
       @param code: An integer HTTP status code which will be used for the
           response.
  
verification_info: {"golden_diff": "diff --git a/src/twisted/web/pages.py b/src/twisted/web/pages.py\n--- a/src/twisted/web/pages.py\n+++ b/src/twisted/web/pages.py\n@@ -83,7 +83,7 @@\n     useful for rendering simple error pages.\n \n     The resource dynamically handles all paths below it. Use\n-    L{IResource.putChild()} override specific path.\n+    L{IResource.putChild()} to override a specific path.\n \n     @param code: An integer HTTP status code which will be used for the\n         response.\n", "issue": "twisted.web.pages.errorPage docstring has a typo\n> Use [IResource.putChild()](https://docs.twisted.org/en/stable/api/twisted.web.resource.IResource.html#putChild) override specific path.\r\n\r\nShould be:\r\n\r\n> Use [IResource.putChild()](https://docs.twisted.org/en/stable/api/twisted.web.resource.IResource.html#putChild) override **a** specific path.\n", "before_files": [{"content": "# -*- test-case-name: twisted.web.test.test_pages -*-\n# Copyright (c) Twisted Matrix Laboratories.\n# See LICENSE for details.\n\n\"\"\"\nUtility implementations of L{IResource}.\n\"\"\"\n\n__all__ = (\n    \"errorPage\",\n    \"notFound\",\n    \"forbidden\",\n)\n\nfrom typing import cast\n\nfrom twisted.web import http\nfrom twisted.web.iweb import IRenderable, IRequest\nfrom twisted.web.resource import IResource, Resource\nfrom twisted.web.template import renderElement, tags\n\n\nclass _ErrorPage(Resource):\n    \"\"\"\n    L{_ErrorPage} is a resource that responds to all requests with a particular\n    (parameterized) HTTP status code and an HTML body containing some\n    descriptive text. This is useful for rendering simple error pages.\n\n    @see: L{twisted.web.pages.errorPage}\n\n    @ivar _code: An integer HTTP status code which will be used for the\n        response.\n\n    @ivar _brief: A short string which will be included in the response body as\n        the page title.\n\n    @ivar _detail: A longer string which will be included in the response body.\n    \"\"\"\n\n    def __init__(self, code: int, brief: str, detail: str) -> None:\n        super().__init__()\n        self._code: int = code\n        self._brief: str = brief\n        self._detail: str = detail\n\n    def render(self, request: IRequest) -> object:\n        \"\"\"\n        Respond to all requests with the given HTTP status code and an HTML\n        document containing the explanatory strings.\n        \"\"\"\n        request.setResponseCode(self._code)\n        request.setHeader(b\"content-type\", b\"text/html; charset=utf-8\")\n        return renderElement(\n            request,\n            # cast because the type annotations here seem off; Tag isn't an\n            # IRenderable but also probably should be? See\n            # https://github.com/twisted/twisted/issues/4982\n            cast(\n                IRenderable,\n                tags.html(\n                    tags.head(tags.title(f\"{self._code} - {self._brief}\")),\n                    tags.body(tags.h1(self._brief), tags.p(self._detail)),\n                ),\n            ),\n        )\n\n    def getChild(self, path: bytes, request: IRequest) -> Resource:\n        \"\"\"\n        Handle all requests for which L{_ErrorPage} lacks a child by returning\n        this error page.\n\n        @param path: A path segment.\n\n        @param request: HTTP request\n        \"\"\"\n        return self\n\n\ndef errorPage(code: int, brief: str, detail: str) -> IResource:\n    \"\"\"\n    Build a resource that responds to all requests with a particular HTTP\n    status code and an HTML body containing some descriptive text. This is\n    useful for rendering simple error pages.\n\n    The resource dynamically handles all paths below it. Use\n    L{IResource.putChild()} override specific path.\n\n    @param code: An integer HTTP status code which will be used for the\n        response.\n\n    @param brief: A short string which will be included in the response\n        body as the page title.\n\n    @param detail: A longer string which will be included in the\n        response body.\n\n    @returns: An L{IResource}\n    \"\"\"\n    return _ErrorPage(code, brief, detail)\n\n\ndef notFound(\n    brief: str = \"No Such Resource\",\n    message: str = \"Sorry. No luck finding that resource.\",\n) -> IResource:\n    \"\"\"\n    Generate an L{IResource} with a 404 Not Found status code.\n\n    @see: L{twisted.web.pages.errorPage}\n\n    @param brief: A short string displayed as the page title.\n\n    @param brief: A longer string displayed in the page body.\n\n    @returns: An L{IResource}\n    \"\"\"\n    return _ErrorPage(http.NOT_FOUND, brief, message)\n\n\ndef forbidden(\n    brief: str = \"Forbidden Resource\", message: str = \"Sorry, resource is forbidden.\"\n) -> IResource:\n    \"\"\"\n    Generate an L{IResource} with a 403 Forbidden status code.\n\n    @see: L{twisted.web.pages.errorPage}\n\n    @param brief: A short string displayed as the page title.\n\n    @param brief: A longer string displayed in the page body.\n\n    @returns: An L{IResource}\n    \"\"\"\n    return _ErrorPage(http.FORBIDDEN, brief, message)\n", "path": "src/twisted/web/pages.py"}], "after_files": [{"content": "# -*- test-case-name: twisted.web.test.test_pages -*-\n# Copyright (c) Twisted Matrix Laboratories.\n# See LICENSE for details.\n\n\"\"\"\nUtility implementations of L{IResource}.\n\"\"\"\n\n__all__ = (\n    \"errorPage\",\n    \"notFound\",\n    \"forbidden\",\n)\n\nfrom typing import cast\n\nfrom twisted.web import http\nfrom twisted.web.iweb import IRenderable, IRequest\nfrom twisted.web.resource import IResource, Resource\nfrom twisted.web.template import renderElement, tags\n\n\nclass _ErrorPage(Resource):\n    \"\"\"\n    L{_ErrorPage} is a resource that responds to all requests with a particular\n    (parameterized) HTTP status code and an HTML body containing some\n    descriptive text. This is useful for rendering simple error pages.\n\n    @see: L{twisted.web.pages.errorPage}\n\n    @ivar _code: An integer HTTP status code which will be used for the\n        response.\n\n    @ivar _brief: A short string which will be included in the response body as\n        the page title.\n\n    @ivar _detail: A longer string which will be included in the response body.\n    \"\"\"\n\n    def __init__(self, code: int, brief: str, detail: str) -> None:\n        super().__init__()\n        self._code: int = code\n        self._brief: str = brief\n        self._detail: str = detail\n\n    def render(self, request: IRequest) -> object:\n        \"\"\"\n        Respond to all requests with the given HTTP status code and an HTML\n        document containing the explanatory strings.\n        \"\"\"\n        request.setResponseCode(self._code)\n        request.setHeader(b\"content-type\", b\"text/html; charset=utf-8\")\n        return renderElement(\n            request,\n            # cast because the type annotations here seem off; Tag isn't an\n            # IRenderable but also probably should be? See\n            # https://github.com/twisted/twisted/issues/4982\n            cast(\n                IRenderable,\n                tags.html(\n                    tags.head(tags.title(f\"{self._code} - {self._brief}\")),\n                    tags.body(tags.h1(self._brief), tags.p(self._detail)),\n                ),\n            ),\n        )\n\n    def getChild(self, path: bytes, request: IRequest) -> Resource:\n        \"\"\"\n        Handle all requests for which L{_ErrorPage} lacks a child by returning\n        this error page.\n\n        @param path: A path segment.\n\n        @param request: HTTP request\n        \"\"\"\n        return self\n\n\ndef errorPage(code: int, brief: str, detail: str) -> IResource:\n    \"\"\"\n    Build a resource that responds to all requests with a particular HTTP\n    status code and an HTML body containing some descriptive text. This is\n    useful for rendering simple error pages.\n\n    The resource dynamically handles all paths below it. Use\n    L{IResource.putChild()} to override a specific path.\n\n    @param code: An integer HTTP status code which will be used for the\n        response.\n\n    @param brief: A short string which will be included in the response\n        body as the page title.\n\n    @param detail: A longer string which will be included in the\n        response body.\n\n    @returns: An L{IResource}\n    \"\"\"\n    return _ErrorPage(code, brief, detail)\n\n\ndef notFound(\n    brief: str = \"No Such Resource\",\n    message: str = \"Sorry. No luck finding that resource.\",\n) -> IResource:\n    \"\"\"\n    Generate an L{IResource} with a 404 Not Found status code.\n\n    @see: L{twisted.web.pages.errorPage}\n\n    @param brief: A short string displayed as the page title.\n\n    @param brief: A longer string displayed in the page body.\n\n    @returns: An L{IResource}\n    \"\"\"\n    return _ErrorPage(http.NOT_FOUND, brief, message)\n\n\ndef forbidden(\n    brief: str = \"Forbidden Resource\", message: str = \"Sorry, resource is forbidden.\"\n) -> IResource:\n    \"\"\"\n    Generate an L{IResource} with a 403 Forbidden status code.\n\n    @see: L{twisted.web.pages.errorPage}\n\n    @param brief: A short string displayed as the page title.\n\n    @param brief: A longer string displayed in the page body.\n\n    @returns: An L{IResource}\n    \"\"\"\n    return _ErrorPage(http.FORBIDDEN, brief, message)\n", "path": "src/twisted/web/pages.py"}]}