chore: migrate default branch to main (#264)

diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index 8b9fd8a..0394c8a 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -41,7 +41,7 @@
 python3 -m nox --version
 
 # If this is a continuous build, send the test log to the FlakyBot.
-# See https://github.com/googleapis/repo-automation-bots/tree/master/packages/flakybot.
+# See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
 if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"continuous"* ]]; then
   cleanup() {
     chmod +x $KOKORO_GFILE_DIR/linux_amd64/flakybot
diff --git a/.kokoro/test-samples-impl.sh b/.kokoro/test-samples-impl.sh
index 311a8d5..8a324c9 100755
--- a/.kokoro/test-samples-impl.sh
+++ b/.kokoro/test-samples-impl.sh
@@ -80,7 +80,7 @@
     EXIT=$?
 
     # If this is a periodic build, send the test log to the FlakyBot.
-    # See https://github.com/googleapis/repo-automation-bots/tree/master/packages/flakybot.
+    # See https://github.com/googleapis/repo-automation-bots/tree/main/packages/flakybot.
     if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"periodic"* ]]; then
       chmod +x $KOKORO_GFILE_DIR/linux_amd64/flakybot
       $KOKORO_GFILE_DIR/linux_amd64/flakybot
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 358404f..6db668e 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -49,9 +49,9 @@
    # Configure remotes such that you can pull changes from the googleapis/python-api-core
    # repository into your local repository.
    $ git remote add upstream git@github.com:googleapis/python-api-core.git
-   # fetch and merge changes from upstream into master
+   # fetch and merge changes from upstream into main
    $ git fetch upstream
-   $ git merge upstream/master
+   $ git merge upstream/main
 
 Now your local repo is set up such that you will push changes to your GitHub
 repo, from which you can submit a pull request.
@@ -109,12 +109,12 @@
   variables::
 
    export GOOGLE_CLOUD_TESTING_REMOTE="upstream"
-   export GOOGLE_CLOUD_TESTING_BRANCH="master"
+   export GOOGLE_CLOUD_TESTING_BRANCH="main"
 
   By doing this, you are specifying the location of the most up-to-date
   version of ``python-api-core``. The the suggested remote name ``upstream``
   should point to the official ``googleapis`` checkout and the
-  the branch should be the main branch on that remote (``master``).
+  the branch should be the main branch on that remote (``main``).
 
 - This repository contains configuration for the
   `pre-commit <https://pre-commit.com/>`__ tool, which automates checking
@@ -185,7 +185,7 @@
 ``README``. Due to the reStructuredText (``rst``) parser used by
 PyPI, relative links which will work on GitHub (e.g. ``CONTRIBUTING.rst``
 instead of
-``https://github.com/googleapis/python-api-core/blob/master/CONTRIBUTING.rst``)
+``https://github.com/googleapis/python-api-core/blob/main/CONTRIBUTING.rst``)
 may cause problems creating links or rendering the description.
 
 .. _description on PyPI: https://pypi.org/project/google-api-core
@@ -210,7 +210,7 @@
 
 Supported versions can be found in our ``noxfile.py`` `config`_.
 
-.. _config: https://github.com/googleapis/python-api-core/blob/master/noxfile.py
+.. _config: https://github.com/googleapis/python-api-core/blob/main/noxfile.py
 
 
 We also explicitly decided to support Python 3 beginning with version 3.6.
diff --git a/docs/conf.py b/docs/conf.py
index aec958f..09f0c2b 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -76,8 +76,8 @@
 # The encoding of source files.
 # source_encoding = 'utf-8-sig'
 
-# The master toctree document.
-master_doc = "index"
+# The root toctree document.
+root_doc = "index"
 
 # General information about the project.
 project = "google-api-core"
@@ -280,7 +280,7 @@
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
     (
-        master_doc,
+        root_doc,
         "google-api-core.tex",
         "google-api-core Documentation",
         author,
@@ -314,7 +314,7 @@
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    (master_doc, "google-api-core", "google-api-core Documentation", [author], 1,)
+    (root_doc, "google-api-core", "google-api-core Documentation", [author], 1,)
 ]
 
 # If true, show URL addresses after external links.
@@ -328,7 +328,7 @@
 #  dir menu entry, description, category)
 texinfo_documents = [
     (
-        master_doc,
+        root_doc,
         "google-api-core",
         "google-api-core Documentation",
         author,
diff --git a/google/api_core/exceptions.py b/google/api_core/exceptions.py
index 13be917..b0909f1 100644
--- a/google/api_core/exceptions.py
+++ b/google/api_core/exceptions.py
@@ -293,8 +293,7 @@
     """Exception mapping a :attr:`grpc.StatusCode.CANCELLED` error."""
 
     # This maps to HTTP status code 499. See
-    # https://github.com/googleapis/googleapis/blob/master/google/rpc\
-    # /code.proto
+    # https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
     code = 499
     grpc_status_code = grpc.StatusCode.CANCELLED if grpc is not None else None
 
diff --git a/google/api_core/future/async_future.py b/google/api_core/future/async_future.py
index 0343fbe..88c183f 100644
--- a/google/api_core/future/async_future.py
+++ b/google/api_core/future/async_future.py
@@ -43,8 +43,10 @@
     The :meth:`done` method should be implemented by subclasses. The polling
     behavior will repeatedly call ``done`` until it returns True.
 
-    .. note: Privacy here is intended to prevent the final class from
-      overexposing, not to prevent subclasses from accessing methods.
+    .. note::
+
+        Privacy here is intended to prevent the final class from
+        overexposing, not to prevent subclasses from accessing methods.
 
     Args:
         retry (google.api_core.retry.Retry): The retry configuration used
diff --git a/google/api_core/future/polling.py b/google/api_core/future/polling.py
index 2f80efb..02e680f 100644
--- a/google/api_core/future/polling.py
+++ b/google/api_core/future/polling.py
@@ -45,8 +45,10 @@
     The :meth:`done` method should be implemented by subclasses. The polling
     behavior will repeatedly call ``done`` until it returns True.
 
-    .. note: Privacy here is intended to prevent the final class from
-      overexposing, not to prevent subclasses from accessing methods.
+    .. note::
+
+        Privacy here is intended to prevent the final class from
+        overexposing, not to prevent subclasses from accessing methods.
 
     Args:
         retry (google.api_core.retry.Retry): The retry configuration used
diff --git a/noxfile.py b/noxfile.py
index 84470f5..6478bfd 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -29,7 +29,17 @@
 DEFAULT_PYTHON_VERSION = "3.7"
 CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute()
 
-_MINIMAL_ASYNCIO_SUPPORT_PYTHON_VERSION = [3, 6]
+# 'docfx' is excluded since it only needs to run in 'docs-presubmit'
+nox.options.sessions = [
+    "unit",
+    "unit_grpc_gcp",
+    "cover",
+    "pytype",
+    "lint",
+    "lint_setup_py",
+    "blacken",
+    "docs",
+]
 
 
 def _greater_or_equal_than_36(version_string):
diff --git a/owlbot.py b/owlbot.py
index 451f7c4..a2f0459 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -44,4 +44,49 @@
 """,
 )
 
+# Remove the replacements below once https://github.com/googleapis/synthtool/pull/1188 is merged
+
+# Update googleapis/repo-automation-bots repo to main in .kokoro/*.sh files
+s.replace(
+    ".kokoro/*.sh", "repo-automation-bots/tree/master", "repo-automation-bots/tree/main"
+)
+
+# Customize CONTRIBUTING.rst to replace master with main
+s.replace(
+    "CONTRIBUTING.rst",
+    "fetch and merge changes from upstream into master",
+    "fetch and merge changes from upstream into main",
+)
+
+s.replace(
+    "CONTRIBUTING.rst", "git merge upstream/master", "git merge upstream/main",
+)
+
+s.replace(
+    "CONTRIBUTING.rst",
+    """export GOOGLE_CLOUD_TESTING_BRANCH=\"master\"""",
+    """export GOOGLE_CLOUD_TESTING_BRANCH=\"main\"""",
+)
+
+s.replace(
+    "CONTRIBUTING.rst", r"remote \(``master``\)", "remote (``main``)",
+)
+
+s.replace(
+    "CONTRIBUTING.rst", "blob/master/CONTRIBUTING.rst", "blob/main/CONTRIBUTING.rst",
+)
+
+s.replace(
+    "CONTRIBUTING.rst", "blob/master/noxfile.py", "blob/main/noxfile.py",
+)
+
+s.replace(
+    "docs/conf.py", "master_doc", "root_doc",
+)
+
+s.replace(
+    "docs/conf.py", "# The master toctree document.", "# The root toctree document.",
+)
+
+
 s.shell.run(["nox", "-s", "blacken"], hide_output=False)