prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Add OpenGraph information to our documentation
  Would be good to fill in some open graph fields for our documentation so when we link to things they show up with rich output / images rather than as a standard link. Really works nicely for Social Media, Slack, etc.
  
  More information: https://ogp.me/
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `docs/conf.py`
  Content:
  ```
  1 from __future__ import annotations
  2 
  3 import os
  4 import sys
  5 from datetime import date
  6 
  7 # If extensions (or modules to document with autodoc) are in another directory,
  8 # add these directories to sys.path here. If the directory is relative to the
  9 # documentation root, use os.path.abspath to make it absolute, like shown here.
  10 
  11 root_path = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
  12 sys.path.insert(0, root_path)
  13 
  14 # https://docs.readthedocs.io/en/stable/builds.html#build-environment
  15 if "READTHEDOCS" in os.environ:
  16     import glob
  17 
  18     if glob.glob("../changelog/*.*.rst"):
  19         print("-- Found changes; running towncrier --", flush=True)
  20         import subprocess
  21 
  22         subprocess.run(
  23             ["towncrier", "--yes", "--date", "not released yet"], cwd="..", check=True
  24         )
  25 
  26 import urllib3
  27 
  28 # -- General configuration -----------------------------------------------------
  29 
  30 
  31 # Add any Sphinx extension module names here, as strings. They can be extensions
  32 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
  33 extensions = [
  34     "sphinx.ext.autodoc",
  35     "sphinx_copybutton",
  36     "sphinx.ext.doctest",
  37     "sphinx.ext.intersphinx",
  38 ]
  39 
  40 # Test code blocks only when explicitly specified
  41 doctest_test_doctest_blocks = ""
  42 
  43 # Add any paths that contain templates here, relative to this directory.
  44 templates_path = ["_templates"]
  45 
  46 # The suffix of source filenames.
  47 source_suffix = ".rst"
  48 
  49 # The master toctree document.
  50 master_doc = "index"
  51 
  52 # General information about the project.
  53 project = "urllib3"
  54 copyright = f"{date.today().year}, Andrey Petrov"
  55 
  56 # The short X.Y version.
  57 version = urllib3.__version__
  58 # The full version, including alpha/beta/rc tags.
  59 release = version
  60 
  61 # List of patterns, relative to source directory, that match files and
  62 # directories to ignore when looking for source files.
  63 exclude_patterns = ["_build"]
  64 
  65 # The name of the Pygments (syntax highlighting) style to use.
  66 pygments_style = "friendly"
  67 
  68 # The theme to use for HTML and HTML Help pages.  See the documentation for
  69 # a list of builtin themes.
  70 html_theme = "furo"
  71 html_favicon = "images/favicon.png"
  72 
  73 html_static_path = ["_static"]
  74 html_theme_options = {
  75     "announcement": """
  76         <a style=\"text-decoration: none; color: white;\" 
  77            href=\"https://github.com/sponsors/urllib3\">
  78            <img src=\"/en/latest/_static/favicon.png\"/> Support urllib3 on GitHub Sponsors
  79         </a>
  80     """,
  81     "sidebar_hide_name": True,
  82     "light_logo": "banner.svg",
  83     "dark_logo": "dark-logo.svg",
  84 }
  85 
  86 intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}
  87 
  88 # Show typehints as content of the function or method
  89 autodoc_typehints = "description"
  90 
  91 # Warn about all references to unknown targets
  92 nitpicky = True
  93 # Except for these ones, which we expect to point to unknown targets:
  94 nitpick_ignore = [
  95     ("py:class", "_TYPE_SOCKS_OPTIONS"),
  96     ("py:class", "_TYPE_SOCKET_OPTIONS"),
  97     ("py:class", "_TYPE_TIMEOUT"),
  98     ("py:class", "_TYPE_FIELD_VALUE"),
  99     ("py:class", "_TYPE_BODY"),
  100     ("py:class", "_HttplibHTTPResponse"),
  101     ("py:class", "_HttplibHTTPMessage"),
  102     ("py:class", "TracebackType"),
  103     ("py:class", "Literal"),
  104     ("py:class", "email.errors.MessageDefect"),
  105     ("py:class", "MessageDefect"),
  106     ("py:class", "http.client.HTTPMessage"),
  107     ("py:class", "RequestHistory"),
  108     ("py:class", "SSLTransportType"),
  109     ("py:class", "VerifyMode"),
  110     ("py:class", "_ssl._SSLContext"),
  111     ("py:class", "urllib3._collections.HTTPHeaderDict"),
  112     ("py:class", "urllib3._collections.RecentlyUsedContainer"),
  113     ("py:class", "urllib3._request_methods.RequestMethods"),
  114     ("py:class", "urllib3.contrib.socks._TYPE_SOCKS_OPTIONS"),
  115     ("py:class", "urllib3.util.timeout._TYPE_DEFAULT"),
  116     ("py:class", "BaseHTTPConnection"),
  117 ]
  118
  ```
  --- 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/docs/conf.py b/docs/conf.py
  --- a/docs/conf.py
  +++ b/docs/conf.py
  @@ -35,8 +35,16 @@
       "sphinx_copybutton",
       "sphinx.ext.doctest",
       "sphinx.ext.intersphinx",
  +    "sphinxext.opengraph",
   ]
   
  +# Open Graph metadata
  +ogp_title = "urllib3 documentation"
  +ogp_site_url = "https://urllib3.readthedocs.io"
  +ogp_type = "website"
  +ogp_image = "https://github.com/urllib3/urllib3/raw/main/docs/_static/banner_github.svg"
  +ogp_description = "urllib3 is a user-friendly HTTP client library for Python."
  +
   # Test code blocks only when explicitly specified
   doctest_test_doctest_blocks = ""
  
verification_info: {"golden_diff": "diff --git a/docs/conf.py b/docs/conf.py\n--- a/docs/conf.py\n+++ b/docs/conf.py\n@@ -35,8 +35,16 @@\n     \"sphinx_copybutton\",\n     \"sphinx.ext.doctest\",\n     \"sphinx.ext.intersphinx\",\n+    \"sphinxext.opengraph\",\n ]\n \n+# Open Graph metadata\n+ogp_title = \"urllib3 documentation\"\n+ogp_site_url = \"https://urllib3.readthedocs.io\"\n+ogp_type = \"website\"\n+ogp_image = \"https://github.com/urllib3/urllib3/raw/main/docs/_static/banner_github.svg\"\n+ogp_description = \"urllib3 is a user-friendly HTTP client library for Python.\"\n+\n # Test code blocks only when explicitly specified\n doctest_test_doctest_blocks = \"\"\n", "issue": "Add OpenGraph information to our documentation\nWould be good to fill in some open graph fields for our documentation so when we link to things they show up with rich output / images rather than as a standard link. Really works nicely for Social Media, Slack, etc.\r\n\r\nMore information: https://ogp.me/\n", "before_files": [{"content": "from __future__ import annotations\n\nimport os\nimport sys\nfrom datetime import date\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n\nroot_path = os.path.abspath(os.path.join(os.path.dirname(__file__), \"..\"))\nsys.path.insert(0, root_path)\n\n# https://docs.readthedocs.io/en/stable/builds.html#build-environment\nif \"READTHEDOCS\" in os.environ:\n    import glob\n\n    if glob.glob(\"../changelog/*.*.rst\"):\n        print(\"-- Found changes; running towncrier --\", flush=True)\n        import subprocess\n\n        subprocess.run(\n            [\"towncrier\", \"--yes\", \"--date\", \"not released yet\"], cwd=\"..\", check=True\n        )\n\nimport urllib3\n\n# -- General configuration -----------------------------------------------------\n\n\n# Add any Sphinx extension module names here, as strings. They can be extensions\n# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = [\n    \"sphinx.ext.autodoc\",\n    \"sphinx_copybutton\",\n    \"sphinx.ext.doctest\",\n    \"sphinx.ext.intersphinx\",\n]\n\n# Test code blocks only when explicitly specified\ndoctest_test_doctest_blocks = \"\"\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = [\"_templates\"]\n\n# The suffix of source filenames.\nsource_suffix = \".rst\"\n\n# The master toctree document.\nmaster_doc = \"index\"\n\n# General information about the project.\nproject = \"urllib3\"\ncopyright = f\"{date.today().year}, Andrey Petrov\"\n\n# The short X.Y version.\nversion = urllib3.__version__\n# The full version, including alpha/beta/rc tags.\nrelease = version\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = [\"_build\"]\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = \"friendly\"\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = \"furo\"\nhtml_favicon = \"images/favicon.png\"\n\nhtml_static_path = [\"_static\"]\nhtml_theme_options = {\n    \"announcement\": \"\"\"\n        <a style=\\\"text-decoration: none; color: white;\\\" \n           href=\\\"https://github.com/sponsors/urllib3\\\">\n           <img src=\\\"/en/latest/_static/favicon.png\\\"/> Support urllib3 on GitHub Sponsors\n        </a>\n    \"\"\",\n    \"sidebar_hide_name\": True,\n    \"light_logo\": \"banner.svg\",\n    \"dark_logo\": \"dark-logo.svg\",\n}\n\nintersphinx_mapping = {\"python\": (\"https://docs.python.org/3\", None)}\n\n# Show typehints as content of the function or method\nautodoc_typehints = \"description\"\n\n# Warn about all references to unknown targets\nnitpicky = True\n# Except for these ones, which we expect to point to unknown targets:\nnitpick_ignore = [\n    (\"py:class\", \"_TYPE_SOCKS_OPTIONS\"),\n    (\"py:class\", \"_TYPE_SOCKET_OPTIONS\"),\n    (\"py:class\", \"_TYPE_TIMEOUT\"),\n    (\"py:class\", \"_TYPE_FIELD_VALUE\"),\n    (\"py:class\", \"_TYPE_BODY\"),\n    (\"py:class\", \"_HttplibHTTPResponse\"),\n    (\"py:class\", \"_HttplibHTTPMessage\"),\n    (\"py:class\", \"TracebackType\"),\n    (\"py:class\", \"Literal\"),\n    (\"py:class\", \"email.errors.MessageDefect\"),\n    (\"py:class\", \"MessageDefect\"),\n    (\"py:class\", \"http.client.HTTPMessage\"),\n    (\"py:class\", \"RequestHistory\"),\n    (\"py:class\", \"SSLTransportType\"),\n    (\"py:class\", \"VerifyMode\"),\n    (\"py:class\", \"_ssl._SSLContext\"),\n    (\"py:class\", \"urllib3._collections.HTTPHeaderDict\"),\n    (\"py:class\", \"urllib3._collections.RecentlyUsedContainer\"),\n    (\"py:class\", \"urllib3._request_methods.RequestMethods\"),\n    (\"py:class\", \"urllib3.contrib.socks._TYPE_SOCKS_OPTIONS\"),\n    (\"py:class\", \"urllib3.util.timeout._TYPE_DEFAULT\"),\n    (\"py:class\", \"BaseHTTPConnection\"),\n]\n", "path": "docs/conf.py"}], "after_files": [{"content": "from __future__ import annotations\n\nimport os\nimport sys\nfrom datetime import date\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n\nroot_path = os.path.abspath(os.path.join(os.path.dirname(__file__), \"..\"))\nsys.path.insert(0, root_path)\n\n# https://docs.readthedocs.io/en/stable/builds.html#build-environment\nif \"READTHEDOCS\" in os.environ:\n    import glob\n\n    if glob.glob(\"../changelog/*.*.rst\"):\n        print(\"-- Found changes; running towncrier --\", flush=True)\n        import subprocess\n\n        subprocess.run(\n            [\"towncrier\", \"--yes\", \"--date\", \"not released yet\"], cwd=\"..\", check=True\n        )\n\nimport urllib3\n\n# -- General configuration -----------------------------------------------------\n\n\n# Add any Sphinx extension module names here, as strings. They can be extensions\n# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = [\n    \"sphinx.ext.autodoc\",\n    \"sphinx_copybutton\",\n    \"sphinx.ext.doctest\",\n    \"sphinx.ext.intersphinx\",\n    \"sphinxext.opengraph\",\n]\n\n# Open Graph metadata\nogp_title = \"urllib3 documentation\"\nogp_site_url = \"https://urllib3.readthedocs.io\"\nogp_type = \"website\"\nogp_image = \"https://github.com/urllib3/urllib3/raw/main/docs/_static/banner_github.svg\"\nogp_description = \"urllib3 is a user-friendly HTTP client library for Python.\"\n\n# Test code blocks only when explicitly specified\ndoctest_test_doctest_blocks = \"\"\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = [\"_templates\"]\n\n# The suffix of source filenames.\nsource_suffix = \".rst\"\n\n# The master toctree document.\nmaster_doc = \"index\"\n\n# General information about the project.\nproject = \"urllib3\"\ncopyright = f\"{date.today().year}, Andrey Petrov\"\n\n# The short X.Y version.\nversion = urllib3.__version__\n# The full version, including alpha/beta/rc tags.\nrelease = version\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = [\"_build\"]\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = \"friendly\"\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = \"furo\"\nhtml_favicon = \"images/favicon.png\"\n\nhtml_static_path = [\"_static\"]\nhtml_theme_options = {\n    \"announcement\": \"\"\"\n        <a style=\\\"text-decoration: none; color: white;\\\" \n           href=\\\"https://github.com/sponsors/urllib3\\\">\n           <img src=\\\"/en/latest/_static/favicon.png\\\"/> Support urllib3 on GitHub Sponsors\n        </a>\n    \"\"\",\n    \"sidebar_hide_name\": True,\n    \"light_logo\": \"banner.svg\",\n    \"dark_logo\": \"dark-logo.svg\",\n}\n\nintersphinx_mapping = {\"python\": (\"https://docs.python.org/3\", None)}\n\n# Show typehints as content of the function or method\nautodoc_typehints = \"description\"\n\n# Warn about all references to unknown targets\nnitpicky = True\n# Except for these ones, which we expect to point to unknown targets:\nnitpick_ignore = [\n    (\"py:class\", \"_TYPE_SOCKS_OPTIONS\"),\n    (\"py:class\", \"_TYPE_SOCKET_OPTIONS\"),\n    (\"py:class\", \"_TYPE_TIMEOUT\"),\n    (\"py:class\", \"_TYPE_FIELD_VALUE\"),\n    (\"py:class\", \"_TYPE_BODY\"),\n    (\"py:class\", \"_HttplibHTTPResponse\"),\n    (\"py:class\", \"_HttplibHTTPMessage\"),\n    (\"py:class\", \"TracebackType\"),\n    (\"py:class\", \"Literal\"),\n    (\"py:class\", \"email.errors.MessageDefect\"),\n    (\"py:class\", \"MessageDefect\"),\n    (\"py:class\", \"http.client.HTTPMessage\"),\n    (\"py:class\", \"RequestHistory\"),\n    (\"py:class\", \"SSLTransportType\"),\n    (\"py:class\", \"VerifyMode\"),\n    (\"py:class\", \"_ssl._SSLContext\"),\n    (\"py:class\", \"urllib3._collections.HTTPHeaderDict\"),\n    (\"py:class\", \"urllib3._collections.RecentlyUsedContainer\"),\n    (\"py:class\", \"urllib3._request_methods.RequestMethods\"),\n    (\"py:class\", \"urllib3.contrib.socks._TYPE_SOCKS_OPTIONS\"),\n    (\"py:class\", \"urllib3.util.timeout._TYPE_DEFAULT\"),\n    (\"py:class\", \"BaseHTTPConnection\"),\n]\n", "path": "docs/conf.py"}]}