We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Needs protobuf minimum version 3.12.0
If you are still having issues, please be sure to include as much information as possible:

#### Environment details

  - OS type and version: MacOS
  - Python version: `python --version` 3.8
  - pip version: `pip --version` 20.2.3
  - `google-cloud-bigquery` version: `pip show google-cloud-bigquery`  2.0.0

#### Steps to reproduce

  1. Just install the package, import somewhere and run it.

#### Code example

```python
from google.cloud import bigquery
```

#### Stack trace
```
File "/.../venv/lib/python3.8/site-packages/google/protobuf/internal/python_message.py", line 570, in _GetFieldByName
    return message_descriptor.fields_by_name[field_name]
KeyError: 'proto3_optional'

...

   from google.cloud import bigquery
  File "/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/__init__.py", line 35, in <module>
    from google.cloud.bigquery.client import Client
  File "/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/client.py", line 57, in <module>
    from google.cloud.bigquery import _pandas_helpers
  File "/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/_pandas_helpers.py", line 36, in <module>
    from google.cloud.bigquery import schema
  File "/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/schema.py", line 19, in <module>
    from google.cloud.bigquery_v2 import types
  File "/.../venv/lib/python3.8/site-packages/google/cloud/bigquery_v2/__init__.py", line 19, in <module>
    from .types.encryption_config import EncryptionConfiguration
  File "/.../venv/lib/python3.8/site-packages/google/cloud/bigquery_v2/types/__init__.py", line 18, in <module>
    from .encryption_config import EncryptionConfiguration
  File "/.../venv/lib/python3.8/site-packages/google/cloud/bigquery_v2/types/encryption_config.py", line 29, in <module>
    class EncryptionConfiguration(proto.Message):
  File "/.../venv/lib/python3.8/site-packages/proto/message.py", line 215, in __new__
    field=[i.descriptor for i in fields],
  File "/.../venv/lib/python3.8/site-packages/proto/message.py", line 215, in <listcomp>
    field=[i.descriptor for i in fields],
  File "/.../venv/lib/python3.8/site-packages/proto/fields.py", line 104, in descriptor
    self._descriptor = descriptor_pb2.FieldDescriptorProto(
  File "/.../venv/lib/python3.8/site-packages/google/protobuf/internal/python_message.py", line 509, in init
    field = _GetFieldByName(message_descriptor, field_name)
  File "/.../venv/lib/python3.8/site-packages/google/protobuf/internal/python_message.py", line 572, in _GetFieldByName
    raise ValueError('Protocol message %s has no "%s" field.' %
ValueError: Protocol message FieldDescriptorProto has no "proto3_optional" field.
```



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `setup.py`
Content:
```
1 # Copyright 2018 Google LLC
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 
15 import io
16 import os
17 
18 import setuptools
19 
20 
21 # Package metadata.
22 
23 name = "google-cloud-bigquery"
24 description = "Google BigQuery API client library"
25 
26 # Should be one of:
27 # 'Development Status :: 3 - Alpha'
28 # 'Development Status :: 4 - Beta'
29 # 'Development Status :: 5 - Production/Stable'
30 release_status = "Development Status :: 5 - Production/Stable"
31 dependencies = [
32     "google-api-core[grpc] >= 1.22.2, < 2.0.0dev",
33     "proto-plus >= 1.10.0",
34     "google-cloud-core >= 1.4.1, < 2.0dev",
35     "google-resumable-media >= 0.6.0, < 2.0dev",
36     "six >=1.13.0,< 2.0.0dev",
37 ]
38 extras = {
39     "bqstorage": [
40         "google-cloud-bigquery-storage >= 2.0.0, <3.0.0dev",
41         # Due to an issue in pip's dependency resolver, the `grpc` extra is not
42         # installed, even though `google-cloud-bigquery-storage` specifies it
43         # as `google-api-core[grpc]`. We thus need to explicitly specify it here.
44         # See: https://github.com/googleapis/python-bigquery/issues/83 The
45         # grpc.Channel.close() method isn't added until 1.32.0.
46         # https://github.com/grpc/grpc/pull/15254
47         "grpcio >= 1.32.0, < 2.0dev",
48         "pyarrow >= 1.0.0, < 2.0dev",
49     ],
50     "pandas": [
51         "pandas>=0.23.0",
52         # pyarrow 1.0.0 is required for the use of timestamp_as_object keyword.
53         "pyarrow >= 1.0.0, < 2.0dev",
54     ],
55     "tqdm": ["tqdm >= 4.7.4, <5.0.0dev"],
56     "opentelemetry": [
57         "opentelemetry-api==0.9b0",
58         "opentelemetry-sdk==0.9b0",
59         "opentelemetry-instrumentation==0.9b0 ",
60     ],
61 }
62 
63 all_extras = []
64 
65 for extra in extras:
66     all_extras.extend(extras[extra])
67 
68 extras["all"] = all_extras
69 
70 # Setup boilerplate below this line.
71 
72 package_root = os.path.abspath(os.path.dirname(__file__))
73 
74 readme_filename = os.path.join(package_root, "README.rst")
75 with io.open(readme_filename, encoding="utf-8") as readme_file:
76     readme = readme_file.read()
77 
78 version = {}
79 with open(os.path.join(package_root, "google/cloud/bigquery/version.py")) as fp:
80     exec(fp.read(), version)
81 version = version["__version__"]
82 
83 # Only include packages under the 'google' namespace. Do not include tests,
84 # benchmarks, etc.
85 packages = [
86     package
87     for package in setuptools.PEP420PackageFinder.find()
88     if package.startswith("google")
89 ]
90 
91 # Determine which namespaces are needed.
92 namespaces = ["google"]
93 if "google.cloud" in packages:
94     namespaces.append("google.cloud")
95 
96 
97 setuptools.setup(
98     name=name,
99     version=version,
100     description=description,
101     long_description=readme,
102     author="Google LLC",
103     author_email="googleapis-packages@google.com",
104     license="Apache 2.0",
105     url="https://github.com/googleapis/python-bigquery",
106     classifiers=[
107         release_status,
108         "Intended Audience :: Developers",
109         "License :: OSI Approved :: Apache Software License",
110         "Programming Language :: Python",
111         "Programming Language :: Python :: 3",
112         "Programming Language :: Python :: 3.6",
113         "Programming Language :: Python :: 3.7",
114         "Programming Language :: Python :: 3.8",
115         "Operating System :: OS Independent",
116         "Topic :: Internet",
117     ],
118     platforms="Posix; MacOS X; Windows",
119     packages=packages,
120     namespace_packages=namespaces,
121     install_requires=dependencies,
122     extras_require=extras,
123     python_requires=">=3.6",
124     include_package_data=True,
125     zip_safe=False,
126 )
127
```
--- 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/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -34,6 +34,7 @@
     "google-cloud-core >= 1.4.1, < 2.0dev",
     "google-resumable-media >= 0.6.0, < 2.0dev",
     "six >=1.13.0,< 2.0.0dev",
+    "protobuf >= 3.12.0",
 ]
 extras = {
     "bqstorage": [

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -34,6 +34,7 @@\n     \"google-cloud-core >= 1.4.1, < 2.0dev\",\n     \"google-resumable-media >= 0.6.0, < 2.0dev\",\n     \"six >=1.13.0,< 2.0.0dev\",\n+    \"protobuf >= 3.12.0\",\n ]\n extras = {\n     \"bqstorage\": [\n", "issue": "Needs protobuf minimum version 3.12.0\nIf you are still having issues, please be sure to include as much information as possible:\r\n\r\n#### Environment details\r\n\r\n  - OS type and version: MacOS\r\n  - Python version: `python --version` 3.8\r\n  - pip version: `pip --version` 20.2.3\r\n  - `google-cloud-bigquery` version: `pip show google-cloud-bigquery`  2.0.0\r\n\r\n#### Steps to reproduce\r\n\r\n  1. Just install the package, import somewhere and run it.\r\n\r\n#### Code example\r\n\r\n```python\r\nfrom google.cloud import bigquery\r\n```\r\n\r\n#### Stack trace\r\n```\r\nFile \"/.../venv/lib/python3.8/site-packages/google/protobuf/internal/python_message.py\", line 570, in _GetFieldByName\r\n    return message_descriptor.fields_by_name[field_name]\r\nKeyError: 'proto3_optional'\r\n\r\n...\r\n\r\n   from google.cloud import bigquery\r\n  File \"/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/__init__.py\", line 35, in <module>\r\n    from google.cloud.bigquery.client import Client\r\n  File \"/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/client.py\", line 57, in <module>\r\n    from google.cloud.bigquery import _pandas_helpers\r\n  File \"/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/_pandas_helpers.py\", line 36, in <module>\r\n    from google.cloud.bigquery import schema\r\n  File \"/.../venv/lib/python3.8/site-packages/google/cloud/bigquery/schema.py\", line 19, in <module>\r\n    from google.cloud.bigquery_v2 import types\r\n  File \"/.../venv/lib/python3.8/site-packages/google/cloud/bigquery_v2/__init__.py\", line 19, in <module>\r\n    from .types.encryption_config import EncryptionConfiguration\r\n  File \"/.../venv/lib/python3.8/site-packages/google/cloud/bigquery_v2/types/__init__.py\", line 18, in <module>\r\n    from .encryption_config import EncryptionConfiguration\r\n  File \"/.../venv/lib/python3.8/site-packages/google/cloud/bigquery_v2/types/encryption_config.py\", line 29, in <module>\r\n    class EncryptionConfiguration(proto.Message):\r\n  File \"/.../venv/lib/python3.8/site-packages/proto/message.py\", line 215, in __new__\r\n    field=[i.descriptor for i in fields],\r\n  File \"/.../venv/lib/python3.8/site-packages/proto/message.py\", line 215, in <listcomp>\r\n    field=[i.descriptor for i in fields],\r\n  File \"/.../venv/lib/python3.8/site-packages/proto/fields.py\", line 104, in descriptor\r\n    self._descriptor = descriptor_pb2.FieldDescriptorProto(\r\n  File \"/.../venv/lib/python3.8/site-packages/google/protobuf/internal/python_message.py\", line 509, in init\r\n    field = _GetFieldByName(message_descriptor, field_name)\r\n  File \"/.../venv/lib/python3.8/site-packages/google/protobuf/internal/python_message.py\", line 572, in _GetFieldByName\r\n    raise ValueError('Protocol message %s has no \"%s\" field.' %\r\nValueError: Protocol message FieldDescriptorProto has no \"proto3_optional\" field.\r\n```\r\n\r\n\n", "before_files": [{"content": "# Copyright 2018 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport io\nimport os\n\nimport setuptools\n\n\n# Package metadata.\n\nname = \"google-cloud-bigquery\"\ndescription = \"Google BigQuery API client library\"\n\n# Should be one of:\n# 'Development Status :: 3 - Alpha'\n# 'Development Status :: 4 - Beta'\n# 'Development Status :: 5 - Production/Stable'\nrelease_status = \"Development Status :: 5 - Production/Stable\"\ndependencies = [\n    \"google-api-core[grpc] >= 1.22.2, < 2.0.0dev\",\n    \"proto-plus >= 1.10.0\",\n    \"google-cloud-core >= 1.4.1, < 2.0dev\",\n    \"google-resumable-media >= 0.6.0, < 2.0dev\",\n    \"six >=1.13.0,< 2.0.0dev\",\n]\nextras = {\n    \"bqstorage\": [\n        \"google-cloud-bigquery-storage >= 2.0.0, <3.0.0dev\",\n        # Due to an issue in pip's dependency resolver, the `grpc` extra is not\n        # installed, even though `google-cloud-bigquery-storage` specifies it\n        # as `google-api-core[grpc]`. We thus need to explicitly specify it here.\n        # See: https://github.com/googleapis/python-bigquery/issues/83 The\n        # grpc.Channel.close() method isn't added until 1.32.0.\n        # https://github.com/grpc/grpc/pull/15254\n        \"grpcio >= 1.32.0, < 2.0dev\",\n        \"pyarrow >= 1.0.0, < 2.0dev\",\n    ],\n    \"pandas\": [\n        \"pandas>=0.23.0\",\n        # pyarrow 1.0.0 is required for the use of timestamp_as_object keyword.\n        \"pyarrow >= 1.0.0, < 2.0dev\",\n    ],\n    \"tqdm\": [\"tqdm >= 4.7.4, <5.0.0dev\"],\n    \"opentelemetry\": [\n        \"opentelemetry-api==0.9b0\",\n        \"opentelemetry-sdk==0.9b0\",\n        \"opentelemetry-instrumentation==0.9b0 \",\n    ],\n}\n\nall_extras = []\n\nfor extra in extras:\n    all_extras.extend(extras[extra])\n\nextras[\"all\"] = all_extras\n\n# Setup boilerplate below this line.\n\npackage_root = os.path.abspath(os.path.dirname(__file__))\n\nreadme_filename = os.path.join(package_root, \"README.rst\")\nwith io.open(readme_filename, encoding=\"utf-8\") as readme_file:\n    readme = readme_file.read()\n\nversion = {}\nwith open(os.path.join(package_root, \"google/cloud/bigquery/version.py\")) as fp:\n    exec(fp.read(), version)\nversion = version[\"__version__\"]\n\n# Only include packages under the 'google' namespace. Do not include tests,\n# benchmarks, etc.\npackages = [\n    package\n    for package in setuptools.PEP420PackageFinder.find()\n    if package.startswith(\"google\")\n]\n\n# Determine which namespaces are needed.\nnamespaces = [\"google\"]\nif \"google.cloud\" in packages:\n    namespaces.append(\"google.cloud\")\n\n\nsetuptools.setup(\n    name=name,\n    version=version,\n    description=description,\n    long_description=readme,\n    author=\"Google LLC\",\n    author_email=\"googleapis-packages@google.com\",\n    license=\"Apache 2.0\",\n    url=\"https://github.com/googleapis/python-bigquery\",\n    classifiers=[\n        release_status,\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Operating System :: OS Independent\",\n        \"Topic :: Internet\",\n    ],\n    platforms=\"Posix; MacOS X; Windows\",\n    packages=packages,\n    namespace_packages=namespaces,\n    install_requires=dependencies,\n    extras_require=extras,\n    python_requires=\">=3.6\",\n    include_package_data=True,\n    zip_safe=False,\n)\n", "path": "setup.py"}], "after_files": [{"content": "# Copyright 2018 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport io\nimport os\n\nimport setuptools\n\n\n# Package metadata.\n\nname = \"google-cloud-bigquery\"\ndescription = \"Google BigQuery API client library\"\n\n# Should be one of:\n# 'Development Status :: 3 - Alpha'\n# 'Development Status :: 4 - Beta'\n# 'Development Status :: 5 - Production/Stable'\nrelease_status = \"Development Status :: 5 - Production/Stable\"\ndependencies = [\n    \"google-api-core[grpc] >= 1.22.2, < 2.0.0dev\",\n    \"proto-plus >= 1.10.0\",\n    \"google-cloud-core >= 1.4.1, < 2.0dev\",\n    \"google-resumable-media >= 0.6.0, < 2.0dev\",\n    \"six >=1.13.0,< 2.0.0dev\",\n    \"protobuf >= 3.12.0\",\n]\nextras = {\n    \"bqstorage\": [\n        \"google-cloud-bigquery-storage >= 2.0.0, <3.0.0dev\",\n        # Due to an issue in pip's dependency resolver, the `grpc` extra is not\n        # installed, even though `google-cloud-bigquery-storage` specifies it\n        # as `google-api-core[grpc]`. We thus need to explicitly specify it here.\n        # See: https://github.com/googleapis/python-bigquery/issues/83 The\n        # grpc.Channel.close() method isn't added until 1.32.0.\n        # https://github.com/grpc/grpc/pull/15254\n        \"grpcio >= 1.32.0, < 2.0dev\",\n        \"pyarrow >= 1.0.0, < 2.0dev\",\n    ],\n    \"pandas\": [\n        \"pandas>=0.23.0\",\n        # pyarrow 1.0.0 is required for the use of timestamp_as_object keyword.\n        \"pyarrow >= 1.0.0, < 2.0dev\",\n    ],\n    \"tqdm\": [\"tqdm >= 4.7.4, <5.0.0dev\"],\n    \"opentelemetry\": [\n        \"opentelemetry-api==0.9b0\",\n        \"opentelemetry-sdk==0.9b0\",\n        \"opentelemetry-instrumentation==0.9b0 \",\n    ],\n}\n\nall_extras = []\n\nfor extra in extras:\n    all_extras.extend(extras[extra])\n\nextras[\"all\"] = all_extras\n\n# Setup boilerplate below this line.\n\npackage_root = os.path.abspath(os.path.dirname(__file__))\n\nreadme_filename = os.path.join(package_root, \"README.rst\")\nwith io.open(readme_filename, encoding=\"utf-8\") as readme_file:\n    readme = readme_file.read()\n\nversion = {}\nwith open(os.path.join(package_root, \"google/cloud/bigquery/version.py\")) as fp:\n    exec(fp.read(), version)\nversion = version[\"__version__\"]\n\n# Only include packages under the 'google' namespace. Do not include tests,\n# benchmarks, etc.\npackages = [\n    package\n    for package in setuptools.PEP420PackageFinder.find()\n    if package.startswith(\"google\")\n]\n\n# Determine which namespaces are needed.\nnamespaces = [\"google\"]\nif \"google.cloud\" in packages:\n    namespaces.append(\"google.cloud\")\n\n\nsetuptools.setup(\n    name=name,\n    version=version,\n    description=description,\n    long_description=readme,\n    author=\"Google LLC\",\n    author_email=\"googleapis-packages@google.com\",\n    license=\"Apache 2.0\",\n    url=\"https://github.com/googleapis/python-bigquery\",\n    classifiers=[\n        release_status,\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Operating System :: OS Independent\",\n        \"Topic :: Internet\",\n    ],\n    platforms=\"Posix; MacOS X; Windows\",\n    packages=packages,\n    namespace_packages=namespaces,\n    install_requires=dependencies,\n    extras_require=extras,\n    python_requires=\">=3.6\",\n    include_package_data=True,\n    zip_safe=False,\n)\n", "path": "setup.py"}]}