We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Silent dependency on urllib3 in _aiohttp_requests
#### Environment details

  - OS: OSX, Linux
  - Python version: 3.7
  - pip version:
  - `google-auth` version: 1.24.0

#### Steps to reproduce

  1. Setup a clean virtualenv
  2. pip install google-auth==1.24.0 aiohttp==3.5.4 (version I happen to be using)
  3. Run "from google.auth.transport import _aiohttp_requests" in a python3 session

You should get a ModuleNotFoundError for "urllib3"

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `noxfile.py`
Content:
```
1 # Copyright 2019 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 shutil
16 import os
17 import nox
18 
19 TEST_DEPENDENCIES = [
20     "flask",
21     "freezegun",
22     "mock",
23     "oauth2client",
24     "pyopenssl",
25     "pytest",
26     "pytest-cov",
27     "pytest-localserver",
28     "pyu2f",
29     "requests",
30     "urllib3",
31     "cryptography",
32     "responses",
33     "grpcio",
34 ]
35 
36 ASYNC_DEPENDENCIES = [
37     "pytest-asyncio",
38     "aioresponses",
39     "asynctest",
40     "aiohttp!=3.7.4.post0",
41 ]
42 
43 BLACK_VERSION = "black==19.3b0"
44 BLACK_PATHS = [
45     "google",
46     "tests",
47     "tests_async",
48     "noxfile.py",
49     "setup.py",
50     "docs/conf.py",
51 ]
52 
53 
54 @nox.session(python="3.7")
55 def lint(session):
56     session.install("flake8", "flake8-import-order", "docutils", BLACK_VERSION)
57     session.install(".")
58     session.run("black", "--check", *BLACK_PATHS)
59     session.run(
60         "flake8",
61         "--import-order-style=google",
62         "--application-import-names=google,tests,system_tests",
63         "google",
64         "tests",
65         "tests_async",
66     )
67     session.run(
68         "python", "setup.py", "check", "--metadata", "--restructuredtext", "--strict"
69     )
70 
71 
72 @nox.session(python="3.6")
73 def blacken(session):
74     """Run black.
75     Format code to uniform standard.
76     This currently uses Python 3.6 due to the automated Kokoro run of synthtool.
77     That run uses an image that doesn't have 3.6 installed. Before updating this
78     check the state of the `gcp_ubuntu_config` we use for that Kokoro run.
79     """
80     session.install(BLACK_VERSION)
81     session.run("black", *BLACK_PATHS)
82 
83 
84 @nox.session(python=["3.6", "3.7", "3.8", "3.9"])
85 def unit(session):
86     session.install(*TEST_DEPENDENCIES)
87     session.install(*(ASYNC_DEPENDENCIES))
88     session.install(".")
89     session.run(
90         "pytest",
91         f"--junitxml=unit_{session.python}_sponge_log.xml",
92         "--cov=google.auth",
93         "--cov=google.oauth2",
94         "--cov=tests",
95         "tests",
96         "tests_async",
97     )
98 
99 
100 @nox.session(python=["2.7"])
101 def unit_prev_versions(session):
102     session.install(".")
103     session.install(*TEST_DEPENDENCIES)
104     session.run(
105         "pytest",
106         f"--junitxml=unit_{session.python}_sponge_log.xml",
107         "--cov=google.auth",
108         "--cov=google.oauth2",
109         "--cov=tests",
110         "tests",
111     )
112 
113 
114 @nox.session(python="3.7")
115 def cover(session):
116     session.install(*TEST_DEPENDENCIES)
117     session.install(*(ASYNC_DEPENDENCIES))
118     session.install(".")
119     session.run(
120         "pytest",
121         "--cov=google.auth",
122         "--cov=google.oauth2",
123         "--cov=tests",
124         "--cov=tests_async",
125         "--cov-report=",
126         "tests",
127         "tests_async",
128     )
129     session.run("coverage", "report", "--show-missing", "--fail-under=100")
130 
131 
132 @nox.session(python="3.7")
133 def docgen(session):
134     session.env["SPHINX_APIDOC_OPTIONS"] = "members,inherited-members,show-inheritance"
135     session.install(*TEST_DEPENDENCIES)
136     session.install("sphinx")
137     session.install(".")
138     session.run("rm", "-r", "docs/reference")
139     session.run(
140         "sphinx-apidoc",
141         "--output-dir",
142         "docs/reference",
143         "--separate",
144         "--module-first",
145         "google",
146     )
147 
148 
149 @nox.session(python="3.7")
150 def docs(session):
151     """Build the docs for this library."""
152 
153     session.install("-e", ".[aiohttp]")
154     session.install(
155         "sphinx<3.0.0", "alabaster", "recommonmark", "sphinx-docstring-typing"
156     )
157 
158     shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
159     session.run(
160         "sphinx-build",
161         "-T",  # show full traceback on exception
162         "-W",  # warnings as errors
163         "-N",  # no colors
164         "-b",
165         "html",
166         "-d",
167         os.path.join("docs", "_build", "doctrees", ""),
168         os.path.join("docs", ""),
169         os.path.join("docs", "_build", "html", ""),
170     )
171 
172 
173 @nox.session(python="pypy")
174 def pypy(session):
175     session.install(*TEST_DEPENDENCIES)
176     session.install(*ASYNC_DEPENDENCIES)
177     session.install(".")
178     session.run(
179         "pytest",
180         f"--junitxml=unit_{session.python}_sponge_log.xml",
181         "--cov=google.auth",
182         "--cov=google.oauth2",
183         "--cov=tests",
184         "tests",
185         "tests_async",
186     )
187
```

Path: `setup.py`
Content:
```
1 # Copyright 2014 Google Inc.
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 from setuptools import find_packages
19 from setuptools import setup
20 
21 
22 DEPENDENCIES = (
23     "cachetools>=2.0.0,<5.0",
24     "pyasn1-modules>=0.2.1",
25     # rsa==4.5 is the last version to support 2.7
26     # https://github.com/sybrenstuvel/python-rsa/issues/152#issuecomment-643470233
27     'rsa<4.6; python_version < "3.6"',
28     'rsa>=3.1.4,<5; python_version >= "3.6"',
29     "setuptools>=40.3.0",
30     "six>=1.9.0",
31 )
32 
33 extras = {
34     "aiohttp": "aiohttp >= 3.6.2, < 4.0.0dev; python_version>='3.6'",
35     "pyopenssl": "pyopenssl>=20.0.0",
36     "reauth": "pyu2f>=0.1.5",
37 }
38 
39 with io.open("README.rst", "r") as fh:
40     long_description = fh.read()
41 
42 package_root = os.path.abspath(os.path.dirname(__file__))
43 
44 version = {}
45 with open(os.path.join(package_root, "google/auth/version.py")) as fp:
46     exec(fp.read(), version)
47 version = version["__version__"]
48 
49 setup(
50     name="google-auth",
51     version=version,
52     author="Google Cloud Platform",
53     author_email="googleapis-packages@google.com",
54     description="Google Authentication Library",
55     long_description=long_description,
56     url="https://github.com/googleapis/google-auth-library-python",
57     packages=find_packages(exclude=("tests*", "system_tests*")),
58     namespace_packages=("google",),
59     install_requires=DEPENDENCIES,
60     extras_require=extras,
61     python_requires=">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*",
62     license="Apache 2.0",
63     keywords="google auth oauth client",
64     classifiers=[
65         "Programming Language :: Python :: 2",
66         "Programming Language :: Python :: 2.7",
67         "Programming Language :: Python :: 3",
68         "Programming Language :: Python :: 3.6",
69         "Programming Language :: Python :: 3.7",
70         "Programming Language :: Python :: 3.8",
71         "Programming Language :: Python :: 3.9",
72         "Development Status :: 5 - Production/Stable",
73         "Intended Audience :: Developers",
74         "License :: OSI Approved :: Apache Software License",
75         "Operating System :: POSIX",
76         "Operating System :: Microsoft :: Windows",
77         "Operating System :: MacOS :: MacOS X",
78         "Operating System :: OS Independent",
79         "Topic :: Internet :: WWW/HTTP",
80     ],
81 )
82
```
--- 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/noxfile.py b/noxfile.py
--- a/noxfile.py
+++ b/noxfile.py
@@ -69,13 +69,14 @@
     )
 
 
-@nox.session(python="3.6")
+@nox.session(python="3.8")
 def blacken(session):
     """Run black.
     Format code to uniform standard.
-    This currently uses Python 3.6 due to the automated Kokoro run of synthtool.
-    That run uses an image that doesn't have 3.6 installed. Before updating this
-    check the state of the `gcp_ubuntu_config` we use for that Kokoro run.
+    The Python version should be consistent with what is
+    supplied in the Python Owlbot postprocessor.
+
+    https://github.com/googleapis/synthtool/blob/master/docker/owlbot/python/Dockerfile
     """
     session.install(BLACK_VERSION)
     session.run("black", *BLACK_PATHS)
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -31,7 +31,11 @@
 )
 
 extras = {
-    "aiohttp": "aiohttp >= 3.6.2, < 4.0.0dev; python_version>='3.6'",
+    "aiohttp": [
+        "aiohttp >= 3.6.2, < 4.0.0dev; python_version>='3.6'",
+        "requests >= 2.18.0, < 3.0.0dev",
+        "urllib3 >= 1.0.0, <2.0.0dev",
+    ],
     "pyopenssl": "pyopenssl>=20.0.0",
     "reauth": "pyu2f>=0.1.5",
 }

{"golden_diff": "diff --git a/noxfile.py b/noxfile.py\n--- a/noxfile.py\n+++ b/noxfile.py\n@@ -69,13 +69,14 @@\n     )\n \n \n-@nox.session(python=\"3.6\")\n+@nox.session(python=\"3.8\")\n def blacken(session):\n     \"\"\"Run black.\n     Format code to uniform standard.\n-    This currently uses Python 3.6 due to the automated Kokoro run of synthtool.\n-    That run uses an image that doesn't have 3.6 installed. Before updating this\n-    check the state of the `gcp_ubuntu_config` we use for that Kokoro run.\n+    The Python version should be consistent with what is\n+    supplied in the Python Owlbot postprocessor.\n+\n+    https://github.com/googleapis/synthtool/blob/master/docker/owlbot/python/Dockerfile\n     \"\"\"\n     session.install(BLACK_VERSION)\n     session.run(\"black\", *BLACK_PATHS)\ndiff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -31,7 +31,11 @@\n )\n \n extras = {\n-    \"aiohttp\": \"aiohttp >= 3.6.2, < 4.0.0dev; python_version>='3.6'\",\n+    \"aiohttp\": [\n+        \"aiohttp >= 3.6.2, < 4.0.0dev; python_version>='3.6'\",\n+        \"requests >= 2.18.0, < 3.0.0dev\",\n+        \"urllib3 >= 1.0.0, <2.0.0dev\",\n+    ],\n     \"pyopenssl\": \"pyopenssl>=20.0.0\",\n     \"reauth\": \"pyu2f>=0.1.5\",\n }\n", "issue": "Silent dependency on urllib3 in _aiohttp_requests\n#### Environment details\r\n\r\n  - OS: OSX, Linux\r\n  - Python version: 3.7\r\n  - pip version:\r\n  - `google-auth` version: 1.24.0\r\n\r\n#### Steps to reproduce\r\n\r\n  1. Setup a clean virtualenv\r\n  2. pip install google-auth==1.24.0 aiohttp==3.5.4 (version I happen to be using)\r\n  3. Run \"from google.auth.transport import _aiohttp_requests\" in a python3 session\r\n\r\nYou should get a ModuleNotFoundError for \"urllib3\"\n", "before_files": [{"content": "# Copyright 2019 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 shutil\nimport os\nimport nox\n\nTEST_DEPENDENCIES = [\n    \"flask\",\n    \"freezegun\",\n    \"mock\",\n    \"oauth2client\",\n    \"pyopenssl\",\n    \"pytest\",\n    \"pytest-cov\",\n    \"pytest-localserver\",\n    \"pyu2f\",\n    \"requests\",\n    \"urllib3\",\n    \"cryptography\",\n    \"responses\",\n    \"grpcio\",\n]\n\nASYNC_DEPENDENCIES = [\n    \"pytest-asyncio\",\n    \"aioresponses\",\n    \"asynctest\",\n    \"aiohttp!=3.7.4.post0\",\n]\n\nBLACK_VERSION = \"black==19.3b0\"\nBLACK_PATHS = [\n    \"google\",\n    \"tests\",\n    \"tests_async\",\n    \"noxfile.py\",\n    \"setup.py\",\n    \"docs/conf.py\",\n]\n\n\n@nox.session(python=\"3.7\")\ndef lint(session):\n    session.install(\"flake8\", \"flake8-import-order\", \"docutils\", BLACK_VERSION)\n    session.install(\".\")\n    session.run(\"black\", \"--check\", *BLACK_PATHS)\n    session.run(\n        \"flake8\",\n        \"--import-order-style=google\",\n        \"--application-import-names=google,tests,system_tests\",\n        \"google\",\n        \"tests\",\n        \"tests_async\",\n    )\n    session.run(\n        \"python\", \"setup.py\", \"check\", \"--metadata\", \"--restructuredtext\", \"--strict\"\n    )\n\n\n@nox.session(python=\"3.6\")\ndef blacken(session):\n    \"\"\"Run black.\n    Format code to uniform standard.\n    This currently uses Python 3.6 due to the automated Kokoro run of synthtool.\n    That run uses an image that doesn't have 3.6 installed. Before updating this\n    check the state of the `gcp_ubuntu_config` we use for that Kokoro run.\n    \"\"\"\n    session.install(BLACK_VERSION)\n    session.run(\"black\", *BLACK_PATHS)\n\n\n@nox.session(python=[\"3.6\", \"3.7\", \"3.8\", \"3.9\"])\ndef unit(session):\n    session.install(*TEST_DEPENDENCIES)\n    session.install(*(ASYNC_DEPENDENCIES))\n    session.install(\".\")\n    session.run(\n        \"pytest\",\n        f\"--junitxml=unit_{session.python}_sponge_log.xml\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"tests\",\n        \"tests_async\",\n    )\n\n\n@nox.session(python=[\"2.7\"])\ndef unit_prev_versions(session):\n    session.install(\".\")\n    session.install(*TEST_DEPENDENCIES)\n    session.run(\n        \"pytest\",\n        f\"--junitxml=unit_{session.python}_sponge_log.xml\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"tests\",\n    )\n\n\n@nox.session(python=\"3.7\")\ndef cover(session):\n    session.install(*TEST_DEPENDENCIES)\n    session.install(*(ASYNC_DEPENDENCIES))\n    session.install(\".\")\n    session.run(\n        \"pytest\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"--cov=tests_async\",\n        \"--cov-report=\",\n        \"tests\",\n        \"tests_async\",\n    )\n    session.run(\"coverage\", \"report\", \"--show-missing\", \"--fail-under=100\")\n\n\n@nox.session(python=\"3.7\")\ndef docgen(session):\n    session.env[\"SPHINX_APIDOC_OPTIONS\"] = \"members,inherited-members,show-inheritance\"\n    session.install(*TEST_DEPENDENCIES)\n    session.install(\"sphinx\")\n    session.install(\".\")\n    session.run(\"rm\", \"-r\", \"docs/reference\")\n    session.run(\n        \"sphinx-apidoc\",\n        \"--output-dir\",\n        \"docs/reference\",\n        \"--separate\",\n        \"--module-first\",\n        \"google\",\n    )\n\n\n@nox.session(python=\"3.7\")\ndef docs(session):\n    \"\"\"Build the docs for this library.\"\"\"\n\n    session.install(\"-e\", \".[aiohttp]\")\n    session.install(\n        \"sphinx<3.0.0\", \"alabaster\", \"recommonmark\", \"sphinx-docstring-typing\"\n    )\n\n    shutil.rmtree(os.path.join(\"docs\", \"_build\"), ignore_errors=True)\n    session.run(\n        \"sphinx-build\",\n        \"-T\",  # show full traceback on exception\n        \"-W\",  # warnings as errors\n        \"-N\",  # no colors\n        \"-b\",\n        \"html\",\n        \"-d\",\n        os.path.join(\"docs\", \"_build\", \"doctrees\", \"\"),\n        os.path.join(\"docs\", \"\"),\n        os.path.join(\"docs\", \"_build\", \"html\", \"\"),\n    )\n\n\n@nox.session(python=\"pypy\")\ndef pypy(session):\n    session.install(*TEST_DEPENDENCIES)\n    session.install(*ASYNC_DEPENDENCIES)\n    session.install(\".\")\n    session.run(\n        \"pytest\",\n        f\"--junitxml=unit_{session.python}_sponge_log.xml\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"tests\",\n        \"tests_async\",\n    )\n", "path": "noxfile.py"}, {"content": "# Copyright 2014 Google Inc.\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\nfrom setuptools import find_packages\nfrom setuptools import setup\n\n\nDEPENDENCIES = (\n    \"cachetools>=2.0.0,<5.0\",\n    \"pyasn1-modules>=0.2.1\",\n    # rsa==4.5 is the last version to support 2.7\n    # https://github.com/sybrenstuvel/python-rsa/issues/152#issuecomment-643470233\n    'rsa<4.6; python_version < \"3.6\"',\n    'rsa>=3.1.4,<5; python_version >= \"3.6\"',\n    \"setuptools>=40.3.0\",\n    \"six>=1.9.0\",\n)\n\nextras = {\n    \"aiohttp\": \"aiohttp >= 3.6.2, < 4.0.0dev; python_version>='3.6'\",\n    \"pyopenssl\": \"pyopenssl>=20.0.0\",\n    \"reauth\": \"pyu2f>=0.1.5\",\n}\n\nwith io.open(\"README.rst\", \"r\") as fh:\n    long_description = fh.read()\n\npackage_root = os.path.abspath(os.path.dirname(__file__))\n\nversion = {}\nwith open(os.path.join(package_root, \"google/auth/version.py\")) as fp:\n    exec(fp.read(), version)\nversion = version[\"__version__\"]\n\nsetup(\n    name=\"google-auth\",\n    version=version,\n    author=\"Google Cloud Platform\",\n    author_email=\"googleapis-packages@google.com\",\n    description=\"Google Authentication Library\",\n    long_description=long_description,\n    url=\"https://github.com/googleapis/google-auth-library-python\",\n    packages=find_packages(exclude=(\"tests*\", \"system_tests*\")),\n    namespace_packages=(\"google\",),\n    install_requires=DEPENDENCIES,\n    extras_require=extras,\n    python_requires=\">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*\",\n    license=\"Apache 2.0\",\n    keywords=\"google auth oauth client\",\n    classifiers=[\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Development Status :: 5 - Production/Stable\",\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Operating System :: POSIX\",\n        \"Operating System :: Microsoft :: Windows\",\n        \"Operating System :: MacOS :: MacOS X\",\n        \"Operating System :: OS Independent\",\n        \"Topic :: Internet :: WWW/HTTP\",\n    ],\n)\n", "path": "setup.py"}], "after_files": [{"content": "# Copyright 2019 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 shutil\nimport os\nimport nox\n\nTEST_DEPENDENCIES = [\n    \"flask\",\n    \"freezegun\",\n    \"mock\",\n    \"oauth2client\",\n    \"pyopenssl\",\n    \"pytest\",\n    \"pytest-cov\",\n    \"pytest-localserver\",\n    \"pyu2f\",\n    \"requests\",\n    \"urllib3\",\n    \"cryptography\",\n    \"responses\",\n    \"grpcio\",\n]\n\nASYNC_DEPENDENCIES = [\n    \"pytest-asyncio\",\n    \"aioresponses\",\n    \"asynctest\",\n    \"aiohttp!=3.7.4.post0\",\n]\n\nBLACK_VERSION = \"black==19.3b0\"\nBLACK_PATHS = [\n    \"google\",\n    \"tests\",\n    \"tests_async\",\n    \"noxfile.py\",\n    \"setup.py\",\n    \"docs/conf.py\",\n]\n\n\n@nox.session(python=\"3.7\")\ndef lint(session):\n    session.install(\"flake8\", \"flake8-import-order\", \"docutils\", BLACK_VERSION)\n    session.install(\".\")\n    session.run(\"black\", \"--check\", *BLACK_PATHS)\n    session.run(\n        \"flake8\",\n        \"--import-order-style=google\",\n        \"--application-import-names=google,tests,system_tests\",\n        \"google\",\n        \"tests\",\n        \"tests_async\",\n    )\n    session.run(\n        \"python\", \"setup.py\", \"check\", \"--metadata\", \"--restructuredtext\", \"--strict\"\n    )\n\n\n@nox.session(python=\"3.8\")\ndef blacken(session):\n    \"\"\"Run black.\n    Format code to uniform standard.\n    The Python version should be consistent with what is\n    supplied in the Python Owlbot postprocessor.\n\n    https://github.com/googleapis/synthtool/blob/master/docker/owlbot/python/Dockerfile\n    \"\"\"\n    session.install(BLACK_VERSION)\n    session.run(\"black\", *BLACK_PATHS)\n\n\n@nox.session(python=[\"3.6\", \"3.7\", \"3.8\", \"3.9\"])\ndef unit(session):\n    session.install(*TEST_DEPENDENCIES)\n    session.install(*(ASYNC_DEPENDENCIES))\n    session.install(\".\")\n    session.run(\n        \"pytest\",\n        f\"--junitxml=unit_{session.python}_sponge_log.xml\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"tests\",\n        \"tests_async\",\n    )\n\n\n@nox.session(python=[\"2.7\"])\ndef unit_prev_versions(session):\n    session.install(\".\")\n    session.install(*TEST_DEPENDENCIES)\n    session.run(\n        \"pytest\",\n        f\"--junitxml=unit_{session.python}_sponge_log.xml\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"tests\",\n    )\n\n\n@nox.session(python=\"3.7\")\ndef cover(session):\n    session.install(*TEST_DEPENDENCIES)\n    session.install(*(ASYNC_DEPENDENCIES))\n    session.install(\".\")\n    session.run(\n        \"pytest\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"--cov=tests_async\",\n        \"--cov-report=\",\n        \"tests\",\n        \"tests_async\",\n    )\n    session.run(\"coverage\", \"report\", \"--show-missing\", \"--fail-under=100\")\n\n\n@nox.session(python=\"3.7\")\ndef docgen(session):\n    session.env[\"SPHINX_APIDOC_OPTIONS\"] = \"members,inherited-members,show-inheritance\"\n    session.install(*TEST_DEPENDENCIES)\n    session.install(\"sphinx\")\n    session.install(\".\")\n    session.run(\"rm\", \"-r\", \"docs/reference\")\n    session.run(\n        \"sphinx-apidoc\",\n        \"--output-dir\",\n        \"docs/reference\",\n        \"--separate\",\n        \"--module-first\",\n        \"google\",\n    )\n\n\n@nox.session(python=\"3.7\")\ndef docs(session):\n    \"\"\"Build the docs for this library.\"\"\"\n\n    session.install(\"-e\", \".[aiohttp]\")\n    session.install(\n        \"sphinx<3.0.0\", \"alabaster\", \"recommonmark\", \"sphinx-docstring-typing\"\n    )\n\n    shutil.rmtree(os.path.join(\"docs\", \"_build\"), ignore_errors=True)\n    session.run(\n        \"sphinx-build\",\n        \"-T\",  # show full traceback on exception\n        \"-W\",  # warnings as errors\n        \"-N\",  # no colors\n        \"-b\",\n        \"html\",\n        \"-d\",\n        os.path.join(\"docs\", \"_build\", \"doctrees\", \"\"),\n        os.path.join(\"docs\", \"\"),\n        os.path.join(\"docs\", \"_build\", \"html\", \"\"),\n    )\n\n\n@nox.session(python=\"pypy\")\ndef pypy(session):\n    session.install(*TEST_DEPENDENCIES)\n    session.install(*ASYNC_DEPENDENCIES)\n    session.install(\".\")\n    session.run(\n        \"pytest\",\n        f\"--junitxml=unit_{session.python}_sponge_log.xml\",\n        \"--cov=google.auth\",\n        \"--cov=google.oauth2\",\n        \"--cov=tests\",\n        \"tests\",\n        \"tests_async\",\n    )\n", "path": "noxfile.py"}, {"content": "# Copyright 2014 Google Inc.\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\nfrom setuptools import find_packages\nfrom setuptools import setup\n\n\nDEPENDENCIES = (\n    \"cachetools>=2.0.0,<5.0\",\n    \"pyasn1-modules>=0.2.1\",\n    # rsa==4.5 is the last version to support 2.7\n    # https://github.com/sybrenstuvel/python-rsa/issues/152#issuecomment-643470233\n    'rsa<4.6; python_version < \"3.6\"',\n    'rsa>=3.1.4,<5; python_version >= \"3.6\"',\n    \"setuptools>=40.3.0\",\n    \"six>=1.9.0\",\n)\n\nextras = {\n    \"aiohttp\": [\n        \"aiohttp >= 3.6.2, < 4.0.0dev; python_version>='3.6'\",\n        \"requests >= 2.18.0, < 3.0.0dev\",\n        \"urllib3 >= 1.0.0, <2.0.0dev\",\n    ],\n    \"pyopenssl\": \"pyopenssl>=20.0.0\",\n    \"reauth\": \"pyu2f>=0.1.5\",\n}\n\nwith io.open(\"README.rst\", \"r\") as fh:\n    long_description = fh.read()\n\npackage_root = os.path.abspath(os.path.dirname(__file__))\n\nversion = {}\nwith open(os.path.join(package_root, \"google/auth/version.py\")) as fp:\n    exec(fp.read(), version)\nversion = version[\"__version__\"]\n\nsetup(\n    name=\"google-auth\",\n    version=version,\n    author=\"Google Cloud Platform\",\n    author_email=\"googleapis-packages@google.com\",\n    description=\"Google Authentication Library\",\n    long_description=long_description,\n    url=\"https://github.com/googleapis/google-auth-library-python\",\n    packages=find_packages(exclude=(\"tests*\", \"system_tests*\")),\n    namespace_packages=(\"google\",),\n    install_requires=DEPENDENCIES,\n    extras_require=extras,\n    python_requires=\">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*\",\n    license=\"Apache 2.0\",\n    keywords=\"google auth oauth client\",\n    classifiers=[\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Development Status :: 5 - Production/Stable\",\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Operating System :: POSIX\",\n        \"Operating System :: Microsoft :: Windows\",\n        \"Operating System :: MacOS :: MacOS X\",\n        \"Operating System :: OS Independent\",\n        \"Topic :: Internet :: WWW/HTTP\",\n    ],\n)\n", "path": "setup.py"}]}