We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add airquality wp6003 + am312 tutorial
Add air quality + am312 tutorial

## Description:


**Related issue (if applicable):** fixes <link to issue>

**Pull request in [esphome](https://github.com/esphome/esphome) with YAML changes (if applicable):** esphome/esphome#<esphome PR number goes here>

## Checklist:

  - [ ] Branch: `next` is for changes and new documentation that will go public with the next ESPHome release. Fixes, changes and adjustments for the current release should be created against `current`.
  - [ ] Link added in `/index.rst` when creating new documents for new components or cookbook.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `conf.py`
Content:
```
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 #
4 # esphome documentation build configuration file, created by
5 # sphinx-quickstart on Mon Jan 22 21:44:07 2018.
6 #
7 # This file is execfile()d with the current directory set to its
8 # containing dir.
9 #
10 # Note that not all possible configuration values are present in this
11 # autogenerated file.
12 #
13 # All configuration values have a default; values that are commented out
14 # serve to show the default.
15 
16 # If extensions (or modules to document with autodoc) are in another directory,
17 # add these directories to sys.path here. If the directory is relative to the
18 # documentation root, use os.path.abspath to make it absolute, like shown here.
19 #
20 # import os
21 # import sys
22 # sys.path.insert(0, os.path.abspath('.'))
23 import hashlib
24 import os
25 import sys
26 
27 
28 sys.path.append(os.path.abspath("."))
29 
30 # -- General configuration ------------------------------------------------
31 
32 # If your documentation needs a minimal Sphinx version, state it here.
33 #
34 # needs_sphinx = '1.0'
35 
36 # Add any Sphinx extension module names here, as strings. They can be
37 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
38 # ones.
39 extensions = [
40     "github",
41     "seo",
42     "sitemap",
43     "schema_doc",
44 ]
45 
46 # Add any paths that contain templates here, relative to this directory.
47 templates_path = ["_templates"]
48 
49 # The suffix(es) of source filenames.
50 # You can specify multiple suffix as a list of string:
51 #
52 # source_suffix = ['.rst', '.md']
53 source_suffix = ".rst"
54 
55 # The master toctree document.
56 master_doc = "index"
57 
58 # General information about the project.
59 project = "ESPHome"
60 copyright = "2019, Otto Winter"
61 html_show_copyright = False
62 html_show_sphinx = False
63 author = "Otto Winter"
64 
65 # The version info for the project you're documenting, acts as replacement for
66 # |version| and |release|, also used in various other places throughout the
67 # built documents.
68 #
69 # The short X.Y version.
70 version = "1.17"
71 # The full version, including alpha/beta/rc tags.
72 release = "1.17.2"
73 
74 # The language for content autogenerated by Sphinx. Refer to documentation
75 # for a list of supported languages.
76 #
77 # This is also used if you do content translation via gettext catalogs.
78 # Usually you set "language" from the command line for these cases.
79 language = "en"
80 
81 # List of patterns, relative to source directory, that match files and
82 # directories to ignore when looking for source files.
83 # This patterns also effect to html_static_path and html_extra_path
84 exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
85 
86 # The reST default role (used for this markup: `text`) to use for all documents.
87 # default_role = 'cpp:any'
88 
89 # The name of the Pygments (syntax highlighting) style to use.
90 pygments_style = "xcode"
91 
92 highlight_language = "yaml"
93 
94 primary_domain = None
95 
96 # If true, `todo` and `todoList` produce output, else they produce nothing.
97 todo_include_todos = False
98 
99 
100 # -- Options for HTML output ----------------------------------------------
101 
102 # The theme to use for HTML and HTML Help pages.  See the documentation for
103 # a list of builtin themes.
104 #
105 html_theme = "alabaster"
106 
107 # Theme options are theme-specific and customize the look and feel of a theme
108 # further.  For a list of options available for each theme, see the
109 # documentation.
110 #
111 html_baseurl = os.getenv("BASE_URL", "https://esphome.io")
112 with open("_static/custom.css", "rb") as f:
113     custom_css_hash = hashlib.md5(f.read()).hexdigest()[:8]
114 
115 html_theme_options = {
116     # 'logo': 'logo-full.png',
117     "logo_name": False,
118     "show_related": False,
119     "sidebar_collapse": True,
120     "fixed_sidebar": True,
121     "show_powered_by": False,
122 }
123 
124 html_context = {
125     "custom_css_hash": custom_css_hash,
126 }
127 
128 html_logo = "images/logo-text.svg"
129 html_copy_source = True
130 html_show_sourcelink = False
131 html_last_updated_fmt = None
132 html_use_smartypants = False
133 html_title = "ESPHome"
134 
135 # Add any paths that contain custom static files (such as style sheets) here,
136 # relative to this directory. They are copied after the builtin static files,
137 # so a file named "default.css" will overwrite the builtin "default.css".
138 html_static_path = ["_static"]
139 
140 # Custom sidebar templates, must be a dictionary that maps document names
141 # to template names.
142 #
143 # This is required for the alabaster theme
144 # refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
145 html_sidebars = {
146     "**": [
147         # 'about.html',
148         "searchbox.html",
149         "localtoc.html",
150     ]
151 }
152 
153 
154 # -- Options for HTMLHelp output ------------------------------------------
155 
156 # Output file base name for HTML help builder.
157 htmlhelp_basename = "esphomedoc"
158 
159 
160 # -- Options for LaTeX output ---------------------------------------------
161 
162 latex_elements = {
163     # The paper size ('letterpaper' or 'a4paper').
164     #
165     # 'papersize': 'letterpaper',
166     # The font size ('10pt', '11pt' or '12pt').
167     #
168     # 'pointsize': '10pt',
169     # Additional stuff for the LaTeX preamble.
170     #
171     # 'preamble': '',
172     # Latex figure (float) alignment
173     #
174     # 'figure_align': 'htbp',
175 }
176 
177 # Grouping the document tree into LaTeX files. List of tuples
178 # (source start file, target name, title,
179 #  author, documentclass [howto, manual, or own class]).
180 latex_documents = [
181     (master_doc, "esphome.tex", "ESPHome Documentation", "Otto Winter", "manual"),
182 ]
183 
184 latex_engine = "xelatex"
185 
186 
187 # -- Options for manual page output ---------------------------------------
188 
189 # One entry per manual page. List of tuples
190 # (source start file, name, description, authors, manual section).
191 man_pages = [(master_doc, "esphome", "ESPHome Documentation", [author], 1)]
192 
193 
194 # -- Options for Texinfo output -------------------------------------------
195 
196 # Grouping the document tree into Texinfo files. List of tuples
197 # (source start file, target name, title, author,
198 #  dir menu entry, description, category)
199 texinfo_documents = [
200     (
201         master_doc,
202         "esphome",
203         "ESPHome Documentation",
204         author,
205         "esphome",
206         "One line description of project.",
207         "Miscellaneous",
208     ),
209 ]
210 linkcheck_ignore = [r"https://github.com/.*", r"https://discord.gg/.*"]
211
```
--- 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/conf.py b/conf.py
--- a/conf.py
+++ b/conf.py
@@ -67,9 +67,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = "1.17"
+version = "1.18"
 # The full version, including alpha/beta/rc tags.
-release = "1.17.2"
+release = "1.18.0"
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.

{"golden_diff": "diff --git a/conf.py b/conf.py\n--- a/conf.py\n+++ b/conf.py\n@@ -67,9 +67,9 @@\n # built documents.\n #\n # The short X.Y version.\n-version = \"1.17\"\n+version = \"1.18\"\n # The full version, including alpha/beta/rc tags.\n-release = \"1.17.2\"\n+release = \"1.18.0\"\n \n # The language for content autogenerated by Sphinx. Refer to documentation\n # for a list of supported languages.\n", "issue": "Add airquality wp6003 + am312 tutorial\nAdd air quality + am312 tutorial\r\n\r\n## Description:\r\n\r\n\r\n**Related issue (if applicable):** fixes <link to issue>\r\n\r\n**Pull request in [esphome](https://github.com/esphome/esphome) with YAML changes (if applicable):** esphome/esphome#<esphome PR number goes here>\r\n\r\n## Checklist:\r\n\r\n  - [ ] Branch: `next` is for changes and new documentation that will go public with the next ESPHome release. Fixes, changes and adjustments for the current release should be created against `current`.\r\n  - [ ] Link added in `/index.rst` when creating new documents for new components or cookbook.\r\n\n", "before_files": [{"content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# esphome documentation build configuration file, created by\n# sphinx-quickstart on Mon Jan 22 21:44:07 2018.\n#\n# This file is execfile()d with the current directory set to its\n# containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\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#\n# import os\n# import sys\n# sys.path.insert(0, os.path.abspath('.'))\nimport hashlib\nimport os\nimport sys\n\n\nsys.path.append(os.path.abspath(\".\"))\n\n# -- General configuration ------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#\n# needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n    \"github\",\n    \"seo\",\n    \"sitemap\",\n    \"schema_doc\",\n]\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = [\"_templates\"]\n\n# The suffix(es) of source filenames.\n# You can specify multiple suffix as a list of string:\n#\n# source_suffix = ['.rst', '.md']\nsource_suffix = \".rst\"\n\n# The master toctree document.\nmaster_doc = \"index\"\n\n# General information about the project.\nproject = \"ESPHome\"\ncopyright = \"2019, Otto Winter\"\nhtml_show_copyright = False\nhtml_show_sphinx = False\nauthor = \"Otto Winter\"\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n# The short X.Y version.\nversion = \"1.17\"\n# The full version, including alpha/beta/rc tags.\nrelease = \"1.17.2\"\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = \"en\"\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This patterns also effect to html_static_path and html_extra_path\nexclude_patterns = [\"_build\", \"Thumbs.db\", \".DS_Store\"]\n\n# The reST default role (used for this markup: `text`) to use for all documents.\n# default_role = 'cpp:any'\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = \"xcode\"\n\nhighlight_language = \"yaml\"\n\nprimary_domain = None\n\n# If true, `todo` and `todoList` produce output, else they produce nothing.\ntodo_include_todos = False\n\n\n# -- Options for HTML output ----------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = \"alabaster\"\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#\nhtml_baseurl = os.getenv(\"BASE_URL\", \"https://esphome.io\")\nwith open(\"_static/custom.css\", \"rb\") as f:\n    custom_css_hash = hashlib.md5(f.read()).hexdigest()[:8]\n\nhtml_theme_options = {\n    # 'logo': 'logo-full.png',\n    \"logo_name\": False,\n    \"show_related\": False,\n    \"sidebar_collapse\": True,\n    \"fixed_sidebar\": True,\n    \"show_powered_by\": False,\n}\n\nhtml_context = {\n    \"custom_css_hash\": custom_css_hash,\n}\n\nhtml_logo = \"images/logo-text.svg\"\nhtml_copy_source = True\nhtml_show_sourcelink = False\nhtml_last_updated_fmt = None\nhtml_use_smartypants = False\nhtml_title = \"ESPHome\"\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = [\"_static\"]\n\n# Custom sidebar templates, must be a dictionary that maps document names\n# to template names.\n#\n# This is required for the alabaster theme\n# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars\nhtml_sidebars = {\n    \"**\": [\n        # 'about.html',\n        \"searchbox.html\",\n        \"localtoc.html\",\n    ]\n}\n\n\n# -- Options for HTMLHelp output ------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = \"esphomedoc\"\n\n\n# -- Options for LaTeX output ---------------------------------------------\n\nlatex_elements = {\n    # The paper size ('letterpaper' or 'a4paper').\n    #\n    # 'papersize': 'letterpaper',\n    # The font size ('10pt', '11pt' or '12pt').\n    #\n    # 'pointsize': '10pt',\n    # Additional stuff for the LaTeX preamble.\n    #\n    # 'preamble': '',\n    # Latex figure (float) alignment\n    #\n    # 'figure_align': 'htbp',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title,\n#  author, documentclass [howto, manual, or own class]).\nlatex_documents = [\n    (master_doc, \"esphome.tex\", \"ESPHome Documentation\", \"Otto Winter\", \"manual\"),\n]\n\nlatex_engine = \"xelatex\"\n\n\n# -- Options for manual page output ---------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [(master_doc, \"esphome\", \"ESPHome Documentation\", [author], 1)]\n\n\n# -- Options for Texinfo output -------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    (\n        master_doc,\n        \"esphome\",\n        \"ESPHome Documentation\",\n        author,\n        \"esphome\",\n        \"One line description of project.\",\n        \"Miscellaneous\",\n    ),\n]\nlinkcheck_ignore = [r\"https://github.com/.*\", r\"https://discord.gg/.*\"]\n", "path": "conf.py"}], "after_files": [{"content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# esphome documentation build configuration file, created by\n# sphinx-quickstart on Mon Jan 22 21:44:07 2018.\n#\n# This file is execfile()d with the current directory set to its\n# containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\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#\n# import os\n# import sys\n# sys.path.insert(0, os.path.abspath('.'))\nimport hashlib\nimport os\nimport sys\n\n\nsys.path.append(os.path.abspath(\".\"))\n\n# -- General configuration ------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#\n# needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n    \"github\",\n    \"seo\",\n    \"sitemap\",\n    \"schema_doc\",\n]\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = [\"_templates\"]\n\n# The suffix(es) of source filenames.\n# You can specify multiple suffix as a list of string:\n#\n# source_suffix = ['.rst', '.md']\nsource_suffix = \".rst\"\n\n# The master toctree document.\nmaster_doc = \"index\"\n\n# General information about the project.\nproject = \"ESPHome\"\ncopyright = \"2019, Otto Winter\"\nhtml_show_copyright = False\nhtml_show_sphinx = False\nauthor = \"Otto Winter\"\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n# The short X.Y version.\nversion = \"1.18\"\n# The full version, including alpha/beta/rc tags.\nrelease = \"1.18.0\"\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = \"en\"\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This patterns also effect to html_static_path and html_extra_path\nexclude_patterns = [\"_build\", \"Thumbs.db\", \".DS_Store\"]\n\n# The reST default role (used for this markup: `text`) to use for all documents.\n# default_role = 'cpp:any'\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = \"xcode\"\n\nhighlight_language = \"yaml\"\n\nprimary_domain = None\n\n# If true, `todo` and `todoList` produce output, else they produce nothing.\ntodo_include_todos = False\n\n\n# -- Options for HTML output ----------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = \"alabaster\"\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#\nhtml_baseurl = os.getenv(\"BASE_URL\", \"https://esphome.io\")\nwith open(\"_static/custom.css\", \"rb\") as f:\n    custom_css_hash = hashlib.md5(f.read()).hexdigest()[:8]\n\nhtml_theme_options = {\n    # 'logo': 'logo-full.png',\n    \"logo_name\": False,\n    \"show_related\": False,\n    \"sidebar_collapse\": True,\n    \"fixed_sidebar\": True,\n    \"show_powered_by\": False,\n}\n\nhtml_context = {\n    \"custom_css_hash\": custom_css_hash,\n}\n\nhtml_logo = \"images/logo-text.svg\"\nhtml_copy_source = True\nhtml_show_sourcelink = False\nhtml_last_updated_fmt = None\nhtml_use_smartypants = False\nhtml_title = \"ESPHome\"\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = [\"_static\"]\n\n# Custom sidebar templates, must be a dictionary that maps document names\n# to template names.\n#\n# This is required for the alabaster theme\n# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars\nhtml_sidebars = {\n    \"**\": [\n        # 'about.html',\n        \"searchbox.html\",\n        \"localtoc.html\",\n    ]\n}\n\n\n# -- Options for HTMLHelp output ------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = \"esphomedoc\"\n\n\n# -- Options for LaTeX output ---------------------------------------------\n\nlatex_elements = {\n    # The paper size ('letterpaper' or 'a4paper').\n    #\n    # 'papersize': 'letterpaper',\n    # The font size ('10pt', '11pt' or '12pt').\n    #\n    # 'pointsize': '10pt',\n    # Additional stuff for the LaTeX preamble.\n    #\n    # 'preamble': '',\n    # Latex figure (float) alignment\n    #\n    # 'figure_align': 'htbp',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title,\n#  author, documentclass [howto, manual, or own class]).\nlatex_documents = [\n    (master_doc, \"esphome.tex\", \"ESPHome Documentation\", \"Otto Winter\", \"manual\"),\n]\n\nlatex_engine = \"xelatex\"\n\n\n# -- Options for manual page output ---------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [(master_doc, \"esphome\", \"ESPHome Documentation\", [author], 1)]\n\n\n# -- Options for Texinfo output -------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    (\n        master_doc,\n        \"esphome\",\n        \"ESPHome Documentation\",\n        author,\n        \"esphome\",\n        \"One line description of project.\",\n        \"Miscellaneous\",\n    ),\n]\nlinkcheck_ignore = [r\"https://github.com/.*\", r\"https://discord.gg/.*\"]\n", "path": "conf.py"}]}