We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Documentation Updates Megaissue
While working on #1915 I've run into some areas where the documentation is lacking. This issue is a list of topics that I think need work.  It may change over time.

- [x] `public` and `constant` as methods applied to storage variables
- [x] `self`
- [x] assignment
- [x] statements, expressions, control structure
- [x] scoping rules
- [x] `for` loops
- [x] tuples
- [x] contract objects
- [ ] memory layout of data types
- [ ] pass-by-reference / pass-by-value
- [ ] abi format
- [x] arithmetic functions (should be moved from types to builtin functions)
- [x] allowable literals for each type
- [x] examples for each of the builtin functions
- [x] `__init__` method

--- 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 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 #
4 # Vyper documentation build configuration file, created by
5 # sphinx-quickstart on Wed Jul 26 11:18:29 2017.
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 from recommonmark.parser import CommonMarkParser
24 
25 # TO DO - Create and Implement Vyper Lexer
26 # def setup(sphinx):
27 #     sys.path.insert(0, os.path.abspath('./utils'))
28 #     from SolidityLexer import SolidityLexer
29 #     sphinx.add_lexer('Python', SolidityLexer())
30 
31 
32 # -- General configuration ------------------------------------------------
33 
34 # If your documentation needs a minimal Sphinx version, state it here.
35 #
36 # needs_sphinx = '1.0'
37 
38 # Add any Sphinx extension module names here, as strings. They can be
39 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
40 # ones.
41 extensions = [
42     "sphinx.ext.autodoc",
43     "sphinx.ext.intersphinx",
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 = "Vyper"
60 copyright = "2017-2020 CC-BY-4.0 Vyper Team"
61 author = "Vyper Team (originally created by Vitalik Buterin)"
62 
63 # The version info for the project you're documenting, acts as replacement for
64 # |version| and |release|, also used in various other places throughout the
65 # built documents.
66 #
67 # The short X.Y version.
68 version = ""
69 # The full version, including alpha/beta/rc tags.
70 release = ""
71 
72 # The language for content autogenerated by Sphinx. Refer to documentation
73 # for a list of supported languages.
74 #
75 # This is also used if you do content translation via gettext catalogs.
76 # Usually you set "language" from the command line for these cases.
77 language = "python"
78 
79 # List of patterns, relative to source directory, that match files and
80 # directories to ignore when looking for source files.
81 # This patterns also effect to html_static_path and html_extra_path
82 exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
83 
84 # The name of the Pygments (syntax highlighting) style to use.
85 pygments_style = "sphinx"
86 
87 # If true, `todo` and `todoList` produce output, else they produce nothing.
88 todo_include_todos = False
89 
90 
91 # -- Options for HTML output ----------------------------------------------
92 
93 # The theme to use for HTML and HTML Help pages.  See the documentation for
94 # a list of builtin themes.
95 #
96 html_theme = "sphinx_rtd_theme"
97 
98 # Theme options are theme-specific and customize the look and feel of a theme
99 # further.  For a list of options available for each theme, see the
100 # documentation.
101 #
102 # html_theme_options = {}
103 
104 # Add any paths that contain custom static files (such as style sheets) here,
105 # relative to this directory. They are copied after the builtin static files,
106 # so a file named "default.css" will overwrite the builtin "default.css".
107 html_static_path = ["_static"]
108 
109 html_css_files = ["css/toggle.css", "css/dark.css"]
110 
111 html_js_files = ["js/toggle.js"]
112 
113 # Custom sidebar templates, must be a dictionary that maps document names
114 # to template names.
115 #
116 # The default sidebars (for documents that don't match any pattern) are
117 # defined by theme itself.  Builtin themes are using these templates by
118 # default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
119 # 'searchbox.html']``.
120 #
121 # html_sidebars = {}
122 
123 
124 # -- Options for HTMLHelp output ------------------------------------------
125 
126 # Output file base name for HTML help builder.
127 htmlhelp_basename = "Vyperdoc"
128 
129 
130 # -- Options for LaTeX output ---------------------------------------------
131 
132 latex_elements = {
133     # The paper size ('letterpaper' or 'a4paper').
134     #
135     # 'papersize': 'letterpaper',
136     # The font size ('10pt', '11pt' or '12pt').
137     #
138     # 'pointsize': '10pt',
139     # Additional stuff for the LaTeX preamble.
140     #
141     # 'preamble': '',
142     # Latex figure (float) alignment
143     #
144     # 'figure_align': 'htbp',
145 }
146 
147 # Grouping the document tree into LaTeX files. List of tuples
148 # (source start file, target name, title,
149 #  author, documentclass [howto, manual, or own class]).
150 latex_documents = [
151     (
152         master_doc,
153         "Vyper.tex",
154         "Vyper Documentation",
155         "Vyper Team (originally created by Vitalik Buterin)",
156         "manual",
157     ),
158 ]
159 
160 
161 # -- Options for manual page output ---------------------------------------
162 
163 # One entry per manual page. List of tuples
164 # (source start file, name, description, authors, manual section).
165 man_pages = [(master_doc, "vyper", "Vyper Documentation", [author], 1)]
166 
167 
168 # -- Options for Texinfo output -------------------------------------------
169 
170 # Grouping the document tree into Texinfo files. List of tuples
171 # (source start file, target name, title, author,
172 #  dir menu entry, description, category)
173 texinfo_documents = [
174     (
175         master_doc,
176         "Vyper",
177         "Vyper Documentation",
178         author,
179         "Vyper",
180         "One line description of project.",
181         "Miscellaneous",
182     ),
183 ]
184 
185 source_parsers = {
186     ".md": CommonMarkParser,
187 }
188 
189 source_suffix = [".rst", ".md"]
190 
191 intersphinx_mapping = {
192     "brownie": ("https://eth-brownie.readthedocs.io/en/stable", None),
193     "pytest": ("https://docs.pytest.org/en/latest/", None),
194     "python": ("https://docs.python.org/3.8/", None),
195 }
196
```
--- 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/docs/conf.py b/docs/conf.py
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -49,11 +49,10 @@
 # The suffix(es) of source filenames.
 # You can specify multiple suffix as a list of string:
 #
-# source_suffix = ['.rst', '.md']
-source_suffix = ".rst"
+source_suffix = [".rst", ".md"]
 
 # The master toctree document.
-master_doc = "index"
+master_doc = "toctree"
 
 # General information about the project.
 project = "Vyper"
@@ -110,6 +109,8 @@
 
 html_js_files = ["js/toggle.js"]
 
+html_logo = "vyper-logo-transparent.svg"
+
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
 #
@@ -129,7 +130,7 @@
 
 # -- Options for LaTeX output ---------------------------------------------
 
-latex_elements = {
+latex_elements: dict = {
     # The paper size ('letterpaper' or 'a4paper').
     #
     # 'papersize': 'letterpaper',
@@ -186,8 +187,6 @@
     ".md": CommonMarkParser,
 }
 
-source_suffix = [".rst", ".md"]
-
 intersphinx_mapping = {
     "brownie": ("https://eth-brownie.readthedocs.io/en/stable", None),
     "pytest": ("https://docs.pytest.org/en/latest/", None),

{"golden_diff": "diff --git a/docs/conf.py b/docs/conf.py\n--- a/docs/conf.py\n+++ b/docs/conf.py\n@@ -49,11 +49,10 @@\n # The suffix(es) of source filenames.\n # You can specify multiple suffix as a list of string:\n #\n-# source_suffix = ['.rst', '.md']\n-source_suffix = \".rst\"\n+source_suffix = [\".rst\", \".md\"]\n \n # The master toctree document.\n-master_doc = \"index\"\n+master_doc = \"toctree\"\n \n # General information about the project.\n project = \"Vyper\"\n@@ -110,6 +109,8 @@\n \n html_js_files = [\"js/toggle.js\"]\n \n+html_logo = \"vyper-logo-transparent.svg\"\n+\n # Custom sidebar templates, must be a dictionary that maps document names\n # to template names.\n #\n@@ -129,7 +130,7 @@\n \n # -- Options for LaTeX output ---------------------------------------------\n \n-latex_elements = {\n+latex_elements: dict = {\n     # The paper size ('letterpaper' or 'a4paper').\n     #\n     # 'papersize': 'letterpaper',\n@@ -186,8 +187,6 @@\n     \".md\": CommonMarkParser,\n }\n \n-source_suffix = [\".rst\", \".md\"]\n-\n intersphinx_mapping = {\n     \"brownie\": (\"https://eth-brownie.readthedocs.io/en/stable\", None),\n     \"pytest\": (\"https://docs.pytest.org/en/latest/\", None),\n", "issue": "Documentation Updates Megaissue\nWhile working on #1915 I've run into some areas where the documentation is lacking. This issue is a list of topics that I think need work.  It may change over time.\r\n\r\n- [x] `public` and `constant` as methods applied to storage variables\r\n- [x] `self`\r\n- [x] assignment\r\n- [x] statements, expressions, control structure\r\n- [x] scoping rules\r\n- [x] `for` loops\r\n- [x] tuples\r\n- [x] contract objects\r\n- [ ] memory layout of data types\r\n- [ ] pass-by-reference / pass-by-value\r\n- [ ] abi format\r\n- [x] arithmetic functions (should be moved from types to builtin functions)\r\n- [x] allowable literals for each type\r\n- [x] examples for each of the builtin functions\r\n- [x] `__init__` method\n", "before_files": [{"content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# Vyper documentation build configuration file, created by\n# sphinx-quickstart on Wed Jul 26 11:18:29 2017.\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('.'))\nfrom recommonmark.parser import CommonMarkParser\n\n# TO DO - Create and Implement Vyper Lexer\n# def setup(sphinx):\n#     sys.path.insert(0, os.path.abspath('./utils'))\n#     from SolidityLexer import SolidityLexer\n#     sphinx.add_lexer('Python', SolidityLexer())\n\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    \"sphinx.ext.autodoc\",\n    \"sphinx.ext.intersphinx\",\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 = \"Vyper\"\ncopyright = \"2017-2020 CC-BY-4.0 Vyper Team\"\nauthor = \"Vyper Team (originally created by Vitalik Buterin)\"\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 = \"\"\n# The full version, including alpha/beta/rc tags.\nrelease = \"\"\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 = \"python\"\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 name of the Pygments (syntax highlighting) style to use.\npygments_style = \"sphinx\"\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 = \"sphinx_rtd_theme\"\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#\n# html_theme_options = {}\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\nhtml_css_files = [\"css/toggle.css\", \"css/dark.css\"]\n\nhtml_js_files = [\"js/toggle.js\"]\n\n# Custom sidebar templates, must be a dictionary that maps document names\n# to template names.\n#\n# The default sidebars (for documents that don't match any pattern) are\n# defined by theme itself.  Builtin themes are using these templates by\n# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',\n# 'searchbox.html']``.\n#\n# html_sidebars = {}\n\n\n# -- Options for HTMLHelp output ------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = \"Vyperdoc\"\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    (\n        master_doc,\n        \"Vyper.tex\",\n        \"Vyper Documentation\",\n        \"Vyper Team (originally created by Vitalik Buterin)\",\n        \"manual\",\n    ),\n]\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, \"vyper\", \"Vyper 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        \"Vyper\",\n        \"Vyper Documentation\",\n        author,\n        \"Vyper\",\n        \"One line description of project.\",\n        \"Miscellaneous\",\n    ),\n]\n\nsource_parsers = {\n    \".md\": CommonMarkParser,\n}\n\nsource_suffix = [\".rst\", \".md\"]\n\nintersphinx_mapping = {\n    \"brownie\": (\"https://eth-brownie.readthedocs.io/en/stable\", None),\n    \"pytest\": (\"https://docs.pytest.org/en/latest/\", None),\n    \"python\": (\"https://docs.python.org/3.8/\", None),\n}\n", "path": "docs/conf.py"}], "after_files": [{"content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# Vyper documentation build configuration file, created by\n# sphinx-quickstart on Wed Jul 26 11:18:29 2017.\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('.'))\nfrom recommonmark.parser import CommonMarkParser\n\n# TO DO - Create and Implement Vyper Lexer\n# def setup(sphinx):\n#     sys.path.insert(0, os.path.abspath('./utils'))\n#     from SolidityLexer import SolidityLexer\n#     sphinx.add_lexer('Python', SolidityLexer())\n\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    \"sphinx.ext.autodoc\",\n    \"sphinx.ext.intersphinx\",\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#\nsource_suffix = [\".rst\", \".md\"]\n\n# The master toctree document.\nmaster_doc = \"toctree\"\n\n# General information about the project.\nproject = \"Vyper\"\ncopyright = \"2017-2020 CC-BY-4.0 Vyper Team\"\nauthor = \"Vyper Team (originally created by Vitalik Buterin)\"\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 = \"\"\n# The full version, including alpha/beta/rc tags.\nrelease = \"\"\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 = \"python\"\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 name of the Pygments (syntax highlighting) style to use.\npygments_style = \"sphinx\"\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 = \"sphinx_rtd_theme\"\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#\n# html_theme_options = {}\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\nhtml_css_files = [\"css/toggle.css\", \"css/dark.css\"]\n\nhtml_js_files = [\"js/toggle.js\"]\n\nhtml_logo = \"vyper-logo-transparent.svg\"\n\n# Custom sidebar templates, must be a dictionary that maps document names\n# to template names.\n#\n# The default sidebars (for documents that don't match any pattern) are\n# defined by theme itself.  Builtin themes are using these templates by\n# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',\n# 'searchbox.html']``.\n#\n# html_sidebars = {}\n\n\n# -- Options for HTMLHelp output ------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = \"Vyperdoc\"\n\n\n# -- Options for LaTeX output ---------------------------------------------\n\nlatex_elements: dict = {\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    (\n        master_doc,\n        \"Vyper.tex\",\n        \"Vyper Documentation\",\n        \"Vyper Team (originally created by Vitalik Buterin)\",\n        \"manual\",\n    ),\n]\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, \"vyper\", \"Vyper 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        \"Vyper\",\n        \"Vyper Documentation\",\n        author,\n        \"Vyper\",\n        \"One line description of project.\",\n        \"Miscellaneous\",\n    ),\n]\n\nsource_parsers = {\n    \".md\": CommonMarkParser,\n}\n\nintersphinx_mapping = {\n    \"brownie\": (\"https://eth-brownie.readthedocs.io/en/stable\", None),\n    \"pytest\": (\"https://docs.pytest.org/en/latest/\", None),\n    \"python\": (\"https://docs.python.org/3.8/\", None),\n}\n", "path": "docs/conf.py"}]}